.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);
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
.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',
.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'));
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');
// 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);
.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)
}
// 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){
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));