gulp-minify正在用函数调用中的值替换javascript变量名

时间:2017-06-29 15:02:39

标签: javascript gulp gulp-minify

我的代码如下:

define('identity', function () {
    // LOT OF CONSTANTS AND USAGE HAS BEEN REMOVED FOR BREVITY
    'use strict';
    var CREATE_ACCOUNT = 'CreateAccount';
    var ACCOUNT = 'Account';
    var CONNECT = 'Connect';
    var SWITCH = 'Switch';
    var FB = 'FB';
    var PIPE_SEPARATOR = ' | ';
    var DOT_SEPARATOR = '.';
    var COMMA_SEPARATOR = ', ';

    function concatenateWithDotSeparater(array) {
        return concatenateWithSeparator(array,DOT_SEPARATOR);
    }

    function concatenateWithPipeSeparater(array) {
        return concatenateWithSeparator(array,PIPE_SEPARATOR);
    }

    function concatenateWithCommaSeparater(array) {
        return concatenateWithSeparator(array, COMMA_SEPARATOR);
    }

    function concatenateWithSeparator(array, separator) {
        return array.join(separator);
    }

    return {
        signUp: {
            facebookConnect : concatenateWithDotSeparater([CREATE_ACCOUNT, FB, CONNECT]),
            }
    };
}); 

基本上,我有很多重复的常量,需要连接起来才能产生实际价值。因此,我创建了常量来保存重复值,然后通过函数连接它们。

但是当我尝试使用gulp-minify版本1.0.0缩小JS时,结果如下: 返回{注册:{facebookConnect:E([ “的createAccount”, “FB”, “连接”])}}

它注入了实际值。我该如何防止这种情况?

我想获得如下输出: 返回{注册:{facebookConnect:E([S,d,E])}}

我正在使用minify,如:

.pipe(minify({
    ext: {
        src: '.js',
        min: '-min.js'
    }
}))

请帮忙。

1 个答案:

答案 0 :(得分:0)

如果设置选项mangle,则可以避免重命名某些变量,您应该在其中设置要保存的名称列表不可更改。在引擎盖下,gulp-minify数据包使用uglify-es数据包。 Look at it了解详细文档。

请尝试使用以下选项:

.pipe(minify({
    ext: {
        src: '.js',
        min: '-min.js'
    },
    mangle: { reserved: ['CREATE_ACCOUNT', 'ACCOUNT', 'CONNECT'] // etc
}))