Comment exclure le code dactylographié du pack webpack pendant la construction ?

Par exemple, j'ai cette ligne de code dans app.ts (application nodejs) :

const thisShouldNotBeInProductionBundleJustInDevBundle = 'aaaaaaa';

Je souhaite que lorsque je crée mon application à l'aide de la configuration webpack, exclure ce code.

2
Jon Sud 17 mars 2019 à 13:58

2 réponses

Meilleure réponse

Dans webpack version 4, vous pouvez définir mode: 'production' dans votre configuration webpack. (https://webpack.js.org/concepts/mode/)

Ainsi, dans votre code source, vous pouvez utiliser les éléments suivants :

if (process.env.NODE_ENV === 'development') {
    const thisShouldNotBeInProductionBundleJustInDevBundle = 'aaaaaaa';
    ...
}

En conclusion, tout le code à l'intérieur de if et ifs sera automatiquement supprimé lors de la construction de votre bundle

9
Eugene Shilin 17 mars 2019 à 11:10

Webpack a un paramètre mode, qui vous permet de basculer entre le développement et les constructions de production.

Dans votre code, vous pouvez utiliser process.env.NODE_ENV pour savoir si vous êtes en production ou non, Webpack utilise cette propriété pour éliminer le "code mort de production":

 // declare variable everywhere to prevent unresolvable variable references
 let onlyInDev = "";

 // The following should be shaken away by webpack
 if(process.env.NODE_ENV === "development") {
   onlyInDev = "test";
 }

Si la valeur est une information sensible qui ne devrait pas être divulguée à votre version de production, je la rechercherais dans le bundle pour m'assurer qu'elle ne soit pas divulguée si le pipeline de construction change.

1
Jonas Wilms 17 mars 2019 à 11:10