使用 Webpack 排除 node_modules
原文由 Alex O'Callaghan 于 发布,订阅该博客
使用 Webpack 时,node_modules 中的依赖默认会被包含在构建产物中。在为 Web 应用构建 bundle 时,这一默认行为很有用,但在某些场景下,例如使用 Webpack 构建库或 Node 应用时,你可能希望排除这些依赖,让它们在运行时从 node_modules 中加载。
Webpack 的 externals 选项允许你指定需要从构建中排除的依赖。如果想排除所有依赖,webpack-node-externals 提供了一种简单的方式来创建一个 externals 函数,该函数会排除项目 node_modules 目录中的所有依赖。
// webpack.config.js
const nodeExternals = require('webpack-node-externals');
module.exports = {
...
// ignore all modules in node_modules
externals: [nodeExternals()],
...
};我们的用例
在 Mintel,我们维护着一系列构成设计系统的前端库。我们使用 Storybook 进行本地开发,曾遇到过几次情况:由于库与 Storybook 的构建流程不一致,工程师在开发改动时遗漏了一些问题。
为了更早地发现这些问题,我们的平台团队决定统一库与 Storybook 的构建流程,使用同一份 Webpack 配置来构建 Storybook 和待发布的库。
然而,这一改动导致使用这些库的应用包体积变大。这些库会在构建时打包所有依赖,在存在共享依赖时会造成重复。通过从 Webpack 构建中排除依赖,我们得以将依赖解析重新上提到上层的消费项目,让包管理器来完成它本应做的工作。
随机一篇博客
评论
登录后参与讨论