UNPKG

bzk-test

Version:

Build modern web with Sass, ESNext & WordPress workflow.

64 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 eslint = require('gulp-eslint'); const gulpIf = require('gulp-if'); const webpack = require('webpack'); const webpackStream = require('webpack-stream'); let 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; if (process.env.WORDPRESS) { webpackConfig = require('../wordpress/webpack.config'); } // 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(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(gulp.dest(JS_DEST)); } exports.scripts = gulp.series(lintScripts, transpileScripts); exports.JS_SRC = JS_SRC; exports.JS_DEST = JS_DEST;