У меня есть задача gulp, чтобы объединить и уменьшить мои js файлы (в массиве filesJs) в главном файле assets.min.js, но мои файлы не объединены в порядке моего массива.
Код:
var gulp = require('gulp');
var gulpConcat = require('gulp-concat');
var gulpPlumber = require('gulp-plumber');
var gulpSourceMaps = require('gulp-sourcemaps');
var gulpUglify = require('gulp-uglify');
var pathSource = 'web/bundles/sf';
var pathSourceJs = pathSource + '/js';
var pathTarget = 'web/bundles/sf/build';
var pathTargetJs = pathTarget + '/js';
var filesJs = [
pathSourceJs + '/jquery.js',
pathSourceJs + '/jquery1.7.2.js',
pathSourceJs + '/jquery.themepunch.plugins.min.js',
pathSourceJs + '/jquery.themepunch.revolution.min.js',
pathSourceJs + '/jquery.stellar.js',
pathSourceJs + '/custom.js',
pathSourceJs + '/jquery.jcarousel.min.js',
pathSourceJs + '/waypoints.js',
pathSourceJs + '/jquery.easypiechart.min.js',
pathSourceJs + '/nimble.js',
pathSourceJs + '/scrollspy.js',
pathSourceJs + '/jquery.fancybox.pack.js',
pathSourceJs + '/jquery.appear.js',
pathSourceJs + '/bootstrap.js',
pathSourceJs + '/counters.js',
pathSourceJs + '/slider.js',
pathSourceJs + '/revolution.js',
pathSourceJs + '/contact.js',
pathSourceJs + '/html5shiv.js',
pathSourceJs + '/respond.min.js'
];
gulp.task('minify-javascript', function () {
return gulp.src(filesJs, {base: pathSource + '/'})
.pipe(gulpPlumber(function(error) {
console.log(error.toString());
this.emit('end');
}))
.pipe(gulpSourceMaps.init())
.pipe(gulpConcat(outputFileNameJs))
.pipe(gulpUglify())
.pipe(gulpSourceMaps.write('.'))
.pipe(gulp.dest(pathTargetJs));
});
Выходной файл в этом порядке (неправильный порядок) минимизируется, чем порядок, заданный в массиве filesJs:
"sources":
[
"js/slider.js",
"js/contact.js",
"js/bootstrap.js",
"js/jquery.js",
"js/jquery1.7.2.js",
"js/jquery.themepunch.plugins.min.js",
"js/jquery.themepunch.revolution.min.js",
"js/jquery.stellar.js",
"js/custom.js",
"js/jquery.jcarousel.min.js",
"js/waypoints.js",
"js/jquery.easypiechart.min.js",
"js/nimble.js",
"js/scrollspy.js",
"js/jquery.fancybox.pack.js",
"js/jquery.appear.js",
"js/counters.js",
"js/revolution.js",
"js/html5shiv.js",
"js/respond.min.js"
]
Конкат в порядке, но не в миниатюре.
Я не понимаю, почему..
Заранее спасибо за помощь
Если ваши js файлы имеют зависимость друг от друга, gulpUglify
, возможно, gulpUglify
порядок заказа.
Попробуйте отключить функцию подъема:
.pipe(gulpUglify({
compress: {hoist_funs: false}
}))