Javascript 在Webpack 4中使用本地模块会多次绑定相同的依赖项
我正试图找到一种在npm中使用本地模块的好方法,或者一种构造大型应用程序的方法,以便将其捆绑到模块中,这些模块可能在单独的存储库中,也可能不在单独的存储库中 每个本地模块都有自己安装的package.json和依赖项 我的要求是,这些模块是用ES6编写的,并且只作为正在构建的主项目的一部分进行编译(因此,我不需要不断地独立构建很多依赖项) 项目结构Javascript 在Webpack 4中使用本地模块会多次绑定相同的依赖项,javascript,webpack,bundling-and-minification,webpack-4,Javascript,Webpack,Bundling And Minification,Webpack 4,我正试图找到一种在npm中使用本地模块的好方法,或者一种构造大型应用程序的方法,以便将其捆绑到模块中,这些模块可能在单独的存储库中,也可能不在单独的存储库中 每个本地模块都有自己安装的package.json和依赖项 我的要求是,这些模块是用ES6编写的,并且只作为正在构建的主项目的一部分进行编译(因此,我不需要不断地独立构建很多依赖项) 项目结构 /root /main-module ... main js files <- entry point webpack.
/root
/main-module
... main js files <- entry point
webpack.config.js
package.json
/module-1
... module 1 js files
package.json
/module-2
... module 2 js files
package.json
/module-3
... module 3 js files
package.json
您可以在此处看到整个项目:
我使用的是带有babel loader的webpack,它不需要任何额外的设置就可以使用这个表单,甚至可以在模块文件完成后查看它们的更改和重建,这真是太神奇了
问题:构建完成后,lodash将被包含在构建包中4次,每个需要它的模块一次,即使它们都需要相同的版本,并且所有源代码都是同时编译的
- 我尝试过使用splitChunkPlugin,但没有效果
- 我曾尝试将lodash设置为本地模块中的DevDependence(这是我不想做的事情,但无论如何都不起作用)
或者以类似方式捆绑本地模块的另一种方式将每个模块更改为具有lodash作为依赖项,而不是直接依赖项。因此,在
package.json
文件中,更改以下内容:
"dependencies": {
"lodash": "^4.17.5"
}
致:
这会停止模块在本地工作吗?例如,要作为模块的一部分运行测试,它仍然需要引用lodash作为它自己的依赖项,而不是对等依赖项?我链接到了一篇nodejs博客文章,提供了更多详细信息。应该没问题。您可能必须手动安装对等依赖项(即如果使用npm>v2)。请参阅更新部分博客文章的底部:它似乎不起作用,我已将它们更改为对等依赖项。第一次尝试时,它仍然捆绑lodash 4次。删除所有node_模块文件夹并再次运行npm install后,没有安装node_模块(这可能是我想要的)。我收到以下错误:找不到模块:错误:无法解析“C:\code\local Module test\Module-1”中的“lodash”。似乎它仍在尝试将它们作为依赖项加载。在父项目中,您需要安装对等依赖项。当您在父级中安装npm时,您没有收到警告吗?我收到了,但理想情况下我不希望收到警告,因为我不能保证使用主repo中其他本地模块所需的模块,我正好在示例中。
"dependencies": {
"lodash": "^4.17.5"
}
"peerDependencies": {
"lodash": "^4.17.5"
}