summaryrefslogtreecommitdiffstats
path: root/gulpfile.js
diff options
context:
space:
mode:
Diffstat (limited to 'gulpfile.js')
-rw-r--r--gulpfile.js133
1 files changed, 72 insertions, 61 deletions
diff --git a/gulpfile.js b/gulpfile.js
index 3767b2f..b45595c 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,73 +1,84 @@
-var pipeline = require('readable-stream').pipeline;
-var del = require('del');
-var gulp = require('gulp');
-var sourcemaps = require('gulp-sourcemaps');
-var babel = require('gulp-babel');
-var uglify = require('gulp-uglify');
-var sass = require('gulp-sass');
-sass.compiler = require('node-sass');
-var postcss = require('gulp-postcss');
-var autoprefixer = require('autoprefixer');
-var cssnano = require('cssnano');
-var rename = require('gulp-rename');
+const gulp = require('gulp');
-function devJs() {
- return pipeline(
- gulp.src('assets/js/fuji.js'),
- sourcemaps.init(),
- babel({
- presets: ['@babel/env'],
- }),
- rename({ suffix: '.min' }),
- sourcemaps.write('.'),
- gulp.dest('static/assets/js/')
- );
-}
+const sourcemaps = require('gulp-sourcemaps');
+const babel = require('gulp-babel');
+const uglify = require('gulp-uglify');
+
+const sass = require('gulp-sass');
+sass.compiler = require('sass');
+const postcss = require('gulp-postcss');
+const autoprefixer = require('autoprefixer');
+const cleanCSS = require('gulp-clean-css');
-function devCss() {
- return pipeline(
- gulp.src('assets/scss/fuji.scss'),
- sourcemaps.init(),
- sass(),
- postcss([autoprefixer()]),
- rename({ suffix: '.min' }),
- sourcemaps.write('.'),
- gulp.dest('static/assets/css/')
- );
+const fs = require('fs');
+const path = require('path');
+const env = process.env.NODE_ENV;
+
+// Clean files generated in last build
+function clean() {
+ try {
+ fs.rmdirSync(path.resolve(__dirname, 'static/assets/css'), { recursive: true });
+ } catch (e) {}
+ try {
+ fs.rmdirSync(path.resolve(__dirname, 'static/assets/js'), { recursive: true });
+ } catch (e) {}
+ return Promise.resolve();
}
+// Build js
function js() {
- return pipeline(
- gulp.src('assets/js/fuji.js'),
- babel({
- presets: ['@babel/env'],
- }),
- uglify(),
- rename({ suffix: '.min' }),
- gulp.dest('static/assets/js/')
- );
+ let src = gulp.src('./assets/js/fuji.js');
+ if (env === 'development') {
+ src = src.pipe(sourcemaps.init());
+ }
+ src = src.pipe(babel({ presets: ['@babel/env'] })).pipe(uglify());
+ if (env === 'development') {
+ src = src.pipe(sourcemaps.write('.'));
+ }
+ src = src.pipe(gulp.dest('./static/assets/js'));
+ return src;
}
+// Build css
function css() {
- return pipeline(
- gulp.src('assets/scss/fuji.scss'),
- sass(),
- postcss([autoprefixer(), cssnano()]),
- rename({ suffix: '.min' }),
- gulp.dest('static/assets/css/')
- );
+ let src = gulp.src('./assets/scss/fuji.scss');
+ if (env === 'development') {
+ src = src.pipe(sourcemaps.init());
+ }
+ src = src
+ .pipe(sass({ includePaths: ['./node_modules'] }).on('error', sass.logError))
+ .pipe(postcss([autoprefixer()]))
+ .pipe(cleanCSS());
+ if (env === 'development') {
+ src = src.pipe(sourcemaps.write('.'));
+ }
+ src = src.pipe(gulp.dest('./static/assets/css'));
+ return src;
}
-function clean() {
- return del(['static/assets/css/fuji.min.css.map', 'static/assets/js/fuji.min.js.map']);
+function endprocess() {
+ // Rename files
+ try {
+ fs.renameSync(
+ path.resolve(__dirname, 'static/assets/css/fuji.css'),
+ path.resolve(__dirname, 'static/assets/css/fuji.min.css')
+ );
+ } catch (e) {}
+ try {
+ fs.renameSync(
+ path.resolve(__dirname, 'static/assets/js/fuji.js'),
+ path.resolve(__dirname, 'static/assets/js/fuji.min.js')
+ );
+ } catch (e) {}
+ return Promise.resolve();
+}
+
+exports.compile = gulp.series(clean, gulp.parallel(css, js), endprocess);
+
+// Live compile when development
+function watch() {
+ gulp.watch('assets/js/*.js', { delay: 1000 }, gulp.series(js, endprocess));
+ gulp.watch('assets/**/*.scss', { delay: 1000 }, gulp.series(css, endprocess));
}
-exports.build = gulp.parallel(js, css, clean);
-exports.devJs = function () {
- devJs();
- return gulp.watch('assets/js/fuji.js', { delay: 500 }, devJs);
-};
-exports.devCss = function () {
- devJs();
- return gulp.watch('assets/**/*.scss', { delay: 500 }, devCss);
-};
+exports.dev = gulp.series(clean, gulp.parallel(css, js), endprocess, watch);