web-dev-qa-db-ja.com

babel-loaderを使用するときにnode_modulesを除外するのはなぜですか?

サイトで尋ねられる質問のほとんどは、node_modulesを除外する方法に関するものですが、代わりに、なぜnode_modulesを除外したいのでしょうか。

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'app.bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
        options: {
          presets: ['@babel/preset-env']
        }
      }
    ]
  }
};

node_modulesを除外した理由を誰かに説明してもらえますか?

15
Isaac

要するに、トランスパイルはコストのかかるプロセスであり、多くのプロジェクトでは、数十万(数十万ではないにしても)のコード行がインポートされ、そのラベルで実行する必要があります。 node_modulesは、すでに述べたように、トランスパイルせずにすでに実行可能である必要があります。node_modulesを除外する簡単な方法がありますが、それを必要とするコードをトランスパイルします。 https://github.com/babel/babel-loader/issues/171 を参照してください。

ライブラリを変換するアプリケーションジョブを消費する開発者なのか、それともライブラリ開発者の責任なのかについて、多くの議論が繰り返されてきました。ほとんどの場合、トランスパイルはブラウザのサポートのために行われ、ライブラリの作成者はどのブラウザをサポートする必要があるかを知らないため、トランスパイルするか、そのままにしてトランスパイルしないことになります。それらがES5にトランスパイルする場合、それはゴールデンです。そうでない場合、通常、問題を引き起こしているライブラリを特定し、自分でトランスパイルするのは十分簡単な作業です。

12
Austin Mehmet