J'utilise webpack pour un framework Node que je construis (bien que je devrais probablement utiliser gulp, certes). Lorsque j'inclus le module EJS, Webpack l'inclut dans la source compilée, même si je lui dis explicitement d'exclure le répertoire node_modules.
module.exports = {
context: __dirname,
target: 'node',
// ...
output: {
libraryTarget: 'commonjs'
// ...
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader?{ "stage": 0, "optional": ["runtime"] }'
}
]
}
};
Comme vous pouvez le constater, j'ai un test pour les fichiers JS et je lui dis d'exclure node_modules; pourquoi ignore-t-il mon exclusion?
Dans votre fichier de configuration, il semble que vous ne fassiez que node_modules
être analysé avec babel-loader
, mais pas , groupé.
Pour exclure node_modules
et les bibliothèques de noeuds natifs du regroupement, vous devez:
target: 'node'
à votre webpack.config.js
. Cela va exclure les modules de nœud natif (chemin, fs, etc.) de la fusion.node_modules
.Donc, votre fichier de configuration de résultat devrait ressembler à:
var nodeExternals = require('webpack-node-externals');
...
module.exports = {
...
target: 'node', // in order to ignore built-in modules like path, fs, etc.
externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
...
};
Si vous rencontrez ce problème avec TypeScript, vous devrez peut-être ajouter skipLibCheck: true
dans votre fichier tsconfig.json
.
Essayez d'utiliser le chemin absolu:
exclude:path.resolve(__dirname, "node_modules")
WebPack 1.x :
Cela m'arrivait parce que j'avais spécifié mon propre resolve.extensions
mais je n'ai pas réussi à inclure l'extension vide ''
:
resolve: {
extensions: ['.js', '.jsx']
},
Depuis le (n'est plus disponible!) Documents Webpack :
La définition de cette option remplacera la valeur par défaut, ce qui signifie que Webpack n'essaiera plus de résoudre les modules à l'aide des extensions par défaut. Si vous souhaitez que les modules requis avec leur extension (par exemple require ('./ somefile.ext')) soient correctement résolus, vous devez inclure une chaîne vide dans votre tableau. De même, si vous souhaitez que les modules requis sans extensions (par exemple, require ("underscore")) soient résolus en fichiers portant l'extension ".js", vous devez inclure ".js" dans votre tableau.
L'ajout de l'extension vide a résolu les erreurs:
resolve: {
extensions: ['', '.js', '.jsx']
},