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 行会更改 jquery
和 functions
文件的顺序,并将 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 中。
请尝试禁用功能提升:
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'))
});
is correct about using hoist_funs
, but that's an option for the UglifyJS compressor。因此,需要在 compress
选项中提供:
.pipe(uglify({
preserveComments: 'license',
compress: { hoist_funs: false }
}))
当我使用 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 行会更改 jquery
和 functions
文件的顺序,并将 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 中。
请尝试禁用功能提升:
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'))
});
hoist_funs
, but that's an option for the UglifyJS compressor。因此,需要在 compress
选项中提供:
.pipe(uglify({
preserveComments: 'license',
compress: { hoist_funs: false }
}))