首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Webpack不会从node_modules导入捆绑包(仅限js)

Webpack是一个现代化的静态模块打包工具,它主要用于将各种资源(如JavaScript、CSS、图片等)打包成一个或多个静态资源文件,以便在浏览器中加载。Webpack的主要特点包括模块化支持、代码分割、懒加载、自动化构建等。

在Webpack中,默认情况下,它会从入口文件开始递归解析依赖关系,并将所有依赖的模块打包到最终的输出文件中。然而,Webpack并不会自动将从node_modules导入的捆绑包(仅限JavaScript)打包到输出文件中。

这是因为Webpack默认将node_modules目录视为外部依赖,即假设这些模块已经在运行环境中可用,不需要再进行打包。这种做法可以减小打包文件的体积,并提高打包速度。

如果确实需要将从node_modules导入的捆绑包打包到输出文件中,可以通过配置Webpack的externals选项来实现。externals选项允许我们将某些模块标记为外部依赖,告诉Webpack在打包过程中不将其包含进来,而是在运行时从运行环境中获取。

例如,假设我们想将lodash库作为外部依赖,可以在Webpack配置文件中添加如下配置:

代码语言:txt
复制
module.exports = {
  // ...
  externals: {
    lodash: '_'
  }
};

上述配置告诉Webpack将lodash模块标记为外部依赖,并将其在运行时从全局变量_中获取。这样,在我们的代码中通过importrequire导入lodash时,Webpack不会将其打包到输出文件中,而是直接使用全局变量_

需要注意的是,对于从node_modules导入的非JavaScript资源(如CSS、图片等),Webpack会根据配置的加载器(Loader)来处理它们,并将其打包到输出文件中。

推荐的腾讯云相关产品:腾讯云云开发(Tencent Cloud CloudBase),它是一款集成了云函数、云数据库、云存储等多种云服务的全托管后端云开发平台。通过腾讯云云开发,开发者可以快速搭建和部署各类应用,无需关注底层基础设施的搭建和运维,极大地提高了开发效率。

产品介绍链接地址:腾讯云云开发

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

发布、传输和安装现代 JavaScript 以实现更快的应用程序

webpack webpack 5 开始,现在可以配置 webpack 在生成捆绑和模块的代码时将使用的语法。这不会转换您的代码或依赖项,只影响由 webpack 生成的“粘附”代码。...'], }; 还可以将 webpack 配置为生成优化的捆绑,当以现代 ES 模块环境为目标时,这些捆绑会省略不必要的包装函数。...Optimize Plugin Optimize Plugin 是一个 webpack 插件,它可以将最终的捆绑代码现代 JavaScript 转换为传统 JavaScript,而不是单独的源文件。...最后,生成的传统捆绑所需的 polyfill 将提取到一个专用脚本中,这样在较新的浏览器中不会复制或不必要地加载它们。...这不会为模块/无模块设置生成现代和传统捆绑,但可以安装和使用包含现代 JavaScript 的 npm 软件,而不会破坏旧版浏览器体验。

1K20

向现代JavaScript转型——发布、传输和安装现代 JavaScript以实现更快的应用程序

webpack webpack 5 开始,现在可以配置 webpack 在生成捆绑和模块的代码时将使用的语法。这不会转换您的代码或依赖项,只影响由 webpack 生成的“粘附”代码。...'], }; 还可以将 webpack 配置为生成优化的捆绑,当以现代 ES 模块环境为目标时,这些捆绑会省略不必要的包装函数。...Optimize Plugin Optimize Plugin 是一个 webpack 插件,它可以将最终的捆绑代码现代 JavaScript 转换为传统 JavaScript,而不是单独的源文件。...最后,生成的传统捆绑所需的 polyfill 将提取到一个专用脚本中,这样在较新的浏览器中不会复制或不必要地加载它们。...这不会为模块/无模块设置生成现代和传统捆绑,但可以安装和使用包含现代 JavaScript 的 npm 软件,而不会破坏旧版浏览器体验。

2.7K185

浅入webpack4 高效简单的配置

