我想通过Webpack的CommonsChunkPlugin
按特定顺序捆绑我的JavaScript供应商文件。
我正在使用Webpack的CommonsChunkPlugin
。官方文档的用法很简单明了,它可以正常工作,但我认为该插件按字母顺序捆绑我的文件(可能是错误的)。该插件没有选项来指定它们应该被捆绑的顺序。
注意:对于不熟悉Bootstrap 4的人来说,它当前需要一个名为Tether的JavaScript库依赖项。在加载Bootstrap之前必须加载Tether。
webpack.config.js
module.exports = {
entry: {
app: './app.jsx',
vendor: ['jquery', 'tether', 'bootstrap', 'wowjs'],
},
output: {
path: __dirname + '/dist',
filename: 'bundle.js',
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
filename: 'vendor.bundle.js'
}),
new webpack.optimize.UglifyJsPlugin(),
],
};
这里发生了两件事情:
vendor.bundle.js
包含 bootstrap, jquery, tether, wowjsbundle.js
包含我应用的其余部分
正确:
jquery
, tether
, bootstrap
, wowjs
错误:
bootstrap
, jquery
, tether
, wowjs
请注意,在我的 webpack.config.js 文件中,我按照正确的顺序排列它们,但是它们被捆绑在了 错误 的顺序中。无论我随机重新排列它们,结果都是相同的。在使用 Webpack 构建我的应用程序后,
vendor.bundle.js
显示了错误的顺序。我知道它们被捆绑在错误的顺序中,因为 Chrome 开发工具告诉我存在依赖问题。当我通过该工具和我的 IDE 查看文件时,它们被捆绑在错误的顺序中。
我的另一种方法也遇到了同样的问题
我还尝试在我的入口文件(在此例中为app.jsx)中使用import
和require
,没有使用CommonChunkPlugin
,不知何故这也按字母顺序加载我的JavaScript库。
webpack.config.js
module.exports = {
entry: './app.jsx',
output: {
path: __dirname + '/dist',
filename: 'bundle.js',
},
plugins: [
new webpack.optimize.UglifyJsPlugin(),
],
};
app.jsx (入口)
import './node_modules/jquery/dist/jquery.min';
import './node_modules/tether/dist/js/tether.min';
import './node_modules/bootstrap/dist/js/bootstrap.min';
import './node_modules/wowjs/dist/wow.min';
或者
require('./node_modules/jquery/dist/jquery.min');
require('./node_modules/tether/dist/js/tether.min');
require('./node_modules/bootstrap/dist/js/bootstrap.min');
require('./node_modules/wowjs/dist/wow.min');
结果?
Bootstrap > jQuery > Tether > wowjs
如何按正确顺序加载供应商文件?