2017-01-13 137 views
2

與if條件再壓縮我要來縮小和醜化的文件夾中的所有* .js文件文件,並使用咕嘟咕嘟基於一定條件的結果推到另一個文件夾,就像如果我通過在ENV參數爲督促那麼只有這應該發生在:使用醜化並一飲而盡

這裏是我的gulpfile.js

var gulp     = require('gulp'); 
var gminify     = require('gulp-minify'); 
var gif      = require('gulp-if'); 
var guglify     = require('gulp-uglify'); 
var args     = require('yargs').argv; 


gulp.task('minify_js', function(){ 
    return gulp 
      .src('app/js/*.js')//TAKE ALL THE JS FILES FROM THE FOLDER 
      .pipe(gif(args.env === "prod", gminify()))//DO MINIFY ONLY IN CASE env === prod 
      .pipe(gif(args.env === "prod", guglify())) 
      .pipe(gulp.dest('dist/js'));//PASTES THEM TO dist/js folder after processing 
}); 

現在運行該我用的是這樣的:

gulp minify_js --env prod 

在這種情況下,每當我給--env督促縮小的版本獲取生成這是好,但它不是在醜化格式。

也只是參考有一個JS文件中應用程序/ JS命名test.js,其內容如下:

var abc = function(){ 
    console.log("This is just a test message"); 
}; 
abc(); 

運行,2檔後dist/jstest.js(其內容相同)和tests.min.js其內容如下:

var abc=function(){console.log("This is just a test message")};abc(); 

它看起來像精縮但不是變醜

所以我的問題是我錯過了什麼?

FYI:我已經安裝咕嘟咕嘟大口喝,縮小,大口喝,如果大口喝,醜化,yargs作爲發展的依賴。

+0

你確定你需要縮小,如果你已經做了uglify?你確定,這個結果會不同於最小化? – degr

+0

我的意思是,只嘗試用uglify調用它,然後檢查結果。在我的情況下,它會返回縮小的文件。我的配置 - '.pipe(源(輸出)) .pipe(gulpif(Profile.environment ==='prod',streamify(uglify()))) .pipe(gulp.dest(projectJsFolder))' – degr

+0

其實我試圖通過刪除minify調用,結果只是縮小的文件而不是醜化的文件。我的意思是,uglify案件的內容與'tests.min.js'相同,但名稱是'tests.js'。 –

回答

3

根據您的意見,我可以做出結論,您對縮小和醜化有不正確的理解。下面是小例子:

不精縮,而不是變醜例如:

/** 
* This class describe animal class 
* 
*/ 
class Animal(name) { 
    this.name = name !== false ? name : "animal"; 
} 
function wrapName(name) { 
    var length = name.length; 
    return length < 5 ? "My name: " + name : name; 
} 

這裏已經過壓縮例如:

class Animal(name){this.name=name!==false?name:"animal";}function wrapName(name){var length=name.length;return length<5?"My name: "+name:name;} 

這裏是變醜例如:

class Animal(n){this.name=!!n?n:"animal";}function wrapName(n){return n.length<5?"My name: "+n:n;} 

正如你看,醜化和縮小的例子看起來非常相似。 uglify的唯一區別是(可以)將某些塊範圍變量(如函數argumens)重命名爲一個字母,或者執行一些替換,如false!1,true!0

縮小的實現可能會從一個庫到另一個庫不同,並且可能您使用了兩次相同的函數調用,但名稱不同。

+0

謝謝你,所以我應該怎麼做才能讓代碼不可讀。我的意思是使用哪個插件。 –

+0

我只能建議做uglify動作。 – degr

+0

感謝您的建議。 –