最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

javascript - gulp-uglify won't preserve files order - Stack Overflow

matteradmin8PV0评论

When I use gulp-uglify to minify the Javascript files the order gets messed up.

Lets say I have this task working as expected:

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

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

Adding the uglify line to it changes the order of the jquery and functions files and places functions.js above 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_ponents/jquery/dist/jquery.min.js',
            './public/js/functions.js',
        ])
        .pipe(gp_concat('bined.js'))
        .pipe(gulp.dest(path.js + '/dist'))
        .pipe(uglify({
            preserveComments: 'license'
        }))
        .pipe(rename({suffix: '.min'}))
        .pipe(gulp.dest(path.js + '/dist'))
});

Any possible solution to it ? Of course, functions.js is just a plane Javascript file with funtions in it and are not wrapped in an IIFE.

When I use gulp-uglify to minify the Javascript files the order gets messed up.

Lets say I have this task working as expected:

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

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

Adding the uglify line to it changes the order of the jquery and functions files and places functions.js above 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_ponents/jquery/dist/jquery.min.js',
            './public/js/functions.js',
        ])
        .pipe(gp_concat('bined.js'))
        .pipe(gulp.dest(path.js + '/dist'))
        .pipe(uglify({
            preserveComments: 'license'
        }))
        .pipe(rename({suffix: '.min'}))
        .pipe(gulp.dest(path.js + '/dist'))
});

Any possible solution to it ? Of course, functions.js is just a plane Javascript file with funtions in it and are not wrapped in an IIFE.

Share Improve this question asked Sep 15, 2016 at 12:04 AlvaroAlvaro 41.6k31 gold badges172 silver badges348 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 9

Karol Klepacki's answer is correct about using hoist_funs, but that's an option for the UglifyJS pressor. As such it needs to be provided within the press option:

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

Please try disabling functions hoisting:

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_ponents/jquery/dist/jquery.min.js',
            './public/js/functions.js',
        ])
        .pipe(gp_concat('bined.js'))
        .pipe(gulp.dest(path.js + '/dist'))
        .pipe(uglify({
            preserveComments: 'license',
            hoist_funs: false
        }))
        .pipe(rename({suffix: '.min'}))
        .pipe(gulp.dest(path.js + '/dist'))
});
Post a comment

comment list (0)

  1. No comments so far