前言 在vue-cli3中已经将webpack等详细配置(config)去除,我们配置webpack只能在vue.config.js里进行配置,这里我个人总结了一套webpack的优化方案模板并且附有我个人的讲解...Node.js 之上的 Webpack 是单线程模型的,所以Webpack 需要处理的事情需要一件一件的做,不能多件事一起做。...2.拆分每个 npm 当我们运行项目并且打包的时候,会发现chunk-vendors.js这个文件非常大,那是因为webpack将所有的依赖全都压缩到了这个文件里面,这时我们可以将其拆分,将所有的依赖都打包成单独的...module.exports = { optimization: { /* runtimeChunk 将包含chunks 映射关系的 list单独 app.js里提取出来,因为每一个 chunk 的...analyzerPort: 8888, // 路径捆绑,将在static模式下生成的报告文件。 // 相对于捆绑输出目录。

95520

Vue.js应用性能优化二

我们需要动态导入它,这将创建一个包含此路由的新bundle作为入口点: ? 知道了这一点,让我们看看我们的捆绑和路由如何与动态导入一样: ?...通过此设置,webpack将创建三个: app.js - 我们的主要包含应用程序入口点(main.js)和每个路由所需的库/组件 home.js - home页面bundle,只有在输入/路径时才会下载...Vendor bundle 反模式 vendor(第三方类库)通常用于包含node_modules中所有模块的单独js文件的上下文中。...这是webpack splitChunksPlugin可以帮助我们的地方。只需将这几行添加到webpack配置中,我们就会将公共依赖项分组到一个单独的中,以便共享它们。...再说的清楚一些,几个路由页面共享的依赖,会单独抽取出来打包,而其他页面不会下载这个共享。整个应用有一个全局共享的vendor bundle。 ?

2K30

你可能不知道的9条Webpack优化策略

引言 webpack的打包优化一直是个老生常谈的话题,常规的无非就分块、拆、压缩等。...analyzerPort: 8866, // 路径捆绑,将在`static`模式下生成的报告文件。 // 相对于捆绑输出目录。...那么第三方库在第一次打包的时候只打包一次,以后只要我们不升级第三方的时候,那么webpack不会对这些库去打包,这样的可以快速的提高打包的速度。其实也就是预编译资源模块。...配置 hard-source-webpack-plugin后,首次构建时间并不会有太大的变化,但是第二次开始,构建时间大约可以减少 80%左右。...resolve.modules:告诉 webpack 解析模块时应该搜索的目录 resolve.mainFields:当 npm 导入模块时(例如,import * as React from '

1.6K30

深入了解Webpack

由于Webpack将所有JavaScript源代码捆绑到一个 dist / index.html 文件中链接的 bundle.js 文件中,因此 本质上讲 ,您只需要Web服务器上的这两个文件即可向任何人显示...例如,假设我们的 src / index.js 文件另一个文件导入了一个函数并使用了它: import sum from '....Webpack插件 Webpack具有庞大的插件生态系统。通过使用Webpack开发或生产模式已经隐式使用了其中的几个。但是,还有其他Webpack插件可以改善您的Webpack捆绑体验。...例如,让我们介绍可用于分析和可视化Webpack捆绑的加载项。在 package.json中 ,为您的构建过程引入一个新的npm脚本,但是这次使用Webpack插件: { ......report.html 您将看到具有两种不同可视化效果的构建优化的Webpack捆绑

6.8K75

Webpack 详解

由于Webpack将所有JavaScript源代码捆绑到一个 dist / index.html 文件中链接的 bundle.js 文件中,因此 本质上讲 ,您只需要Web服务器上的这两个文件即可向任何人显示...例如,假设我们的 src / index.js 文件另一个文件导入了一个函数并使用了它: import sum from '....Webpack插件 Webpack具有庞大的插件生态系统。通过使用Webpack开发或生产模式已经隐式使用了其中的几个。但是,还有其他Webpack插件可以改善您的Webpack捆绑体验。...例如,让我们介绍可用于分析和可视化Webpack捆绑的加载项。在 package.json中 ,为您的构建过程引入一个新的npm脚本,但是这次使用Webpack插件: { ......report.html 您将看到具有两种不同可视化效果的构建优化的Webpack捆绑

6.2K20

新一代构建工具的比较

它首先是一个捆绑机。它不会像其他工具那样绕开捆绑。相反,esbuild 通过避免昂贵的转换、利用并行化和使用 Go 语言来极快地编写流程代码。...默认情况下,Snowpack 的构建步骤不会将文件绑定到单个中,而是提供在浏览器中运行的非绑定 esmodule。...Snowpack 没有 node _ modules 文件夹下拉 npm ,而是 Skypack 下拉 npm ,这是一个包含 npm 注册表的 CDN,它经过了预先优化,可以在浏览器中工作。.../node_modules/.bin/snowpack add react-dom 这不会 npm 下载软件,但是它会记录 Snowpack 构建所使用的软件的版本。...此外,如果您想要零配置服务器端呈现元框架,那么在 Vite 服务器端呈现的故事更完整之前,您最好继续使用基于 webpack 的框架,如 Nuxt.js 和 Next.js

2.3K20

深入了解Webpack 5

由于Webpack将所有JavaScript源代码捆绑到一个 dist / index.html 文件中链接的 bundle.js 文件中,因此 本质上讲 ,您只需要Web服务器上的这两个文件即可向任何人显示...例如,假设我们的 src / index.js 文件另一个文件导入了一个函数并使用了它: import sum from '....Webpack插件 Webpack具有庞大的插件生态系统。通过使用Webpack开发或生产模式已经隐式使用了其中的几个。但是,还有其他Webpack插件可以改善您的Webpack捆绑体验。...例如,让我们介绍可用于分析和可视化Webpack捆绑的加载项。在 package.json中 ,为您的构建过程引入一个新的npm脚本,但是这次使用Webpack插件: { ......report.html 您将看到具有两种不同可视化效果的构建优化的Webpack捆绑

3.5K30

Webpack 性能系列三:提升编译性能

定位到对应体文件路径 node_modules/lodash/index.js ; import '....遇到 import 'lodash' 这样的 npm 导入语句时,会尝试先当前项目的 node_modules 搜索资源,如果找不到则按目录层级尝试逐级向上查找 node_modules 目录,如果依然找不到则最终尝试在全局...三、跳过文件编译 有不少 npm 默认提供了提前打包好,不需要做二次编译的资源版本,例如: Vue node_modules/vue/dist/vue.runtime.esm.js 文件 React.../ 属性后,Webpack 在处理 node_modules 中的 js 文件时会直接跳过这个 rule 项,不会为这些文件执行后续的 Loader。...不过,通常情况下前端项目中某些资源并不会频繁更新,例如 node_modules ,此时可以设置 watchOptions.ignored 属性忽略这些文件,例如: // webpack.config.js

1.2K20

轻量迅捷时代,Vite 与Webpack 谁赢谁输

那就让我们一起看看基于 Webpack 的整个工作流。...基于Webpack的工作流 当我们保存文件时,整个JavaScript将由Webpack重建,即使启用了HMR,我们进行修改可能也需要10秒钟才能在浏览器呈现。...依赖模块是node_modules文件夹导入的JavaScript模块。...结论 目前的的使用状况来看,Vite毫无疑问是新一代JavaScript构建工具中最快捷的,但是面对竞争,Webpack也对一些内容进行优化,作为经典老牌工具Webpack用户基数本身就很大, 实力依旧不容小觑...作为开发者,当然也不会独断专言必须使用哪一个,根据不同得场景选不同的工具,期待在未来这些工具可以进一步为开发助力,让开发变得更加方便。

88920

为什么 CommonJS 会使你的程序变大

例如在上面的代码段中,最终的应该只包含 add 函数,因为这是你utils.js导入到在 index.js 中的的唯一符号。...因为 webpack 能够(在构建时)静态地知道我们正在从 utils.js导入及导出了哪些符号,所以只能进行 tree-shaking 。..._0__/* .add */ .IH)(1, 2)); })(); 请注意,最终的中会含有一些 webpack “运行时”:一些注入的代码,负责从打包的模块中导入和导出函数。...如果 node_modules 导入 CommonJS 模块,你的构建工具链将会无法正确的优化它。...另外除了默认的 webpack 行为外,它还会在构建过程中增加额外的成本。 总结 为确保捆绑程序可以成功优化你的程序,请避免依赖 CommonJS 模块,并在整个程序中使用 ES2015 模块语法。

91830

Vue.js中的延迟加载和代码拆分

Webpack bundling 打包机制 本系列中的大多数技巧都将集中在如何使我们的JS更小。要了解它,首先我们需要了解Webpack如何打包所有文件。...当只需要几个部分时,在每个页面加载时下载,解析和执行整个的所有内容都是浪费。 延迟加载允许我们拆分捆绑并仅提供所需的部分,这样用户就不会浪费时间下载和解析不会使用的代码。...如果我们以这样的标准方式导入JavaScript模块: ? 它将作为main.js的节点添加到依赖关系图中并与之捆绑在一起。...我们来看看这里发生的事情: 我们创建了一个返回import()函数的函数,而不是直接导入Cat模块。现在,webpack会将动态导入的模块的内容捆绑到一个单独的文件中。...正如我们所知,通过动态导入模块,我们削减了依赖图中的一部分。此部件中导入的所有内容都将捆绑在一起,因此productGallery将与产品模块位于同一个bundle中。

7.7K10
领券