サイトで尋ねられる質問のほとんどは、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
を除外した理由を誰かに説明してもらえますか?
要するに、トランスパイルはコストのかかるプロセスであり、多くのプロジェクトでは、数十万(数十万ではないにしても)のコード行がインポートされ、そのラベルで実行する必要があります。 node_modules
は、すでに述べたように、トランスパイルせずにすでに実行可能である必要があります。node_modules
を除外する簡単な方法がありますが、それを必要とするコードをトランスパイルします。 https://github.com/babel/babel-loader/issues/171 を参照してください。
ライブラリを変換するアプリケーションジョブを消費する開発者なのか、それともライブラリ開発者の責任なのかについて、多くの議論が繰り返されてきました。ほとんどの場合、トランスパイルはブラウザのサポートのために行われ、ライブラリの作成者はどのブラウザをサポートする必要があるかを知らないため、トランスパイルするか、そのままにしてトランスパイルしないことになります。それらがES5にトランスパイルする場合、それはゴールデンです。そうでない場合、通常、問題を引き起こしているライブラリを特定し、自分でトランスパイルするのは十分簡単な作業です。