2017-06-01 43 views
0

我正在使用gulp-uglify和我的gulp設置來使我的js代碼適用於生產環境。如何防止`gulp-uglify`移動我的全局變量?

我有這樣

var test = 1; 

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

    return myTest; 
} 

代碼然而,當我運行一飲而盡輸出變爲(我一直是乾淨的可讀性)

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.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')); 

}); 

回答

1

hoist_funs選項設置爲false

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

這是給我以下錯誤'events.js:160 throw er; //未處理'錯誤'事件 ^ GulpUglifyError:無法縮小JavaScript'這就是我稱之爲'uglify({hoist_funs:false})' –

+0

@MikeA添加了正確的語法,以防止問題出現。 'hoist_funs'屬於'compress'選項。 –

+0

非常感謝。那樣做了! –