【问题标题】:How to prevent `gulp-uglify` from moving my global variables?如何防止`gulp-uglify`移动我的全局变量?
【发布时间】:2017-06-01 22:18:16
【问题描述】:

我正在使用 gulp-uglify 和我的 gulp 设置来为生产环境模拟我的 js 代码。

我有这样的代码

var test = 1;

function getTest(myTest)
{
   if(!myTest) {
      return test;
   }

  return myTest;
}

但是,当我运行 gulp 时,输出变为(为了便于阅读,我将其保持干净)

function getTest(myTest)
{
   if(!myTest) {
      return test;
   }

  return myTest;
}
var test = 1;

如何防止gulp-uglify 更改顺序或我的全局变量。

我首先连接我的文件,然后进行 uglify。

我尝试将以下对象传递给uglify,但它仍在改变顺序。

uglify({ mangle: false })
uglify({ mangle: { reserved: ['test'] } })

这里是依赖列表

  "license": "ISC",
  "devDependencies": {
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "^3.1.1",
    "gulp-concat": "^2.6.0",
    "gulp-debug": "^2.1.2",
    "gulp-ignore": "^2.0.1",
    "gulp-minify-css": "^1.2.4",
    "gulp-sass": "^2.3.2",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-uglify": "^2.0.0",
    "gulp-util": "^3.0.7"
  }

这是我的 gulp 任务

gulp.task('compileJs', function () {
        gulp.src(jsFiles['final'])
               .pipe(sourcemaps.init())
               //only uglify if gulp is ran with '--type production'
               .pipe(isProduction() ? uglify() : gutil.noop())
               .pipe(concat('final.js'))
               .pipe(sourcemaps.write())
               .pipe(gulp.dest('./Public/Js'));

});

【问题讨论】:

    标签: javascript node.js gulp gulp-uglify


    【解决方案1】:

    hoist_funs 选项设置为false

    .pipe(uglify({
        compress: {
            hoist_funs: false
        }
    })
    

    【讨论】:

    • 这给了我以下错误events.js:160 throw er; // Unhandled 'error' event ^ GulpUglifyError: unable to minify JavaScript 这就是我所说的`uglify({hoist_funs: false })`
    • @MikeA 添加了正确的语法,以防万一这是您的问题所在。 hoist_funs 属于 compress 选项。
    • 非常感谢。做到了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多