2017-06-27 27 views
1

我應該爲WebPack中的各種加載器包含或排除node_modules嗎? (JS,TS,CSS,SCSS,文件)明確地排除它(通過排除node_modules或只包括src或客戶端文件夾)的一些配置隱藏地包括它的一些配置,網址,原始等)WebPack加載程序配置:排除或包含node_modules?

我不明白爲什麼你會或不會包括它。顯然,它帶來了代碼,並以任何方式將它包含在輸出構建中,我猜測這只是加載器是否處理它。我只遇到一個節點模塊,如果加載器處理了它,那麼它不起作用,到目前爲止,沒有其他方式不以這種或那種方式工作。

除了一個軟件包外,其他人似乎都不關心它們是否被包含或排除。它與輸出/瀏覽器有什麼不同?

例如:

'use strict'; 

const path = require('path'); 

module.exports = (root) => { 
    return { 
    // BABEL LOADER 
    // Reference: https://github.com/babel/babel-loader 
    // Transpile .js files using babel-loader 
    // Compiles ES6 and ES7 into ES5 code 

    // Run on .js files 
    test: /\.js$/, 

    // Use the babel-loader 
    use: [ 
     // Babel transpiler, see .babelrc for configuration 
     { 
     loader: 'babel-loader', 
     options: { 
      sourceMap: true, // Emit sourcemaps 
      cacheDirectory: true // Cache compilation 
     } 
     } 
    ], 
    // Aside from one package, none of the others seem to care if they're included or excluded. 
    include: [ path.resolve(root, 'client') ] 
    }; 
}; 

回答

2

這裏是我遵循和爲什麼。

所有.js文件,我排除node_modules

  • ESlint則因爲不需要一般.js裝載機鏈Babel
  • 掉毛,你不能用node_modules掉毛結果做任何事情,除非你解決所有lint警告/錯誤(不要認爲會有),並且該模塊的創建者接受這些更改併發布它。
  • 在大多數情況下發布的代碼是ES5代碼,你不需要babel。

如果您有任何與此有偏差的地方,您可以包含這些模塊。

結果:由於我的項目中使用了大約500-600個npm模塊(包括所有依賴項),因此構建時間增加了20倍。它將遍歷1000-2000 .js它不需要的地方。

對於其他文件:我發現,你可能不會添加排除node_modules因爲,例如CSS本來它必須得到捆綁過一個節點模塊庫中require()版。

相關問題