2016-09-15 2 views
1

gulp-uglifyを使用してJavascriptファイルを縮小すると、順序が乱れます。それはjqueryfunctionsファイルと場所jquery上記functions.jsの順序を変更するにuglify行を追加gulp-uglifyはファイルの順序を保持しません

var gulp = require('gulp'); 
var rename = require('gulp-rename'); 
var gp_concat = require('gulp-concat'); 

gulp.task('js', function() { 
    gulp.src([ 
      './public/bower_components/jquery/dist/jquery.min.js', 
      './public/js/functions.js', 
     ]) 
     .pipe(gp_concat('combined.js')) 
     .pipe(gulp.dest(path.js + '/dist')) 
}); 

は、私はこの期待通りに動作し、タスクを考えてみましょう。

var gulp = require('gulp'); 
var rename = require('gulp-rename'); 
var uglify = require('gulp-uglify'); 
var gp_concat = require('gulp-concat'); 

gulp.task('js', function() { 
    gulp.src([ 
      './public/bower_components/jquery/dist/jquery.min.js', 
      './public/js/functions.js', 
     ]) 
     .pipe(gp_concat('combined.js')) 
     .pipe(gulp.dest(path.js + '/dist')) 
     .pipe(uglify({ 
      preserveComments: 'license' 
     })) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(gulp.dest(path.js + '/dist')) 
}); 

可能な方法はありますか? もちろん、functions.jsはfuntionsを持つ平面Javascriptファイルであり、IIFEでラップされていません。

答えて

6

Karol Klepacki's answerhoist_funsの使用についての正しいですが、それはUglifyJS compressorためのオプションです。したがって、compressオプション内に提供する必要があります。

.pipe(uglify({ 
    preserveComments: 'license', 
    compress: { hoist_funs: false } 
})) 
+0

ありがとうございました! – Alvaro

+0

ああ、そうだよ –

0

機能の巻き上げを無効にしてみてください:

var gulp = require('gulp'); 
var rename = require('gulp-rename'); 
var uglify = require('gulp-uglify'); 
var gp_concat = require('gulp-concat'); 

gulp.task('js', function() { 
    gulp.src([ 
      './public/bower_components/jquery/dist/jquery.min.js', 
      './public/js/functions.js', 
     ]) 
     .pipe(gp_concat('combined.js')) 
     .pipe(gulp.dest(path.js + '/dist')) 
     .pipe(uglify({ 
      preserveComments: 'license', 
      hoist_funs: false 
     })) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(gulp.dest(path.js + '/dist')) 
}); 
+0

Nop。同じ結果。 – Alvaro

関連する問題