37959


webpackでES6構文を用いたJavascriptのコードを処理するためにbabel-loaderを利用しています。

[Github babel-loader](https://github.com/babel/babel-
loader)にあるREADME.mdの通りに設定し、問題なく動いていることを確認できていますが、下記の設定のうち、`exclude`を指定する必要が何故あるのかがわかりません。

[code]

    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: /(node_modules|bower_components)/,
          use: {
            loader: 'babel-loader',
            options: {
              presets: ['env']
            }
          }
        }
      ]
    }
    
[/code]

感覚的には、`node_module`内に置かれているJavascriptのコードもJavascriptで書かれているのだから、`exclude`を指定しなくても問題がないように思うのですが、この設定がないと正常に動作しないのは、何故なのでしょうか。


CC BY-SA 3.0
2017-08-03T05:50:47.273
36894
2018-09-28T22:33:35.870
2018-09-28T22:33:35.870
19110
5836
question
javascript webpack babeljs
babel-loaderの設定でexclude: /(node_modules|bower_components)/しているのは何故でしょうか


結論から言いますと、トランスパイルするサードパーティのpolyfillやモジュールよっては実行時にエラーになる可能性のあるものがあるからです。

こちらのQiitaの記事が参考になります  
[webpackでbabel際はnode_modulesをexcludeし忘れるべからず](http://qiita.com/haribote/items/73ede4fcdf9c942f1c4f)

また、同じ作者の方が`exclude`を忘れた際にエラーがでるケースを再現したアプリケーションを公開してくれています。詳しく知りたければこちらも参考になるかと思われます。  
<https://github.com/haribote/do-not-miss-excluding-node-modules>


CC BY-SA 3.0
2017-09-15T05:00:32.477
37959
2017-09-15T05:00:32.477
13444
36894
answer