Webpack 2 没有以正确的顺序编译文件



当我运行 webpack 时,我的 JavaScript 资源没有按照正确的顺序进行编译。正确的顺序应该是

  1. Jquery
  2. 启动

但是,编译的捆绑文件首先包含引导程序,然后包含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;

供应商.js

import 'jquery/dist/jquery.js';
import 'bootstrap/dist/js/bootstrap.js';

模块在 webpack 输出中出现的顺序并不一定意味着它们是加载的顺序。 webpack 在代码中需要/导入 jQuery 模块之前不会加载(执行)它。实际上,您将看到执行顺序仍然是正确的。

您可能需要

设置

global.jQuery = require('jquery');

在使用引导程序的 js 文件中。在使用另一个依赖于 jQuery 的 js 库时,我遇到了这个问题,我通过 npm 安装了它并需要到我的 js 文件中,但它说找不到 jQuery。

原因是许多使用 jQuery 的 js 库被移植到 npm 似乎没有使用正确的 CommonJS 方法来 require()ing jQuery,它们只是在全局命名空间中查找 jQuery 定义。

最新更新