【发布时间】:2017-09-14 14:18:03
【问题描述】:
我有一个相当小的脚本来控制模态框内的轮播。要启动模式,我有一个简单的showModal() 函数,当点击页面上的图像时会调用该函数。
但是,当 WebPack 处理 JS 文件时,此功能会被 UglifyJS 剥离。这是代码的简化大纲:
$('#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();
});
我尝试使用带有 showModal 保留的 mangle 选项,并尝试在函数前面使用 /*@__PURE__*/ 注释。没有对这个函数进行虚拟调用,我只想将它标记为需要或忽略,这样 UglifyJS 不会将其删除,并且似乎找不到简单的方法来执行此操作。
更新
虽然不是我所希望的,但以下内容将阻止 UglifyJS 剥离该功能。
向showModal() 添加了一个if 语句,并在我的初始化方法中调用它,传入-1。
function showModal(slideNumber) {
if (slideNumber !== -1) {
$('#myModal0').modal('show');
carouselVideoPlayer.showSlide(slideNumber);
}
}
【问题讨论】:
-
添加了一个虚拟调用,但我觉得应该有更好的方法。