NPM: Upgrade to Gulp 4

No functional changes. Besides slightly faster thanks to parallel tasks and future proof.
This commit is contained in:
Pablo Vazquez 2018-11-10 01:08:30 +01:00
parent aa63389b4f
commit e2432f6e9f
2 changed files with 45 additions and 37 deletions

View File

@ -1,20 +1,20 @@
var argv = require('minimist')(process.argv.slice(2)); let argv = require('minimist')(process.argv.slice(2));
var autoprefixer = require('gulp-autoprefixer'); let autoprefixer = require('gulp-autoprefixer');
var cache = require('gulp-cached'); let cache = require('gulp-cached');
var chmod = require('gulp-chmod'); let chmod = require('gulp-chmod');
var concat = require('gulp-concat'); let concat = require('gulp-concat');
var git = require('gulp-git'); let git = require('gulp-git');
var gulpif = require('gulp-if'); let gulpif = require('gulp-if');
var gulp = require('gulp'); let gulp = require('gulp');
var livereload = require('gulp-livereload'); let livereload = require('gulp-livereload');
var plumber = require('gulp-plumber'); let plumber = require('gulp-plumber');
var pug = require('gulp-pug'); let pug = require('gulp-pug');
var rename = require('gulp-rename'); let rename = require('gulp-rename');
var sass = require('gulp-sass'); let sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps'); let sourcemaps = require('gulp-sourcemaps');
var uglify = require('gulp-uglify-es').default; let uglify = require('gulp-uglify-es').default;
var enabled = { let enabled = {
uglify: argv.production, uglify: argv.production,
maps: !argv.production, maps: !argv.production,
failCheck: !argv.production, failCheck: !argv.production,
@ -24,20 +24,20 @@ var enabled = {
chmod: argv.production, chmod: argv.production,
}; };
var destination = { let destination = {
css: 'pillar/web/static/assets/css', css: 'pillar/web/static/assets/css',
pug: 'pillar/web/templates', pug: 'pillar/web/templates',
js: 'pillar/web/static/assets/js', js: 'pillar/web/static/assets/js',
} }
var source = { let source = {
bootstrap: 'node_modules/bootstrap/', bootstrap: 'node_modules/bootstrap/',
jquery: 'node_modules/jquery/', jquery: 'node_modules/jquery/',
popper: 'node_modules/popper.js/' popper: 'node_modules/popper.js/'
} }
/* CSS */ /* Stylesheets */
gulp.task('styles', function() { gulp.task('styles', function(done) {
gulp.src('src/styles/**/*.sass') gulp.src('src/styles/**/*.sass')
.pipe(gulpif(enabled.failCheck, plumber())) .pipe(gulpif(enabled.failCheck, plumber()))
.pipe(gulpif(enabled.maps, sourcemaps.init())) .pipe(gulpif(enabled.maps, sourcemaps.init()))
@ -48,11 +48,12 @@ gulp.task('styles', function() {
.pipe(gulpif(enabled.maps, sourcemaps.write("."))) .pipe(gulpif(enabled.maps, sourcemaps.write(".")))
.pipe(gulp.dest(destination.css)) .pipe(gulp.dest(destination.css))
.pipe(gulpif(argv.livereload, livereload())); .pipe(gulpif(argv.livereload, livereload()));
done();
}); });
/* Templates - Pug */ /* Templates */
gulp.task('templates', function() { gulp.task('templates', function(done) {
gulp.src('src/templates/**/*.pug') gulp.src('src/templates/**/*.pug')
.pipe(gulpif(enabled.failCheck, plumber())) .pipe(gulpif(enabled.failCheck, plumber()))
.pipe(gulpif(enabled.cachify, cache('templating'))) .pipe(gulpif(enabled.cachify, cache('templating')))
@ -61,11 +62,12 @@ gulp.task('templates', function() {
})) }))
.pipe(gulp.dest(destination.pug)) .pipe(gulp.dest(destination.pug))
.pipe(gulpif(argv.livereload, livereload())); .pipe(gulpif(argv.livereload, livereload()));
done();
}); });
/* Individual Uglified Scripts */ /* Individual Uglified Scripts */
gulp.task('scripts', function() { gulp.task('scripts', function(done) {
gulp.src('src/scripts/*.js') gulp.src('src/scripts/*.js')
.pipe(gulpif(enabled.failCheck, plumber())) .pipe(gulpif(enabled.failCheck, plumber()))
.pipe(gulpif(enabled.cachify, cache('scripting'))) .pipe(gulpif(enabled.cachify, cache('scripting')))
@ -76,6 +78,7 @@ gulp.task('scripts', function() {
.pipe(gulpif(enabled.chmod, chmod(0o644))) .pipe(gulpif(enabled.chmod, chmod(0o644)))
.pipe(gulp.dest(destination.js)) .pipe(gulp.dest(destination.js))
.pipe(gulpif(argv.livereload, livereload())); .pipe(gulpif(argv.livereload, livereload()));
done();
}); });
@ -83,7 +86,7 @@ gulp.task('scripts', function() {
* Since it's always loaded, it's only for functions that we want site-wide. * Since it's always loaded, it's only for functions that we want site-wide.
* It also includes jQuery and Bootstrap (and its dependency popper), since * It also includes jQuery and Bootstrap (and its dependency popper), since
* the site doesn't work without it anyway.*/ * the site doesn't work without it anyway.*/
gulp.task('scripts_concat_tutti', function() { gulp.task('scripts_concat_tutti', function(done) {
toUglify = [ toUglify = [
source.jquery + 'dist/jquery.min.js', source.jquery + 'dist/jquery.min.js',
@ -106,6 +109,7 @@ gulp.task('scripts_concat_tutti', function() {
.pipe(gulpif(enabled.chmod, chmod(0o644))) .pipe(gulpif(enabled.chmod, chmod(0o644)))
.pipe(gulp.dest(destination.js)) .pipe(gulp.dest(destination.js))
.pipe(gulpif(argv.livereload, livereload())); .pipe(gulpif(argv.livereload, livereload()));
done();
}); });
@ -123,22 +127,24 @@ gulp.task('scripts_move_vendor', function(done) {
// While developing, run 'gulp watch' // While developing, run 'gulp watch'
gulp.task('watch',function() { gulp.task('watch',function(done) {
// Only listen for live reloads if ran with --livereload // Only listen for live reloads if ran with --livereload
if (argv.livereload){ if (argv.livereload){
livereload.listen(); livereload.listen();
} }
gulp.watch('src/styles/**/*.sass',['styles']); gulp.watch('src/styles/**/*.sass',gulp.series('styles'));
gulp.watch('src/templates/**/*.pug',['templates']); gulp.watch('src/templates/**/*.pug',gulp.series('templates'));
gulp.watch('src/scripts/*.js',['scripts']); gulp.watch('src/scripts/*.js',gulp.series('scripts'));
gulp.watch('src/scripts/tutti/**/*.js',['scripts_concat_tutti']); gulp.watch('src/scripts/tutti/**/*.js',gulp.series('scripts_concat_tutti'));
done();
}); });
// Erases all generated files in output directories. // Erases all generated files in output directories.
gulp.task('cleanup', function() { gulp.task('cleanup', function(done) {
var paths = []; let paths = [];
for (attr in destination) { for (attr in destination) {
paths.push(destination[attr]); paths.push(destination[attr]);
} }
@ -146,17 +152,19 @@ gulp.task('cleanup', function() {
git.clean({ args: '-f -X ' + paths.join(' ') }, function (err) { git.clean({ args: '-f -X ' + paths.join(' ') }, function (err) {
if(err) throw err; if(err) throw err;
}); });
done();
}); });
// Run 'gulp' to build everything at once // Run 'gulp' to build everything at once
var tasks = []; let tasks = [];
if (enabled.cleanup) tasks.push('cleanup'); if (enabled.cleanup) tasks.push('cleanup');
gulp.task('default', tasks.concat([ // gulp.task('default', gulp.parallel('styles', 'templates', 'scripts', 'scripts_tutti'));
gulp.task('default', gulp.parallel(tasks.concat([
'styles', 'styles',
'templates', 'templates',
'scripts', 'scripts',
'scripts_concat_tutti', 'scripts_concat_tutti',
'scripts_move_vendor', 'scripts_move_vendor',
])); ])));

View File

@ -7,7 +7,7 @@
"url": "git://git.blender.org/pillar.git" "url": "git://git.blender.org/pillar.git"
}, },
"devDependencies": { "devDependencies": {
"gulp": "^3.9.1", "gulp": "^4.0.0",
"gulp-autoprefixer": "^6.0.0", "gulp-autoprefixer": "^6.0.0",
"gulp-cached": "^1.1.1", "gulp-cached": "^1.1.1",
"gulp-chmod": "^2.0.0", "gulp-chmod": "^2.0.0",