Webpack 2未按正确顺序编译文件

Webpack 2未按正确顺序编译文件,webpack,webpack-2,Webpack,Webpack 2,当我运行webpack时,我的javascript资产没有按照正确的顺序进行编译。 正确的顺序应该是 Jquery 引导 但是,编译的bundle文件首先包含引导,然后是Jquery。请看下面 webpack.config var path = require('path'); var webpack = require('webpack'); var extractTextPlugin = require('extract-text-webpack-plugin'); var cleanWeb

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

  • Jquery
  • 引导
  • 但是,编译的bundle文件首先包含引导,然后是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';
    

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

    您可能需要设置

    global.jQuery = require('jquery');
    
    在使用引导的js文件中。我在使用另一个依赖于jQuery的js库时遇到了这个问题,我通过npm安装了jQuery,并需要将它放入我的js文件中,但它说找不到jQuery


    原因是很多使用jQuery的js库已经移植到npm,它们似乎没有使用适当的CommonJS方法require()调用jQuery,它们只是在全局名称空间中查找jQuery定义。

    谢谢您的评论。但是,当页面加载时,我得到的jQuery没有在错误控制台中定义。引导依赖于Jquery。@ErkanDemir,你得到答案了吗?