45 votes

Supprimer tous les commentaires et les logs de la console avec ng build --prod, est-ce possible ?

J'utilise MEAN, Angular 2, Node/Express, Angular-CLI et ng build --prod pour construire mon application et j'ai une parodie de code jetable commenté et un milliard de déclarations de débogage console.log dans toute mon application. Existe-t-il un moyen de faire en sorte que le processus de construction supprime tous les commentaires et les instructions console.log lors de la construction ? L'idée de le faire manuellement est effrayante !

0 votes

J'imagine que les commentaires sont déjà supprimés, avez-vous regardé le résultat ? Mais comment est-il censé savoir quels journaux sont des fonctionnalités et lesquels ne sont que des débogages ?

0 votes

Angular-cli utilise webpack sous le capot, qui fait déjà une sorte de manipulation du javascript pendant le processus d'empaquetage. Je crois qu'il y a des plugins pour webpack pour supprimer la journalisation de la console et aussi les commentaires pendant le processus de traitement, mais je ne suis pas sûr de savoir comment synchroniser cela avec angular-cli.

1 votes

Vous pouvez utiliser Gulp avec gulp-strip-debug. Consultez cet article pour plus d'informations.

-1voto

Anand Raja Points 396

Vous pouvez cacher tous les console.log() en production (angulaire) de deux manières.

Ils sont

  1. se cachant dans l'application angulaire
  2. en les guidant uniquement dans un composant particulier.
  • Se cacher dans l'application

ouvrir main.ts et ajoutez les lignes suivantes dans la condition de vérification de la production

if (environment.production) {
  enableProdMode();

  if (window) {
    window.console.log = function() {};
  }
}

ou

if (environment.production) {
  enableProdMode();
  window.console.log = function() {};
}
  • Masquage dans un composant particulier uniquement

Ouvrez le fichier component.ts de ce composant et ajoutez le code suivant dans le crochet du cycle de vie ngOnInit

import { isDevMode } from '@angular/core';
....

ngOnInit() {
    if (!isDevMode()) {
      console.log = function() {};
    }
}

Cela les masquera uniquement dans ce composant particulier.

Si vous voulez les cacher dans IE, veuillez vérifier este

si vous obtenez une erreur de linting pour ne pas avoir utilisé la fonction normale, remplacez-la par la fonction flèche suivante

console.log = () => {};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X