【问题标题】:How to direct Webpack config file to centralized dependencies如何将 Webpack 配置文件定向到集中依赖项
【发布时间】: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


    【解决方案1】:

    认为我解决了这个问题,但我怀疑有更好的解决方案:

    在生成的配置文件中,我不得不使用加载器的绝对路径指向bundle-module 目录中已安装的模块:

    loader: path.join(__dirname, '../node_modules/babel-loader/lib/index.js')
    

    (奇怪的是,即使babel-loader 中的package.json 指向lib/index.js,当然,这似乎只有在指定完整路径时才有效。

    我不会回答这个问题,以防万一有人有更明显、更简单的解决方案!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 2016-03-03
      • 1970-01-01
      相关资源
      最近更新 更多