一旦它通过npm脚本运行,Webpack就无法工作

时间:2016-12-08 14:18:14

标签: javascript webpack webpack-dev-server

一旦我在cli(cmd)中运行以下命令,一切都很好:

SET NODE_ENV=production webpack --config webpack.config.js

如果我通过 npm脚本运行它没有任何反应 - 既不是oupput也不是错误消息。我尝试添加--display-error-details,但它是一样的。

请记住我在Windows上。

这是 webpack.config.js

var fs = require('fs');
var path = require('path');
var webpack = require('webpack');

// Project configuration
var entries = {
    'js/application': ['./app/main']
};

var appPath = path.resolve(__dirname, 'app');
var buildPath = path.join(__dirname, 'build');
var modulesPath = path.resolve(__dirname, 'node_modules');

// We'll bundle some more files for dev purposes, hot-loader and stuff
if (process.env.NODE_ENV != 'production') {
    entries = {
        'js/application': [
            'webpack-hot-middleware/client?https://localhost:3000',
            './app/main',
            './app/styles/main.less'
        ]
    };
}

// Webpack configuration
module.exports =
{
    devtool: 'source-map',
    entry: entries,
    output: {
        path: buildPath,
        filename: '[name].js'
    },
    resolve: {
        root: [modulesPath, appPath],
        extensions: ['', '.js', '.jsx']
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin(),
        // needed for UIkit
        new webpack.ProvidePlugin({ // http://webpack.github.io/docs/shimming-modules.html
            $: "jquery",
            jQuery: "jquery",
            L:"leaflet"
        })
    ],
    module: {
        noParse: [],
        loaders: [
            {
                test: /\.jsx?$/,
                loader: 'babel',
                include: appPath
            }, {
                test: /\.json/,
                loader: "json-loader"
            }, {
                test: /\.less$/,
                loader: 'style!css!less'
            }, {
                test: /\.(eot|woff|woff2|ttf|svg|png|jpg)$/,
                loader: 'url-loader?limit=30000&name=[name]-[hash].[ext]'
            }
        ]
    }
};

以下是 package.json脚本

 "scripts": {
    "build:webpack": "SET NODE_ENV=production webpack --config webpack.config.js"
  },

2 个答案:

答案 0 :(得分:2)

您的npm脚本只是一个命令,您实际运行的是SET NODE_ENV={everything else}。要让您的脚本在Windows上运行,您需要更改单行脚本以运行两个命令,例如SET NODE_ENV=production && webpack --config webpack.config.js

来自documentation"How to run two commands in one line in Windows CMD?"的引用:

  

使用多个命令和条件处理符号

     

& [...] command1 & command2
   用于在一个命令行上分隔多个命令。 Cmd.exe运行第一个命令,然后运行第二个命令。

     

&& [...] command1 && command2
   用于运行&&amp ;;之后的命令仅当符号前面的命令成功时。 Cmd.exe运行第一个命令,然后仅在第一个命令成功完成时运行第二个命令。

答案 1 :(得分:0)

你试过npm 运行 build:webpack:https://docs.npmjs.com/misc/scripts