gulp-uglify不会保存文件顺序

时间:2016-09-15 12:04:41

标签: javascript gulp minify uglifyjs gulp-uglify

当我使用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中。

2 个答案:

答案 0 :(得分:8)

Karol Klepacki's answer关于使用hoist_funs是否正确,但这是UglifyJS compressor的选项。因此,需要在compress选项中提供:

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

答案 1 :(得分:0)

请尝试禁用吊装功能:

mysqli_fetch_array()