From 4bcabc1614b6903ea82853ae77f45c8c0870ead2 Mon Sep 17 00:00:00 2001 From: Nicolas Coden Date: Wed, 25 Apr 2018 23:55:19 +0200 Subject: [PATCH] chore: add missing callback to gulp sequences As gulp sequences don't return a stream, a callback must be called when its callback job is done. Bug was introduced in https://github.com/zurb/foundation-sites/pull/11119 --- gulp/tasks/customizer.js | 68 ++++++++++++------------- gulp/tasks/deploy.js | 105 ++++++++++++++++++++------------------- gulp/tasks/test.js | 48 +++++++++--------- 3 files changed, 113 insertions(+), 108 deletions(-) diff --git a/gulp/tasks/customizer.js b/gulp/tasks/customizer.js index 9a8cbe27d..041e63147 100644 --- a/gulp/tasks/customizer.js +++ b/gulp/tasks/customizer.js @@ -90,26 +90,26 @@ gulp.task('customizer:prepareSassDeps', function() { }); // Creates a Sass file from the module/variable list and creates foundation.css and foundation.min.css -gulp.task('customizer:sass', function() { +gulp.task('customizer:sass', function(done) { sequence('customizer:loadConfig', 'customizer:prepareSassDeps', function() { - var sassFile = customizer.sass(CUSTOMIZER_CONFIG, MODULE_LIST, VARIABLE_LIST); - - var stream = createStream('foundation.scss', sassFile); - - return stream - .pipe(sass({ - includePaths: [ - 'scss', - 'node_modules/motion-ui/src' - ] - })) - .pipe(postcss([autoprefixer({ - browsers: COMPATIBILITY - })])) - .pipe(gulp.dest(path.join(OUTPUT_DIR, 'css'))) - .pipe(cleancss({ compatibility: 'ie9' })) - .pipe(rename('foundation.min.css')) - .pipe(gulp.dest(path.join(OUTPUT_DIR, 'css'))); + var sassFile = customizer.sass(CUSTOMIZER_CONFIG, MODULE_LIST, VARIABLE_LIST); + var stream = createStream('foundation.scss', sassFile); + + return stream + .pipe(sass({ + includePaths: [ + 'scss', + 'node_modules/motion-ui/src' + ] + })) + .pipe(postcss([autoprefixer({ + browsers: COMPATIBILITY + })])) + .pipe(gulp.dest(path.join(OUTPUT_DIR, 'css'))) + .pipe(cleancss({ compatibility: 'ie9' })) + .pipe(rename('foundation.min.css')) + .pipe(gulp.dest(path.join(OUTPUT_DIR, 'css'))) + .on('end', done); }); }); @@ -152,21 +152,21 @@ gulp.task('customizer:html', ['customizer:loadConfig'], function() { // - Copying the index.html file // - Creating a blank app.css file // - Creating an app.js file with Foundation initialization code -gulp.task('customizer', function() { - sequence('customizer:sass', 'customizer:javascript', 'customizer:html', function(done) { - var outputFolder = path.dirname(OUTPUT_DIR); - var outputFileName = path.basename(OUTPUT_DIR); - - touch(path.join(OUTPUT_DIR, 'css/app.css')); - touch(path.join(OUTPUT_DIR, 'js/app.js')); - fs.writeFileSync(path.join(OUTPUT_DIR, 'js/app.js'), '$(document).foundation()\n'); - - gulp.src(path.join(OUTPUT_DIR, '/**/*')) - .pipe(zip(path.basename(outputFileName) + '.zip')) - .pipe(gulp.dest(outputFolder)) - .on('finish', function() { - rimraf(OUTPUT_DIR, done); - }); +gulp.task('customizer', function(done) { + sequence('customizer:sass', 'customizer:javascript', 'customizer:html', function() { + var outputFolder = path.dirname(OUTPUT_DIR); + var outputFileName = path.basename(OUTPUT_DIR); + + touch(path.join(OUTPUT_DIR, 'css/app.css')); + touch(path.join(OUTPUT_DIR, 'js/app.js')); + fs.writeFileSync(path.join(OUTPUT_DIR, 'js/app.js'), '$(document).foundation()\n'); + + gulp.src(path.join(OUTPUT_DIR, '/**/*')) + .pipe(zip(path.basename(outputFileName) + '.zip')) + .pipe(gulp.dest(outputFolder)) + .on('finish', function() { + rimraf(OUTPUT_DIR, done); + }); }); }); diff --git a/gulp/tasks/deploy.js b/gulp/tasks/deploy.js index 3bc86653f..e7f6b7e06 100644 --- a/gulp/tasks/deploy.js +++ b/gulp/tasks/deploy.js @@ -46,48 +46,50 @@ gulp.task('deploy:version', function() { }); // Generates compiled CSS and JS files and sourcemaps and puts them in the dist/ folder -gulp.task('deploy:dist', function() { +gulp.task('deploy:dist', function(done) { sequence('sass:foundation', 'javascript:foundation', function() { - var cssFilter = filter(['**/*.css'], { restore: true }); - var jsFilter = filter(['**/*.js'], { restore: true }); - var cssSourcemapFilter = filter(['**/*.css.map'], { restore: true }); - var jsSourcemapFilter = filter(['**/*.js.map'], { restore: true }); - - return gulp.src(CONFIG.DIST_FILES) - .pipe(plumber()) - - // --- Source maps --- - // * Copy sourcemaps to the dist folder - // This is done first to avoid collision with minified-sourcemaps. - .pipe(cssSourcemapFilter) - .pipe(gulp.dest('./dist/css')) - .pipe(cssSourcemapFilter.restore) - .pipe(jsSourcemapFilter) - .pipe(gulp.dest('./dist/js')) - .pipe(jsSourcemapFilter.restore) - - // --- Source files --- - // * Copy source files to dist folder - // * Create minified files - // * Create minified-sourcemaps based on standard sourcemaps. - // Sourcemaps are initialized before the ".min" renaming to be able retrieve - // original sourcemaps from source names. - .pipe(cssFilter) - .pipe(gulp.dest('./dist/css')) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(rename({ suffix: '.min' })) - .pipe(cleancss({ compatibility: 'ie9' })) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('./dist/css')) - .pipe(cssFilter.restore) - - .pipe(jsFilter) - .pipe(gulp.dest('./dist/js')) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(rename({ suffix: '.min' })) - .pipe(uglify()) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('./dist/js')); + var cssFilter = filter(['**/*.css'], { restore: true }); + var jsFilter = filter(['**/*.js'], { restore: true }); + var cssSourcemapFilter = filter(['**/*.css.map'], { restore: true }); + var jsSourcemapFilter = filter(['**/*.js.map'], { restore: true }); + + return gulp.src(CONFIG.DIST_FILES) + .pipe(plumber()) + + // --- Source maps --- + // * Copy sourcemaps to the dist folder + // This is done first to avoid collision with minified-sourcemaps. + .pipe(cssSourcemapFilter) + .pipe(gulp.dest('./dist/css')) + .pipe(cssSourcemapFilter.restore) + .pipe(jsSourcemapFilter) + .pipe(gulp.dest('./dist/js')) + .pipe(jsSourcemapFilter.restore) + + // --- Source files --- + // * Copy source files to dist folder + // * Create minified files + // * Create minified-sourcemaps based on standard sourcemaps. + // Sourcemaps are initialized before the ".min" renaming to be able retrieve + // original sourcemaps from source names. + .pipe(cssFilter) + .pipe(gulp.dest('./dist/css')) + .pipe(sourcemaps.init({ loadMaps: true })) + .pipe(rename({ suffix: '.min' })) + .pipe(cleancss({ compatibility: 'ie9' })) + .pipe(sourcemaps.write('.')) + .pipe(gulp.dest('./dist/css')) + .pipe(cssFilter.restore) + + .pipe(jsFilter) + .pipe(gulp.dest('./dist/js')) + .pipe(sourcemaps.init({ loadMaps: true })) + .pipe(rename({ suffix: '.min' })) + .pipe(uglify()) + .pipe(sourcemaps.write('.')) + .pipe(gulp.dest('./dist/js')) + + .pipe(done); }); }); @@ -177,16 +179,17 @@ gulp.task('deploy:templates', function(done) { }); // The Customizer runs this function to generate files it needs -gulp.task('deploy:custom', function() { +gulp.task('deploy:custom', function(done) { sequence('sass:foundation', 'javascript:foundation', function() { - gulp.src('./_build/assets/css/foundation.css') - .pipe(cleancss({ compatibility: 'ie9' })) - .pipe(rename('foundation.min.css')) - .pipe(gulp.dest('./_build/assets/css')); - - return gulp.src('_build/assets/js/foundation.js') - .pipe(uglify()) - .pipe(rename('foundation.min.js')) - .pipe(gulp.dest('./_build/assets/js')); + gulp.src('./_build/assets/css/foundation.css') + .pipe(cleancss({ compatibility: 'ie9' })) + .pipe(rename('foundation.min.css')) + .pipe(gulp.dest('./_build/assets/css')); + + return gulp.src('_build/assets/js/foundation.js') + .pipe(uglify()) + .pipe(rename('foundation.min.js')) + .pipe(gulp.dest('./_build/assets/js')) + .on('end', done); }); }); diff --git a/gulp/tasks/test.js b/gulp/tasks/test.js index dc4b133f3..d37d0469b 100644 --- a/gulp/tasks/test.js +++ b/gulp/tasks/test.js @@ -10,20 +10,21 @@ var rimraf = require('rimraf').sync; var CONFIG = require('../config.js'); // Runs unit tests -gulp.task('test', function(cb) { - sequence('sass:foundation', 'test:transpile-js', 'watch', function() { - browser.init({ - server: { - baseDir: 'test/visual', - directory: true, - routes: { - "/assets": "_build/assets", - "/motion-ui": "node_modules/motion-ui" +gulp.task('test', function(done) { + sequence('sass:foundation', 'test:transpile-js', 'watch', function () { + browser.init({ + server: { + baseDir: 'test/visual', + directory: true, + routes: { + "/assets": "_build/assets", + "/motion-ui": "node_modules/motion-ui" + } } - } + }); + gulp.watch(['test/visual/**/*'], ['test:reload']); + done(); }); - gulp.watch(['test/visual/**/*'], ['test:reload']); -}) }); gulp.task('test:reload', function(done) { @@ -31,14 +32,15 @@ gulp.task('test:reload', function(done) { done(); }); -gulp.task('test:transpile-js', function(cb) { - sequence('javascript:foundation', 'javascript:deps', function() { - rimraf('test/javascript/js-tests.js'); - - return gulp.src(CONFIG.TEST_JS_FILES) - .pipe(babel() - .on('error', onBabelError)) - .pipe(concat('js-tests.js')) - .pipe(gulp.dest('test/javascript')); -}) -}); \ No newline at end of file +gulp.task('test:transpile-js', function(done) { + sequence('javascript:foundation', 'javascript:deps', function () { + rimraf('test/javascript/js-tests.js'); + + return gulp.src(CONFIG.TEST_JS_FILES) + .pipe(babel() + .on('error', onBabelError)) + .pipe(concat('js-tests.js')) + .pipe(gulp.dest('test/javascript')) + .on('end', done); + }); +}); -- 2.47.2