]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
Use pull request #11454 from ncoden/fix/split-gulp-tasks-11452 for v6.5.0
authorNicolas Coden <nicolas@ncoden.fr>
Sat, 25 Aug 2018 20:34:54 +0000 (22:34 +0200)
committerNicolas Coden <nicolas@ncoden.fr>
Sat, 25 Aug 2018 20:34:54 +0000 (22:34 +0200)
6c45b451e fix: remove broken Sass linting from Sass compilation task and move it to build task
80c6def1f refactor: split the docs build task to `docs:pages` and `docs:search`
6b12883d6 refactor: move the customizer ZIPing to `customizer:zip` and `customizer:clean`

Signed-off-by: Nicolas Coden <nicolas@ncoden.fr>
gulp/tasks/customizer.js
gulp/tasks/docs.js
gulp/tasks/lint.js
gulp/tasks/sass.js
gulpfile.js

index 070e5abc708175b531ee06fedcac86d512846071..cf327db2fb8ce572d1de399706254ade4b5ff02e 100644 (file)
@@ -131,13 +131,8 @@ gulp.task('customizer:html', gulp.series('customizer:loadConfig', function() {
     .pipe(gulp.dest(OUTPUT_DIR));
 }));
 
-// Creates a custom build by:
-//   - Generating a CSS file
-//   - Generating a JS file
-//   - Copying the index.html file
-//   - Creating a blank app.css file
-//   - Creating an app.js file with Foundation initialization code
-gulp.task('customizer', gulp.series('customizer:sass', 'customizer:javascript', 'customizer:html', function(done) {
+// Add main CSS and JS files to the build directory and create a ZIP file from it.
+gulp.task('customizer:zip', function (done) {
   var outputFolder = path.dirname(OUTPUT_DIR);
   var outputFileName = path.basename(OUTPUT_DIR);
 
@@ -145,13 +140,23 @@ gulp.task('customizer', gulp.series('customizer:sass', 'customizer:javascript',
   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, '/**/*'))
+  return gulp.src(path.join(OUTPUT_DIR, '/**/*'))
     .pipe(zip(path.basename(outputFileName) + '.zip'))
-    .pipe(gulp.dest(outputFolder))
-    .on('finish', function() {
-      rimraf(OUTPUT_DIR, done);
-    });
-}));
+    .pipe(gulp.dest(outputFolder));
+});
+
+// Clean the build directory
+gulp.task('customizer:clean', function(done) {
+  rimraf(OUTPUT_DIR, done);
+});
+
+// Creates a custom build by:
+//   - Generating a CSS file
+//   - Generating a JS file
+//   - Copying the index.html file
+//   - Creating a blank app.css file
+//   - Creating an app.js file with Foundation initialization code
+gulp.task('customizer', gulp.series('customizer:sass', 'customizer:javascript', 'customizer:html', 'customizer:zip', 'customizer:clean'));
 
 function createStream(name, content) {
   // Create a stream with our entry file
index b1290fcbd37f3ea5148a54c2de238a48c6b4e9ea..ed41da82b1c34e193181bff48751759523d6573b 100644 (file)
@@ -41,8 +41,13 @@ supercollider
   .adapter('sass')
   .adapter('js');
 
-// Assembles the layout, pages, and partials in the docs folder
-gulp.task('docs', function() {
+// Build the search entries
+gulp.task('docs:search', function (done) {
+  supercollider.buildSearch('_build/data/search.json', done);
+});
+
+// Assembles the modified layout, pages, and partials in the docs folder
+gulp.task('docs:pages', function() {
   return gulp.src('docs/pages/**/*')
     .pipe(newer({
       dest: '_build',
@@ -51,30 +56,28 @@ gulp.task('docs', function() {
     .pipe(supercollider.init())
     .pipe(panini(PANINI_CONFIG))
     .pipe(cacheBust({
-        basePath: '_build/'
+      basePath: '_build/'
     }))
-    .pipe(gulp.dest('_build'))
-    .on('finish', buildSearch);
+    .pipe(gulp.dest('_build'));
 });
 
-gulp.task('docs:all', function() {
+// Assembles layout, pages, and partials in the docs folder, even if not modified
+gulp.task('docs:pages:all', function() {
   panini.refresh();
 
   return gulp.src('docs/pages/**/*')
     .pipe(supercollider.init())
     .pipe(panini(PANINI_CONFIG))
     .pipe(cacheBust({
-        basePath: '_build/'
+      basePath: '_build/'
     }))
-    .pipe(gulp.dest('_build'))
-    .on('finish', buildSearch);
+    .pipe(gulp.dest('_build'));
 });
 
-function buildSearch() {
-  supercollider.buildSearch('_build/data/search.json', function() {});
-}
-
 gulp.task('docs:debug', gulp.series('docs:all', function(done) {
   var output = JSON.stringify(supercollider.tree, null, '  ');
   require('fs').writeFile('./_debug.json', output, done);
 }));
+
+gulp.task('docs', gulp.series('docs:pages', 'docs:search'));
+gulp.task('docs:all', gulp.series('docs:pages:all', 'docs:search'));
index 2c02596bdea666189155beb2ac342c5473cdd62d..a70eb4eac67c1c23dcb3f8493b364bddaca12364 100644 (file)
@@ -1,5 +1,4 @@
 var gulp = require('gulp');
-var plumber = require('gulp-plumber');
 var sassLint = require('gulp-sass-lint');
 var eslint = require('gulp-eslint');
 var CONFIG = require('../config.js');
@@ -7,22 +6,34 @@ var CONFIG = require('../config.js');
 // Lints Sass and JavaScript files for formatting issues
 gulp.task('lint', gulp.series('lint:sass', 'lint:javascript'));
 
-gulp.task('lint:sass', function() {
+// Lints Sass and Javascript without throwing error
+gulp.task('lint:graceful', gulp.series('lint:graceful:sass', 'lint:graceful:javascript'));
+
+function lintSass() {
   return gulp.src(CONFIG.SASS_LINT_FILES)
-    .pipe(plumber())
     .pipe(sassLint({
       config: './.sass-lint.yml'
     }))
-    .pipe(sassLint.format())
-    .pipe(sassLint.failOnError())
-});
+    .pipe(sassLint.format());
+}
 
-gulp.task('lint:javascript', function () {
+function lintJavascript() {
   return gulp.src(CONFIG.JS_FILES)
     .pipe(eslint({
       useEslintrc: true,
       configFile: '.eslintrc'
     }))
-    .pipe(eslint.format())
-    .pipe(eslint.failAfterError());
+    .pipe(eslint.format());
+}
+
+gulp.task('lint:sass', function () {
+  return lintSass()
+    .pipe(sassLint.failOnError());
 });
+gulp.task('lint:javascript', function () {
+  return lintJavascript()
+  .pipe(eslint.failAfterError());
+});
+
+gulp.task('lint:graceful:sass', lintSass);
+gulp.task('lint:graceful:javascript', lintJavascript);
index 19e941d742fdab7e2ae4cb33a6b34f79db019d0a..a961e638f08d77da9fa10a03df6c7767155e2fc5 100644 (file)
@@ -30,14 +30,7 @@ gulp.task('sass:foundation', gulp.series('sass:deps', function() {
     .pipe(sass().on('error', sass.logError))
     .pipe(postcss([autoprefixer()])) // uses ".browserslistrc"
     .pipe(sourcemaps.write('.'))
-    .pipe(gulp.dest('_build/assets/css'))
-    .on('finish', function() {
-      gulp.src(CONFIG.SASS_LINT_FILES)
-        .pipe(sassLint({
-            config: './.sass-lint.yml'
-          }))
-        .pipe(sassLint.format());
-    });
+    .pipe(gulp.dest('_build/assets/css'));
 }));
 
 // Compiles docs Sass (includes Foundation code also)
index e8dee1bd2b12163672dfd3c0f65cdd9404c1cb7e..d751d15f37c241667cc18f969254f40b61da15ad 100644 (file)
@@ -15,7 +15,7 @@ function browserReloadSync(done) {
 }
 
 // Builds the documentation and framework files
-gulp.task('build', gulp.series('clean', 'copy', 'sass', 'javascript', 'docs:all'));
+gulp.task('build', gulp.series('clean', 'copy', 'sass', 'javascript', 'lint:graceful', 'docs:all'));
 
 // Starts a BrowerSync instance
 gulp.task('serve', gulp.series('build', function(done){
@@ -27,7 +27,7 @@ gulp.task('serve', gulp.series('build', function(done){
 gulp.task('watch', function() {
   gulp.watch('docs/**/*', gulp.series('docs', browserReloadSync));
   gulp.watch(['docs/layout/*.html', 'docs/partials/*{html,hbs}', 'docs/assets/partials/*{html,hbs}', 'node_modules/foundation-docs/templates/*{html,hbs}'], gulp.series('docs:all', browserReloadSync));
-  gulp.watch('scss/**/*', gulp.series('sass', browserReloadSync));
+  gulp.watch('scss/**/*', gulp.series('sass:foundation', browserReloadSync));
   gulp.watch(['docs/assets/scss/**/*', 'node_modules/foundation-docs/scss/**/*'], gulp.series('sass:docs', browserReloadSync));
   gulp.watch('js/**/*', gulp.series('javascript:foundation', browserReloadSync));
   gulp.watch(['docs/assets/js/**/*', 'node_modules/foundation-docs/js/**/*'], gulp.series('javascript:docs', browserReloadSync));