La plupart des questions posées sur le site sont de savoir comment exclure node_modules
mais à la place, je me demande pourquoi voudrions-nous exclure 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']
}
}
]
}
};
Quelqu'un peut-il m'expliquer la raison de l'exclusion de node_modules
?
En bref, le transpiling est un processus coûteux et de nombreux projets ont des milliers (sinon des centaines de milliers) de lignes de code importées dans lesquelles Babel devrait être écrasé. Votre node_modules
devrait déjà être exécutable sans transpiler comme déjà dit et il existe des moyens simples d'exclure votre node_modules
mais transpile tout code qui en a besoin. Voir https://github.com/babel/babel-loader/issues/171 .
J'ai vu beaucoup d'arguments dans les deux sens quant à savoir si le développeur devrait ou non consommer le travail des applications de transpiler la bibliothèque ou la responsabilité du développeur de bibliothèque. La plupart du temps, le transpilage est effectué pour la prise en charge du navigateur et le créateur de la bibliothèque n'a aucune connaissance des navigateurs que vous devez prendre en charge, de sorte qu'ils finissent par transpiler ou ne pas transpiler, le laissant entre vos mains. S'ils se transposent vers ES5, vous êtes en or, sinon c'est généralement une tâche assez simple pour déterminer quelles bibliothèques sont à l'origine des problèmes et les transpiler vous-même