2017-09-14 10 views
1

J'ai un script assez petit qui contrôle un carrousel à l'intérieur d'un modal. Pour lancer le modal, j'ai une simple fonction showModal() qui est appelée quand une image sur la page est cliquée. Cependant, cette fonction est supprimée par UglifyJS lorsque les fichiers JS sont traités par WebPack. Voici un aperçu simplifié du code:Comment empêcher UglifyJS de supprimer une fonction inutilisée lors du traitement par WebPack?

$('#iconified').on('keyup', function() { 
var input = $(this); 
input.addClass('empty'); 
}); 

var carouselVideoPlayer = (function() { 
var initialized = false; 
var videoCarousel; 

function initCarousel() { 
    videoCarousel.carousel({ 
     interval: false 
    }); 
} 

return { 
    init: function() { 
     initCarousel(); 
     initialized = true; 
    } 
    }; 
})(); 

function showModal(slideNumber) { 
    $('#myModal0').modal('show'); 
    carouselVideoPlayer.showSlide(slideNumber); 
} 

jQuery(document).ready(function($) { 
    var thumbnails = []; 
    for (var i = 0; i < 4; i++) { 
    thumbnails.push($('#carousel-selector-' + i)); 
    } 
    carouselVideoPlayer.init(); 
}); 

J'ai essayé d'utiliser l'option avec essoreuse showModal réservé et j'ai essayé d'utiliser le /*@__PURE__*/ commentaire devant la fonction. À moins de faire un appel factice à cette fonction, je veux juste le marquer comme besoin ou ignoré, donc UglifyJS ne le supprimera pas et ne pourra pas trouver un moyen simple de le faire.

Mise à jour Alors pas ce que j'espérais, ce qui suit cessera UglifyJS de découverture la fonction. Ajout d'une instruction if à showModal() et d'un appel dans ma méthode initialize, en passant -1.

function showModal(slideNumber) { 
    if (slideNumber !== -1) { 
    $('#myModal0').modal('show'); 
    carouselVideoPlayer.showSlide(slideNumber); 
    } 
} 
+0

Ajout d'un appel factice, mais je pense qu'il devrait y avoir un meilleur moyen. –

Répondre

0

Je ne suis pas familier avec la façon de configurer Web Pack, mais la définition du drapeau utilisé false dans le cadre des options de compression enlaidir résoudrait probablement ce problème.

Voir les options de compression documentation ici: https://github.com/mishoo/UglifyJS2#compress-options

Votre solution de contournement fait tourner la fonction dans celui qui est utilisé, de sorte qu'il ne soit pas effacé après le changement que vous avez mentionné ci-dessus.

+0

Cela peut fonctionner. J'ai fini par refactoriser le tout pour travailler avec une vérification dans le code JS principal. Merci pour la suggestion cependant! –

+0

Si quelqu'un essaie cela et que cela fonctionne, veuillez voter. –