2017-01-13 3 views
2

ich minify wollen und verunstalten die alle * .js Dateien in einem Ordner und drücken Sie das Ergebnis in einen anderen Ordner Gulp basierend auf einer bestimmten Bedingung verwendet wird, wie wenn ich pass die env Parameter als prod dann geschieht dies nur, wie in:mit, wenn die Bedingung in schluck Mit verunstalten und minify

Hier mein gulpfile.js ist:

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 
}); 

Nun ist diese für den Betrieb ich so bin mit:

gulp minify_js --env prod 

In diesem Fall, wenn ich --env Wert als prod die verkleinerte Version wird erzeugt geben, die in Ordnung ist, aber es ist nicht in uglify Format.

auch nur für die Referenz gibt es eine js Datei innerhalb von app/js namens test.js und deren Inhalt sich wie folgt:

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

Nach dem Ausführen, 2-Dateien wird innerhalb dist/js nämlich test.js (wessen Inhalt ist gleich) und tests.min.js erzeugt, deren Inhalt so ist :

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

die wie aber nicht die uglified minimierte aussieht.

Also meine Frage ist was ich verpasst habe?

FYI: ich bereits installiert Schluck, Schluck-minify, schlucke-wenn, Gulp-verunstalten, yargs als Entwicklungs Abhängigkeiten.

+0

Sind Sie sicher, dass Sie minify brauchen, wenn Sie bereits hässlich sind? Und bist du dir sicher, dass das Schluck-Uglify-Ergebnis anders ist als das von minify? – degr

+0

Ich meine, versuchen Sie, es nur mit uglify aufzurufen, und überprüfen Sie das Ergebnis. In meinem Fall gibt es eine verkleinerte Datei zurück. Meine config - '.pipe (source (output)) .pipe (gulpif (Profile.environment === 'prod', streamify (uglify()))) .pipe (gulp.dest (projectJsFolder))' – degr

+0

Eigentlich Ich versuchte, indem ich den minify Anruf entfernte und das Ergebnis ist nur die verkleinerte Datei nicht die hässliche Datei. Ich meine, der Inhalt von nur dem Uglify-Fall ist auch dasselbe wie "tests.min.js", aber der Name war "tests.js". –

Antwort

3

Nach Ihren Kommentaren kann ich Schlussfolgerung machen, dass Sie falsche Verständnis von Verkleinerung und Uglification haben. Hier kleines Beispiel:

minimierte nicht und nicht Beispiel uglified:

/** 
* 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; 
} 

hier minimierte Beispiel:

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

Und hier ist uglified Beispiel:

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

Wie Sie siehe, hässliche und verkleinerte Beispiele sehen ähnlich aus. Der einzige Unterschied, der hässlich ist, wird einige Blockbereichsvariablen (wie Funktionsargumene) in einen Buchstaben umbenennen oder einige Ersetzungen vornehmen, wie zum Beispiel false!1, true!0.

Die Implementierung der Minification kann sich von einer Bibliothek zu einer anderen Bibliothek unterscheiden, und möglicherweise verwenden Sie dieselben Funktionsaufrufe zweimal, aber mit unterschiedlichen Namen.

+0

Danke dafür, also was soll ich tun, um den Code unlesbar zu machen. Ich meine, welches Plugin dafür zu verwenden ist. –

+0

Ich kann nur die Handlung hässlich machen. – degr

+0

Danke für den Rat. –