J'aimerais les mêmes fonctionnalités que RequireJS empty:
http://requirejs.org/docs/optimization.html#empty
Mon cas d'utilisation est d'inclure jquery-migrate
dans le développement, mais je voudrais l'exclure lors de la création.
L'utilisation de IgnorePlugin
le rend simplement non inclus et, lorsque require
dans le code, il génère une erreur (Uncaught Error: Cannot find module "jquery-migrate"
).
Ce que j'aimerais, c’est qu’il retourne simplement undefined, ou quelque chose du genre (comme empty:
dans RequireJS). Je voudrais ne pas toucher l’importation dans le code, il suffit de le configurer pour renvoyer undefined
.
EDIT: Utiliser NormalModuleReplacementPlugin
fonctionne si je pointe le remplacement vers un fichier vide. Mais garder un fichier vide juste pour cela semble inutile.
J'utilise le null-loader pour masquer des modules. Le noop-loader peut être utilisé pour un moins gênant si-sinon dans la config.
Essayer:
rules: [{
test: /jquery-migrate/,
use: IS_DEV ? 'null-loader' : 'noop-loader'
}]
Vous pouvez essayer de faire un resolve.alias dans webpack.config:
resolve: {
alias: {
"jquery-migrate": process.env.NODE_ENV === 'production' ? "empty-module": "jquery-migrate"
}
}
Utilisez la variable DefinePlugin
de Webpack en combinaison avec les plugins de production normaux (Dedupe et Uglify).
Ensuite, dans votre code, vous pouvez écrire:
if(DEBUG) {
var test = require('test');
alert(test);
}
Et lorsqu’elle est intégrée à la production, la DEBUG
sera remplacée par une if(false) { ... }
littérale qui sera complètement supprimée par le plug-in uglify, de sorte que test
ne sera nécessaire que dans une version de débogage.
Voici un exemple de configuration de tâche Grunt pour grunt-webpack
qui a pour cibles development
et production
:
development: {
devtool: "sourcemap",
output: {
pathinfo: true,
},
debug: true,
production: false,
plugins: [
new webpack.DefinePlugin({
DEBUG: true,
PRODUCTION: false
})
]
},
production: {
plugins: [
new webpack.DefinePlugin({
DEBUG: false,
PRODUCTION: true
}),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin({
output: {
comments: false,
}
})
]
},