簡體   English   中英

gulp-uglify不會保留文件順序

[英]gulp-uglify won't preserve files order

當我使用gulp-uglify來縮小Javascript文件時,訂單會搞砸。

讓我們說我的任務按預期工作:

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

將uglify行添加到它會改變jqueryfunctions文件的順序,並將functions.js放在jquery之上。

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只是一個帶有函數的平面Javascript文件,並沒有包含在IIFE中。

Karol Klepacki的答案對於使用hoist_funs是正確的,但這是UglifyJS壓縮器的一個選項。 因此,需要在compress選項中提供:

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

請嘗試禁用掛起功能:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM