当我运行webpack时,我的javascript资产没有按照正确的顺序进行编译。 正确的顺序应该是
然而,编译的bundle文件首先包含Bootstrap然后是Jquery。请看下面的
webpack.config
var path = require('path');
var webpack = require('webpack');
var extractTextPlugin = require('extract-text-webpack-plugin');
var cleanWebpackPlugin = require('clean-webpack-plugin');
var jsDestPath = './wwwroot/';
const config = {
entry: {
css: './Assets/scss/app.scss',
app: './Assets/js/app.js',
vendor: './Assets/js/vendor.js'
},
output: {
path: path.resolve(__dirname, 'wwwroot/js'),
filename: '[chunkhash].[name].js'
},
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader'
},
{
test: /\.scss$/,
loader: extractTextPlugin.extract({
loader: 'css-loader!sass-loader'
})
}
]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
names: ['vendor', 'manifest'] //Specify the common bundle's name.
}),
new extractTextPlugin({ filename: 'bundle.css', disable: false, allChunks: true}),
new webpack.LoaderOptionsPlugin({
debug: true,
minimize: true,
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: true,
}
}),
new cleanWebpackPlugin(['js'], {
root: jsDestPath,
verbose: true,
dry: false
})
],
}
module.exports = config;
vendor.js
import 'jquery/dist/jquery.js';
import 'bootstrap/dist/js/bootstrap.js';
答案 0 :(得分:0)
webpack输出中存在模块的顺序并不一定意味着它们的加载顺序。 webpack不会在代码中需要/导入之前加载(执行)jQuery模块。实际上,您会看到执行顺序仍然是正确的。
答案 1 :(得分:0)
您可能需要设置
global.jQuery = require('jquery');
在使用Bootstrap的js文件中。我在使用另一个依赖于jQuery的js库时遇到了这个问题,我通过npm安装并将其安装到我的js文件中,但是它说找不到jQuery。
原因是很多js图书馆使用jQuery已经移植到npm似乎没有使用require()jQuery的正确CommonJS方法,他们只是在全局命名空间中寻找jQuery定义。 / p>