Je suis nouveau dans WebPack et j'essaie de comprendre les chargeurs ainsi que leurs propriétés telles que test, loader, include, etc.
Voici un extrait de code de webpack.config.js que j'ai trouvé dans google.
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader',
include: [
path.resolve(__dirname, 'index.js'),
path.resolve(__dirname, 'config.js'),
path.resolve(__dirname, 'lib'),
path.resolve(__dirname, 'app'),
path.resolve(__dirname, 'src')
],
exclude: [
path.resolve(__dirname, 'test', 'test.build.js')
],
cacheDirectory: true,
query: {
presets: ['es2015']
}
},
]
}
Ai-je raison de faire ce test: /.js$/ sera utilisé uniquement pour les fichiers avec l'extension .js?
Le chargeur: 'babel-loader', est le chargeur que nous installons à l'aide de npm
Le comprennent: j'ai beaucoup de questions à ce sujet. Ai-je raison de dire que tout ce que nous mettons à l'intérieur du tableau sera transpilé? Cela signifie que index.js, config.js et tous les fichiers * .js de lib, app et src seront transpilés.
Plus de questions sur l'inclusion: lorsque les fichiers sont transpilés, les fichiers * .js sont-ils concaténés dans un seul gros fichier?
Je pense exclure est explicite. Il ne sera pas transpiré.
Que fait la requête: {presets: ['es2015']}?
Dans la configuration Webpack, la configuration comporte de nombreux éléments, les plus importants étant:
sortie - le dernier paquet que vous voulez créer. si vous spécifiez par exemple
sortie: {nom du fichier: "[nom] .bundle.js", fournisseur: "réagir"}
Ensuite, les fichiers js de votre application seront regroupés sous le nom main.bundle.js et réagiront dans un fichier vendor.js. C'est une erreur si vous n'utilisez pas les deux en page HTML.
J'espère que ça a aidé
Cette documentation m'a aidé à mieux comprendre. On dirait que c'est pour le Webpack 1 mais que cela s'applique toujours.
https://webpack.github.io/docs/configuration.html#module-loaders
Chargeurs
Un tableau de chargeurs appliqués automatiquement.
Chaque article peut avoir ces propriétés:
- test: Une condition à remplir
- exclure: Une condition qui ne doit pas être remplie
- include: Un tableau de chemins ou de fichiers où les fichiers importés seront transformés par le chargeur.
- loader: Une chaîne de chargeurs “!” séparés
- loaders: Un tableau de chargeurs sous forme de chaîne
Cet exemple m'a aidé à comprendre ce qui se passe. On dirait que vous utilisez soit inclure, soit exclure, mais pas les deux. Le test est une condition appliquée à tous les fichiers. Ainsi, si vous incluez un dossier, chaque fichier doit satisfaire à la condition de test. Je n'ai pas vérifié cela, mais d'après l'exemple fourni par la documentation, on dirait que c'est ainsi que cela fonctionne.
module: {
rules: [
{
// "test" is commonly used to match the file extension
test: /\.jsx$/,
// "include" is commonly used to match the directories
include: [
path.resolve(__dirname, "app/src"),
path.resolve(__dirname, "app/test")
],
// "exclude" should be used to exclude exceptions
// try to prefer "include" when possible
// the "loader"
loader: "babel-loader" // or "babel" because webpack adds the '-loader' automatically
}
]
}