2017-03-15 152 views
1

我的應用程序中有一個子項目,它包含自己的node_modules/等等。它在腳本方面與主要項目隔離,但應該位於其中。 這可能沒有道理,但它的確是從webpack中排除目錄

問題是,node_modules(至少)會干擾webpack。我得到的錯誤如Duplicate Identifier,Cannot redeclare block-scoped variable,...

通過簡單地刪除子項目目錄,捆綁開始工作。


最好的解決方案是在webpack配置文件中添加一個排除條目,但事情並非如此。

我該如何解決這個問題?我找不到解決方案!

+0

的WebPack不關心子目錄,除非您從中導入某些內容。這個問題可能是你的webpack配置中的某個地方,也許是配置錯誤['resolve'](https://webpack.js.org/configuration/resolve/)。 –

回答

0

您需要在加載器中設置排除道具。

https://webpack.js.org/configuration/module/#rule-exclude

而且你可以控制何時捆綁或不使用NODE_ENV和腳本模塊。我將其用於開發環境,而不是等待webpack每次都構建所有node_modules。

這是一個簡單的內聯,如果檢查NODE_ENV和構建節點模塊或不使用加載器中的排除條件。

var FASTBUILD = process.env.NODE_ENV == 'fastbuild'; 
//This example is for loading all js 
module: { 
    rules: [ 
     FASTBUILD ? {test: /\.js?$/, loader: "your-loader-here", exclude: path.resolve(__dirname, "./node_modules")} : {test: /\.js?$/, loader: your-loader-here"} 
    ] 
} 

而且你可以擁有這在你的package.json,所以你只需要使用npm run dev

"scripts": { 
//this if for build WITHOUT node_modules 
    "dev": "set NODE_ENV=fastbuild&&webpack --watch" 
    } 

PS:此配置爲Windows和使用的WebPack 2.2