2017-05-22 166 views
2

我有一個簡單webpack.config.js傳遞命令行參數webpack.config.js

module.exports = { 
    entry: "./app.js", 
    output: { 
    filename: "bundle.js" 
    }, 
} 

而且我想通過命令行參數來傳遞值entryoutput。這是可能的,我將如何做到這一點?

+0

您是否嘗試過使用[環境變量(HTTPS: //webpack.js.org/guides/environment-variables/)? –

回答

8

webpack.config.js也可以導出可以返回conf對象的env函數。因此,你可以有一個的WebPack配置,如:

module.exports = env => { 
    return { 
     entry: env === "production" ? "./app.js": "app-dev.js", 
     output: { 
      filename: "bundle.js" 
     }, 
    } 
}; 

,然後從命令行(或的package.json)這樣的WebPack撥打:

webpack --env=production 
+0

這不適用於Webpack 1嗎?因爲它會引發配置文件不返回對象的錯誤 – Matho

1

您可以使用argv包並設置變量。你必須在module.export之前完成。

+0

謝謝,我一定會嘗試。但是有沒有更簡單的方法,而不需要額外的包參考?畢竟,webpack.config.js只是javascript代碼。 – user1934212

+2

你可以通過命令行傳遞--env = test,然後你可以導出一個env函數,它返回的是一個對象而不是直接的https://webpack.js.org/configuration/configuration-types/#exporting- a-function-to-use-env – Axnyff

+0

您可以閱讀以下內容:http://justindavis.co/2014/11/24/using-command-line-arguments-in-a-node-script/ – PRAISER