UNPKG

@fantassin/bzk

Version:

Build modern web with Sass, ESNext & WordPress workflow.

63 lines (54 loc) 1.78 kB
/* * @title Scripts * @description A task to concatenate and compress js files via webpack */ // Dependencies const gulp = require('gulp'); const plumber = require('gulp-plumber') const eslint = require('gulp-eslint'); const gulpIf = require('gulp-if'); const webpack = require('webpack'); const webpackStream = require('webpack-stream'); const webpackConfig = require('../webpack.config'); const named = require('vinyl-named'); const rename = require('gulp-rename'); const dotenv = require('dotenv'); const isProd = require('../gulpfile').isProd; // Config dotenv.config(); // Consts const JS_SRC = process.env.JS_SRC ? process.env.JS_SRC : `${process.env.SRC}/**/*.js`; const JS_DEST = process.env.JS_DEST ? process.env.JS_DEST : process.env.DEST; // Tasks function isFixed(file) { return file.eslint != null && file.eslint.fixed; } function lintScripts() { return gulp.src(JS_SRC, {base: './', sourcemaps: isProd}) .pipe(eslint({fix: true})) .pipe(eslint.format()) .pipe(gulpIf(isFixed, gulp.dest('./'))); } function transpileScripts() { let tmp = {}; return gulp.src([JS_SRC], {sourcemaps: isProd}) .pipe(plumber()) .pipe(named()) .pipe(rename(function (path) { tmp[path.basename] = path; })) .pipe(webpackStream(webpackConfig, webpack)) .pipe(rename(function (path) { if (!tmp.hasOwnProperty(path.basename)) { Object.assign(tmp, {[path.basename]: {dirname: tmp[Object.keys(tmp)[0]].dirname}}) } if (path.dirname && tmp[path.basename].dirname) { path.dirname = tmp[path.basename].dirname; } })) .pipe(plumber.stop()) .pipe(gulp.dest(JS_DEST)); } exports.scripts = gulp.series(lintScripts, transpileScripts); exports.JS_SRC = JS_SRC; exports.JS_DEST = JS_DEST;