我有2个应用程序,它们都使用公共依赖项(d3库):
应用1:
// app1.js
import * as d3 from "d3";
应用2:
//app2.js
import * as d3 from "d3";
我不想复制这个依赖项并将它放在每个文件中,而是我希望Webpack生成我的2个app文件,其中包含2个app可用的依赖项的附加文件:
-
app1.js
-
app2.js
-
d3.js
这是我到目前为止所做的:
const path = require('path');
module.exports = {
entry: {
app1:'./app1/main.js',
app2: './app2/main.js'
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, 'dist')
},
optimization: {
splitChunks: {
chunks: 'all'
}
}
}
但我得到的是每个应用程序的供应商:
-
app1.js
-
app2.js
-
vendor~app1.js
-
vendor~app2.js
3 回答
我对正则表达式并不是很好,但我试过了 .
我使用webpack@4.16.2测试,按照您的指定输入所有内容 . 它似乎对我有用 .
app1 / main.js
app2 / main.js
package.json
webpack.config.js
跑步
我明白了
使用
./dist
内容:app1.js
app2.js
vendors~app1~app2.js
好的,感谢@MatheusSilva的回答和Jamie的回答,我已经能够理解这个问题了:
首先,我使用MatheusSilva的代码只生成一个文件 .
其次,我在两个应用程序的每个文件夹中都有node_modules文件夹,尽管他们使用的是完全相同的d3版本(同一个package.json),但webpack仍在复制依赖项 . 我必须从每个node_modules文件夹中删除d3,并在根文件夹中定义并安装d3,我正在构建所有的bundle . 并且由于这个原因,webpack没有复制d3 .