【发布时间】:2019-11-28 19:34:46
【问题描述】:
我经常想为浏览器捆绑一个 Node 包,但我非常厌倦在每个项目目录中保留 Webpack 配置和所有依赖项。当每个项目都需要一组相当少的加载器时,它会造成巨大的膨胀:主要是 Babel、CSS/SASS、*SV 和 HTML|EJS。
所以我尝试编写一个名为'bundle-module' 的模块,该模块可以在项目中全局安装和调用,以在本地dist 子目录中生成一个版本,并在必要时创建该版本。当您传递所需的文件名时,我让模块成功生成了一个配置文件,其中包含输入和输出的绝对路径,如下所示:
npm install -g wilson428/bundle-module
# cd /path/to/myproj
# assume myproj has an index.js with it's own
# project-specific dependencies in package.json
bundle-module --name=myproj --entry=index.js
我以为这是可行的,但事实证明,当using the Webpack API to call the compilation process 时,它会在本地node_modules 中查找加载程序,因此我收到此错误:
EntryModuleNotFoundError: Entry module not found:
Error: Can't resolve 'babel-loader' in '/path/to/myproj'
这正是我不想要的——因为每个项目都需要它自己的babel-loader 和其他所有加载器的副本。
所以,如果我可以用简单的语言与 Webpack 交谈,我会说:“先生或女士,在寻找 loader 时,请查看您被调用的目录,而不是您所在的目录。你正在编译`。
bundle-module 包具有所有正确的加载器和其他 Webpack 模块作为依赖项(也尝试过devDependencies)。我还尝试了“预先要求”babel-loader,但没有帮助。
如何让全局安装的 Webpack 实例使用它的本地依赖项而不是项目的依赖项?
【问题讨论】:
标签: javascript node.js webpack dependencies