const { src, dest, series, parallel, watch } = require('gulp'); const argv = require('minimist')(process.argv.slice(2)); const babel = require('gulp-babel'); const terser = require('gulp-terser'); const sass = require('gulp-sass'); const postcss = require('gulp-postcss'); const postcssPresetEnv = require('postcss-preset-env'); const cssnano = require('cssnano'); const babelConfig = require('./babel.config.js'); const postcssPlugins = [postcssPresetEnv(), cssnano()]; const isProduction = argv.build ? argv.build : false; const buildDir = './dist/'; const jsSrc = './index.jsx'; const jsDest = buildDir; const scssSrc = './*.scss'; const cssDest = buildDir; function jsTranspile() { return src(jsSrc, { sourcemaps: !isProduction }) .pipe(babel(babelConfig)) .pipe(terser()) .pipe(dest(jsDest, { sourcemaps: !isProduction })); } function scssCompile() { return src(scssSrc, { sourcemaps: !isProduction }) .pipe(sass().on('error', sass.logError)) .pipe(postcss(postcssPlugins)) .pipe(dest(cssDest, { sourcemaps: !isProduction })); } const jsWatch = () => watch(jsSrc, { ignoreInitial: false }, jsTranspile); const scssWatch = () => watch(scssSrc, { ignoreInitial: false }, scssCompile); exports.default = parallel( jsWatch, scssWatch, );