2016-12-08 24 views
0

有一次,我跑在命令行下面的命令(CMD),一切都很好:的WebPack不能正常工作,一旦它通過NPM腳本運行

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

您的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
使用以下& &只有在符號前面的命令成功運行的命令。 Cmd.exe運行第一個命令,然後僅在第一個命令成功完成時才運行第二個命令。

+0

謝謝@Scott。這是問題。現在它正在工作。在Unix中,它不用'&&'工作。 –

0

你嘗試過NPM 運行編譯:的WebPack: https://docs.npmjs.com/misc/scripts

+0

我在我的問題中提到過,這就是問題所在。通過** npm腳本**它不起作用(沒有任何反應)。 –

+1

是的,但是您是否在命令行中使用npm ** RUN **腳本名稱(不在大寫字母中運行)。我無法在你的問題中看到這一點。您在運行腳本時究竟輸入了什麼內容?你如何運行你的腳本? –

+0

我在cli中運行它,正如你所提到的:'npm run build:webpack'。 –