diff --git a/gulpfile.js b/gulpfile.js index 801a39862c..a6a8811267 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -13,6 +13,7 @@ var lazypipe = require('lazypipe'); var less = require('gulp-less'); var merge = require('merge-stream'); var minifyCss = require('gulp-minify-css'); +var order = require('gulp-order'); var plumber = require('gulp-plumber'); var rev = require('gulp-rev'); var runSequence = require('run-sequence'); @@ -63,6 +64,14 @@ var enabled = { // Path to the compiled assets manifest in the dist directory var revManifest = path.dist + 'assets.json'; +// Transform absolute paths into project relative paths. +// This is needed due to https://github.com/sirlantis/gulp-order/issues/11 +var makeRelative = function(globs) { + return globs.map(function (glob) { + return require('path').relative(__dirname, glob); + }); +}; + // ## Reusable Pipelines // See https://github.com/OverZealous/lazypipe @@ -70,10 +79,11 @@ var revManifest = path.dist + 'assets.json'; // Example // ``` // gulp.src(cssFiles) -// .pipe(cssTasks('main.css') +// .pipe(cssTasks('main.css', cssFiles) +// .pipe(order(cssFiles) // .pipe(gulp.dest(path.dist + 'styles')) // ``` -var cssTasks = function(filename) { +var cssTasks = function(filename, globs) { return lazypipe() .pipe(function() { return gulpif(!enabled.failStyleTask, plumber()); @@ -92,6 +102,7 @@ var cssTasks = function(filename) { errLogToConsole: !enabled.failStyleTask })); }) + .pipe(order, makeRelative(globs)) .pipe(concat, filename) .pipe(autoprefixer, { browsers: [ @@ -119,14 +130,16 @@ var cssTasks = function(filename) { // Example // ``` // gulp.src(jsFiles) -// .pipe(jsTasks('main.js') +// .pipe(jsTasks('main.js', jsFiles) +// .pipe(order(jsFiles) // .pipe(gulp.dest(path.dist + 'scripts')) // ``` -var jsTasks = function(filename) { +var jsTasks = function(filename, globs) { return lazypipe() .pipe(function() { return gulpif(enabled.maps, sourcemaps.init()); }) + .pipe(order, makeRelative(globs)) .pipe(concat, filename) .pipe(uglify) .pipe(function() { @@ -161,14 +174,14 @@ var writeToManifest = function(directory) { gulp.task('styles', ['wiredep'], function() { var merged = merge(); manifest.forEachDependency('css', function(dep) { - var cssTasksInstance = cssTasks(dep.name); + var cssTasksInstance = cssTasks(dep.name, dep.globs); if (!enabled.failStyleTask) { cssTasksInstance.on('error', function(err) { console.error(err.message); this.emit('end'); }); } - merged.add(gulp.src(dep.globs, {base: 'styles'}) + merged.add(gulp.src(dep.globs, {base: './'}) .pipe(cssTasksInstance)); }); return merged @@ -182,8 +195,8 @@ gulp.task('scripts', ['jshint'], function() { var merged = merge(); manifest.forEachDependency('js', function(dep) { merged.add( - gulp.src(dep.globs, {base: 'scripts'}) - .pipe(jsTasks(dep.name)) + gulp.src(dep.globs, {base: './'}) + .pipe(jsTasks(dep.name, dep.globs)) ); }); return merged diff --git a/package.json b/package.json index 9a3d02403d..925bdb56ab 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "gulp-jshint": "^1.9.4", "gulp-less": "^3.0.2", "gulp-minify-css": "^1.0.0", + "gulp-order": "^1.1.1", "gulp-plumber": "^1.0.0", "gulp-rename": "^1.2.0", "gulp-rev": "^3.0.1",