From: Nicolas Coden Date: Wed, 16 Nov 2016 16:58:15 +0000 (+0100) Subject: Reorganize gulp files X-Git-Tag: v6.3-rc1~17^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a39628e3b973d06b7c88ca666d49d30b2553c21;p=thirdparty%2Ffoundation%2Ffoundation-sites.git Reorganize gulp files Major changes: - move all config variables from gulp files to `gulp/config.js` - move gulp task files to `gulp/tasks` - move `doiuse` gulp task to `gulp/tasks/check.js` Other changes: - rename some config variables --- diff --git a/gulp/config.js b/gulp/config.js new file mode 100644 index 000000000..ae370342b --- /dev/null +++ b/gulp/config.js @@ -0,0 +1,77 @@ +module.exports = { + + // Javascript + JS_FILES: [ + 'js/foundation.core.js', + 'js/foundation.util.*.js', + 'js/*.js' + ], + + JS_DEPS: [ + 'node_modules/jquery/dist/jquery.js', + 'node_modules/motion-ui/dist/motion-ui.js', + 'node_modules/what-input/what-input.js' + ], + + JS_DOCS: [ + 'node_modules/clipboard/dist/clipboard.js', + 'node_modules/corejs-typeahead/dist/typeahead.bundle.js', + 'node_modules/foundation-docs/js/**/*.js', + 'docs/assets/js/docs.*.js', + 'docs/assets/js/docs.js' + ], + + // Sass + SASS_DEPS_PATHS: [ + 'node_modules/normalize-scss/sass' + ], + + SASS_DOC_PATHS: [ + 'scss', + 'node_modules/motion-ui/src', + 'node_modules/foundation-docs/scss' + ], + + SASS_LINT_FILES: [ + 'scss/**/*.scss', + ], + + CSS_COMPATIBILITY: [ + 'last 2 versions', + 'ie >= 9', + 'Android >= 2.3', + 'ios >= 7' + ], + + // Assets + ASSETS_FILES: [ + 'docs/assets/**/*', + '!docs/assets/{js,scss}', + '!docs/assets/{js,scss}/**/*' + ], + + // Dist + VERSIONED_FILES: [ + 'bower.json', + 'composer.json', + 'docs/pages/installation.md', + 'js/foundation.core.js', + 'meteor-README.md', + 'package.js', + 'package.json', + 'scss/foundation.scss' + ], + + DIST_FILES: [ + './_build/assets/css/foundation.css', + './_build/assets/css/foundation-flex.css', + './_build/assets/css/foundation-rtl.css', + '_build/assets/js/foundation.js' + ], + + // Tests + TEST_JS_FILES: [ + 'test/javascript/components/**/*.js', + 'test/javascript/util/**/*.js' + ] +}; diff --git a/gulp/babel-error.js b/gulp/tasks/babel-error.js similarity index 100% rename from gulp/babel-error.js rename to gulp/tasks/babel-error.js diff --git a/gulp/tasks/check.js b/gulp/tasks/check.js new file mode 100644 index 000000000..f5d4126aa --- /dev/null +++ b/gulp/tasks/check.js @@ -0,0 +1,18 @@ +'use strict'; + +var gulp = require('gulp'); +var postcss = require('gulp-postcss'); +var doiuse = require('doiuse'); + +var CONFIG = require('../config.js'); + +// Check browser support +gulp.task('check:browserSupport', function() { + return gulp.src(['_build/assets/css/foundation.css']) + .pipe(postcss([doiuse({ + browsers: CONFIG.COMPATIBILITY, + onFeatureUsage: function (usageInfo) { + console.log(usageInfo.message) + } + })])) +}); diff --git a/gulp/clean.js b/gulp/tasks/clean.js similarity index 100% rename from gulp/clean.js rename to gulp/tasks/clean.js diff --git a/gulp/copy.js b/gulp/tasks/copy.js similarity index 52% rename from gulp/copy.js rename to gulp/tasks/copy.js index 2cbfb8cfe..bdd94eee8 100644 --- a/gulp/copy.js +++ b/gulp/tasks/copy.js @@ -1,13 +1,9 @@ var gulp = require('gulp'); -var FILES = [ - 'docs/assets/**/*', - '!docs/assets/{js,scss}', - '!docs/assets/{js,scss}/**/*' -]; +var CONFIG = require('../config.js'); // Copies static assets gulp.task('copy', function() { - gulp.src(FILES) + gulp.src(CONFIG.ASSETS_FILES) .pipe(gulp.dest('_build/assets')); }); diff --git a/gulp/customizer.js b/gulp/tasks/customizer.js similarity index 95% rename from gulp/customizer.js rename to gulp/tasks/customizer.js index 9d455cf65..ea53e0ffd 100644 --- a/gulp/customizer.js +++ b/gulp/tasks/customizer.js @@ -2,7 +2,7 @@ var addSrc = require('gulp-add-src'); var babel = require('gulp-babel'); var concat = require('gulp-concat'); var cssnano = require('gulp-cssnano'); -var customizer = require('../customizer/lib'); +var customizer = require('../../customizer/lib'); var File = require('vinyl'); var fs = require('fs'); var gulp = require('gulp'); @@ -22,7 +22,7 @@ var yargs = require('yargs'); var zip = require('gulp-zip'); var ARGS = require('yargs').argv; -var FOUNDATION_VERSION = require('../package.json').version; +var FOUNDATION_VERSION = require('../../package.json').version; var OUTPUT_DIR = ARGS.output || 'custom-build'; var COMPATIBILITY = [ 'last 2 versions', @@ -36,7 +36,7 @@ var VARIABLE_LIST; // Load the configuration file for the customizer. It's a list of modules to load and Sass variables to override gulp.task('customizer:loadConfig', function(done) { fs.readFile('customizer/config.yml', function(err, data) { - var moduleListPath = ARGS.modules || '../customizer/complete'; + var moduleListPath = ARGS.modules || 'customizer/complete'; var moduleList = require(moduleListPath); CUSTOMIZER_CONFIG = yaml(data.toString()); diff --git a/gulp/deploy.js b/gulp/tasks/deploy.js similarity index 90% rename from gulp/deploy.js rename to gulp/tasks/deploy.js index ec67d11fd..b255c3f2d 100644 --- a/gulp/deploy.js +++ b/gulp/tasks/deploy.js @@ -13,25 +13,8 @@ var inquirer = require('inquirer'); var exec = require('child_process').execSync; var plumber = require('gulp-plumber'); -var VERSIONED_FILES = [ - 'bower.json', - 'composer.json', - 'docs/pages/installation.md', - 'js/foundation.core.js', - 'meteor-README.md', - 'package.js', - 'package.json', - 'scss/foundation.scss' -]; - -var DIST_FILES = [ - './_build/assets/css/foundation.css', - './_build/assets/css/foundation-flex.css', - './_build/assets/css/foundation-rtl.css', - '_build/assets/js/foundation.js' -]; - -var CURRENT_VERSION = require('../package.json').version; +var CONFIG = require('../config.js'); +var CURRENT_VERSION = require('../../package.json').version; var NEXT_VERSION; gulp.task('deploy', function(cb) { @@ -56,7 +39,7 @@ gulp.task('deploy:prompt', function(cb) { // Bumps the version number in any file that has one gulp.task('deploy:version', function() { - return gulp.src(VERSIONED_FILES, { base: process.cwd() }) + return gulp.src(CONFIG.VERSIONED_FILES, { base: process.cwd() }) .pipe(replace(CURRENT_VERSION, NEXT_VERSION)) .pipe(gulp.dest('.')); }); @@ -66,7 +49,7 @@ gulp.task('deploy:dist', ['sass:foundation', 'javascript:foundation'], function( var cssFilter = filter(['*.css'], { restore: true }); var jsFilter = filter(['*.js'], { restore: true }); - return gulp.src(DIST_FILES) + return gulp.src(CONFIG.DIST_FILES) .pipe(plumber()) .pipe(cssFilter) .pipe(gulp.dest('./dist/css')) diff --git a/gulp/docs.js b/gulp/tasks/docs.js similarity index 100% rename from gulp/docs.js rename to gulp/tasks/docs.js diff --git a/gulp/javascript.js b/gulp/tasks/javascript.js similarity index 58% rename from gulp/javascript.js rename to gulp/tasks/javascript.js index 51e089155..052c3ed71 100644 --- a/gulp/javascript.js +++ b/gulp/tasks/javascript.js @@ -3,31 +3,13 @@ var concat = require('gulp-concat'); var babel = require('gulp-babel'); var onBabelError = require('./babel-error.js'); -var FOUNDATION = [ - 'js/foundation.core.js', - 'js/foundation.util.*.js', - 'js/*.js' -]; - -var DEPS = [ - 'node_modules/jquery/dist/jquery.js', - 'node_modules/motion-ui/dist/motion-ui.js', - 'node_modules/what-input/what-input.js' -]; - -var DOCS = [ - 'node_modules/clipboard/dist/clipboard.js', - 'node_modules/corejs-typeahead/dist/typeahead.bundle.js', - 'node_modules/foundation-docs/js/**/*.js', - 'docs/assets/js/docs.*.js', - 'docs/assets/js/docs.js' -]; +var CONFIG = require('../config.js'); // Compiles JavaScript into a single file gulp.task('javascript', ['javascript:foundation', 'javascript:deps', 'javascript:docs']); gulp.task('javascript:foundation', function() { - return gulp.src(FOUNDATION) + return gulp.src(CONFIG.JS_FILES) .pipe(babel() .on('error', onBabelError)) .pipe(gulp.dest('_build/assets/js/plugins')) @@ -36,13 +18,13 @@ gulp.task('javascript:foundation', function() { }); gulp.task('javascript:deps', function() { - return gulp.src(DEPS) + return gulp.src(CONFIG.JS_DEPS) .pipe(concat('vendor.js')) .pipe(gulp.dest('_build/assets/js')); }); gulp.task('javascript:docs', function() { - return gulp.src(DOCS) + return gulp.src(CONFIG.JS_DOCS) .pipe(concat('docs.js')) .pipe(gulp.dest('_build/assets/js')); }); diff --git a/gulp/lint.js b/gulp/tasks/lint.js similarity index 83% rename from gulp/lint.js rename to gulp/tasks/lint.js index 118263a7d..b7b908729 100644 --- a/gulp/lint.js +++ b/gulp/tasks/lint.js @@ -3,16 +3,13 @@ var plumber = require('gulp-plumber'); var sassLint = require('gulp-sass-lint'); var eslint = require('gulp-eslint'); -var PATHS = [ - 'scss/**/*.scss', - '!scss/components_old/**/*.scss' -]; +var CONFIG = require('../config.js'); // Lints Sass and JavaScript files for formatting issues gulp.task('lint', ['lint:sass', 'lint:javascript']); gulp.task('lint:sass', function() { - return gulp.src(PATHS) + return gulp.src(CONFIG.SASS_LINT_FILES) .pipe(plumber()) .pipe(sassLint({ config: './.sass-lint.yml' @@ -22,7 +19,7 @@ gulp.task('lint:sass', function() { }); gulp.task('lint:javascript', function () { - return gulp.src(['js/*.js']) + return gulp.src([CONFIG.JS_FILES]) .pipe(eslint({ useEslintrc: true, configFile: '.eslintrc' diff --git a/gulp/sass.js b/gulp/tasks/sass.js similarity index 66% rename from gulp/sass.js rename to gulp/tasks/sass.js index 912af19b9..5f0ffaeba 100644 --- a/gulp/sass.js +++ b/gulp/tasks/sass.js @@ -9,29 +9,8 @@ var autoprefixer = require('gulp-autoprefixer'); var plumber = require('gulp-plumber'); var sourcemaps = require('gulp-sourcemaps'); var sassLint = require('gulp-sass-lint'); -var doiuse = require('doiuse'); -var postcss = require('gulp-postcss'); -var PATHS = [ - 'scss', - 'node_modules/normalize-scss/sass' -]; - -var DOC_PATHS = PATHS.concat([ - 'node_modules/motion-ui/src', - 'node_modules/foundation-docs/scss' -]); - -var LINT_PATHS = [ - 'scss/**/*.scss' -]; - -var COMPATIBILITY = [ - 'last 2 versions', - 'ie >= 9', - 'Android >= 2.3', - 'ios >= 7' -]; +var CONFIG = require('../config.js'); // Compiles Sass files into CSS gulp.task('sass', ['sass:foundation', 'sass:docs']); @@ -42,15 +21,15 @@ gulp.task('sass:foundation', function() { .pipe(sourcemaps.init()) .pipe(plumber()) .pipe(sass({ - includePaths: PATHS + includePaths: CONFIG.SASS_DEPS_PATHS }).on('error', sass.logError)) .pipe(autoprefixer({ - browsers: COMPATIBILITY + browsers: CONFIG.CSS_COMPATIBILITY })) .pipe(sourcemaps.write('.')) .pipe(gulp.dest('_build/assets/css')) .on('finish', function() { - gulp.src(LINT_PATHS) + gulp.src(CONFIG.SASS_LINT_FILES) .pipe(sassLint({ config: './.sass-lint.yml' })) @@ -63,10 +42,10 @@ gulp.task('sass:docs', function() { return gulp.src('docs/assets/scss/docs.scss') .pipe(sourcemaps.init()) .pipe(sass({ - includePaths: DOC_PATHS + includePaths: CONFIG.SASS_DEPS_PATHS.concat(CONFIG.SASS_DOC_PATHS) }).on('error', sass.logError)) .pipe(autoprefixer({ - browsers: COMPATIBILITY + browsers: CONFIG.CSS_COMPATIBILITY })) .pipe(sourcemaps.write('.')) .pipe(gulp.dest('_build/assets/css')); @@ -81,14 +60,3 @@ gulp.task('sass:audit', ['sass:foundation'], function(cb) { cb(); }); }); - -// Check browsers incompatibilities -gulp.task('sass:doiuse', function() { - return gulp.src(['_build/assets/css/foundation.css']) - .pipe(postcss([doiuse({ - browsers: COMPATIBILITY, - onFeatureUsage: function (usageInfo) { - console.log(usageInfo.message) - } - })])) -}); diff --git a/gulp/test.js b/gulp/tasks/test.js similarity index 89% rename from gulp/test.js rename to gulp/tasks/test.js index ef1738aa8..d61361025 100644 --- a/gulp/test.js +++ b/gulp/tasks/test.js @@ -7,10 +7,7 @@ var babel = require('gulp-babel'); var onBabelError = require('./babel-error.js'); var rimraf = require('rimraf').sync; -var JSTESTS = [ - 'test/javascript/components/**/*.js', - 'test/javascript/util/**/*.js' -]; +var CONFIG = require('../config.js'); // Runs unit tests gulp.task('test', ['sass:foundation', 'test:transpile-js', 'watch'], function() { @@ -35,7 +32,7 @@ gulp.task('test:reload', function(done) { gulp.task('test:transpile-js', ['javascript:foundation', 'javascript:deps'], function() { rimraf('test/javascript/js-tests.js'); - return gulp.src(JSTESTS) + return gulp.src(CONFIG.TEST_JS_FILES) .pipe(babel() .on('error', onBabelError)) .pipe(concat('js-tests.js')) diff --git a/gulpfile.js b/gulpfile.js index f090b5a1b..a66c002e1 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -3,7 +3,7 @@ var browser = require('browser-sync'); var requireDir = require('require-dir'); var port = process.env.SERVER_PORT || 3000; -requireDir('./gulp'); +requireDir('./gulp/tasks'); // Builds the documentation and framework files gulp.task('build', ['clean', 'copy', 'docs:all', 'sass', 'javascript']);