You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.6 KiB
JavaScript
89 lines
2.6 KiB
JavaScript
"use strict";
|
|
|
|
const gulp = require('gulp');
|
|
const sass = require('gulp-sass');
|
|
const concat = require('gulp-concat');
|
|
const imagemin = require('gulp-imagemin');
|
|
const cache = require('gulp-cache');
|
|
const gulpIf = require('gulp-if');
|
|
const browserify = require('browserify');
|
|
const del = require('del');
|
|
|
|
const source = require('vinyl-source-stream');
|
|
const buffer = require('vinyl-buffer');
|
|
const sourcemaps = require('gulp-sourcemaps');
|
|
|
|
const budo = require('budo');
|
|
const babelify = require('babelify');
|
|
|
|
const cssFiles = 'src/scss/**/*.?(s)css';
|
|
const assetsFiles = [ "src/assets/**/*" ];
|
|
|
|
gulp.task("clean", function(done) {
|
|
del.sync('build');
|
|
done();
|
|
});
|
|
|
|
gulp.task("sass", function() {
|
|
return gulp.src(cssFiles)
|
|
.pipe(sass())
|
|
.pipe(concat('style.css'))
|
|
.pipe(gulp.dest('./build'));
|
|
});
|
|
|
|
gulp.task("assets", function() {
|
|
return gulp.src(assetsFiles)
|
|
/* NOTE: Currently disabled, causes an error:
|
|
[19:47:33] Error: Callback called multiple times
|
|
at DestroyableTransform.afterTransform (/home/sven/projects/iris/node_modules/gulp-cache/node_modules/readable-stream/lib/_stream_transform.js:82:31)
|
|
at EventEmitter.signals.on.err (/home/sven/projects/iris/node_modules/gulp-cache/lib/index.js:451:7)
|
|
at emitOne (events.js:116:13)
|
|
at EventEmitter.emit (events.js:211:7)
|
|
at DestroyableTransform.onError (/home/sven/projects/iris/node_modules/gulp-cache/lib/index.js:288:15)
|
|
at Object.onceWrapper (events.js:315:30)
|
|
at emitOne (events.js:116:13)
|
|
at DestroyableTransform.emit (events.js:211:7)
|
|
at /home/sven/projects/iris/node_modules/through2-concurrent/through2-concurrent.js:41:14
|
|
at imagemin.buffer.then.catch.error (/home/sven/projects/iris/node_modules/gulp-imagemin/index.js:98:5)
|
|
*/
|
|
// .pipe(gulpIf('*.+(png|jpg|jpeg|gif|svg)',
|
|
// cache(imagemin({
|
|
// interlaced: true
|
|
// }))
|
|
// ))
|
|
.pipe(gulp.dest('build'));
|
|
});
|
|
|
|
gulp.task('js', function() {
|
|
let b = browserify({
|
|
entries: 'src/app.js',
|
|
debug: false,
|
|
transform: [babelify.configure({
|
|
presets: ['@babel/preset-env', '@babel/preset-react']
|
|
})]
|
|
});
|
|
return b.bundle()
|
|
.pipe(source('src/app.js'))
|
|
.pipe(buffer())
|
|
.pipe(sourcemaps.init({ loadMaps: true }))
|
|
.pipe(gulp.dest('build'));
|
|
});
|
|
|
|
gulp.task('watch', gulp.series(["clean", "assets", "sass", function(cb) {
|
|
budo("src/app.js", {
|
|
live: true,
|
|
dir: "build",
|
|
port: 3000,
|
|
browserify: {
|
|
transform: babelify
|
|
}
|
|
}).on('exit', cb);
|
|
|
|
gulp.watch(cssFiles, gulp.series(["sass"]));
|
|
gulp.watch(assetsFiles, gulp.series(["assets"]));
|
|
}]));
|
|
|
|
gulp.task('build', gulp.parallel(['clean', 'assets', 'js', 'sass', function(done) {
|
|
done();
|
|
}]));
|