在我获得的一个项目中,我有一个main.js
文件,该文件在网站上共享,这就是为什么他们在其中包含外部依赖项bootstrap.js
的原因。
主.js
window.jQuery = window.$ = require('jquery');
$(document).ready(function () {
require('./components/menu')();
//other components
});
require('./thirdparty/bootstrap');
require('./components/spinner');
./第三方/引导程序
// import '../../../../../../../node_modules/bootstrap/js/src/alert';
// import '../../../../../../../node_modules/bootstrap/js/src/button';
import '../../../../../../../node_modules/bootstrap/js/src/carousel';
import '../../../../../../../node_modules/bootstrap/js/src/collapse';
// import '../../../../../../../node_modules/bootstrap/js/src/dropdown';
import '../../../../../../../node_modules/bootstrap/js/src/modal';
// import '../../../../../../../node_modules/bootstrap/js/src/popover';
import '../../../../../../../node_modules/bootstrap/js/src/scrollspy';
import '../../../../../../../node_modules/bootstrap/js/src/tab';
// import '../../../../../../../node_modules/bootstrap/js/src/tooltip';
我正在尝试使用此项目设置 webpack,并希望将此供应商依赖项(即引导程序(移动到一个单独的块中,因为它不会经常更改。因此,我添加了一个新的"供应商"条目,如下所示
module.exports = [{
name: 'js',
entry: {
main : './src/main.js',
vendor : ['jquery', 'bootstrap']
//other entries
},
output: {
path: './dist',
filename: '[name].js'
},
module: {
loaders: [ /*loaders like babel */ ]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: Infinity,
filename: '[name].[chunkhash].js'
}),
]
}];
当我运行 webpack 构建时,构建生成得很好,我的项目工作正常,但我在 2 个不同的块中复制了引导程序,即在 main.js
和 vendor.js
中。
我认为通过在供应商中声明bootstrap
,webpack 选择了引导node_modules并将其包含在供应商.js中。
现在,我所需的 webpack 输出是,仅将 ./thirdparty/bootstrap js 文件中存在的引导组件移动到供应商块。
有可能做到吗?
我通过指定供应商中想要的确切依赖项来解决它。
['jquery', './node_modules/bootstrap/js/src/carousel.js',
'./node_modules/bootstrap/js/src/collapse.js', './node_modules/bootstrap/js/src/modal.js',
'./node_modules/bootstrap/js/src/scrollspy.js', './node_modules/bootstrap/js/src/tab.js'
];
指定确切的引导 js 后,我需要解决我的重复性问题。