11const path = require ( 'path' ) ;
2+ const fs = require ( 'fs' ) ;
23
34const AWS = require ( 'aws-sdk' ) ;
45const _ = require ( 'lodash' ) ;
56const awscloudfront = require ( 'gulp-awspublish-cloudfront' ) ;
67const awspublish = require ( 'gulp-awspublish' ) ;
7- const babelify = require ( '@ladjs/babelify ' ) ;
8+ const babel = require ( 'gulp-babel ' ) ;
89const browserify = require ( 'browserify' ) ;
9- const buffer = require ( 'vinyl-buffer' ) ;
1010const collapser = require ( 'bundle-collapser/plugin' ) ;
11- const commonShake = require ( 'common-shakeify' ) ;
1211const cssnano = require ( 'cssnano' ) ;
1312const del = require ( 'del' ) ;
14- const envify = require ( 'envify/custom ' ) ;
13+ const envify = require ( 'gulp- envify' ) ;
1514const fontMagician = require ( 'postcss-font-magician' ) ;
1615const fontSmoothing = require ( 'postcss-font-smoothing' ) ;
16+ const globby = require ( 'globby' ) ;
1717const gulpEslint = require ( 'gulp-eslint' ) ;
1818const gulpRemark = require ( 'gulp-remark' ) ;
1919const gulpXo = require ( 'gulp-xo' ) ;
2020const gulpif = require ( 'gulp-if' ) ;
2121const imagemin = require ( 'gulp-imagemin' ) ;
2222const lr = require ( 'gulp-livereload' ) ;
23+ const makeDir = require ( 'make-dir' ) ;
2324const ms = require ( 'ms' ) ;
2425const nodeSass = require ( 'node-sass' ) ;
2526const pngquant = require ( 'imagemin-pngquant' ) ;
@@ -32,9 +33,8 @@ const sass = require('gulp-sass');
3233const scssParser = require ( 'postcss-scss' ) ;
3334const sourcemaps = require ( 'gulp-sourcemaps' ) ;
3435const stylelint = require ( 'stylelint' ) ;
35- const tap = require ( 'gulp-tap' ) ;
36- const uglify = require ( 'gulp-uglify' ) ;
37- const unassertify = require ( 'unassertify' ) ;
36+ const terser = require ( 'gulp-terser' ) ;
37+ const unassert = require ( 'gulp-unassert' ) ;
3838const unprefix = require ( 'postcss-unprefix' ) ;
3939const { lastRun, watch, series, parallel, src, dest } = require ( 'gulp' ) ;
4040
@@ -178,30 +178,35 @@ function eslint() {
178178 . pipe ( gulpEslint . failAfterError ( ) ) ;
179179}
180180
181- // <https://github.com/gulpjs/gulp/blob/master/docs/recipes/browserify-multiple-destination.md>
182- function js ( ) {
183- return src ( 'assets/js/**/*.js' , {
184- base : 'assets' ,
185- since : lastRun ( js )
186- } )
187- . pipe (
188- tap ( file => {
189- file . contents = browserify ( {
190- entries : file . path ,
191- debug : true ,
192- basedir : 'assets'
193- } )
194- . transform ( babelify )
195- . transform ( unassertify , { global : true } )
196- . transform ( envify ( env ) , { global : true } )
197- . plugin ( collapser )
198- . plugin ( commonShake )
199- . bundle ( ) ;
181+ async function bundle ( ) {
182+ // make build/js folder for compile task
183+ await makeDir ( path . join ( config . buildBase , 'js' ) ) ;
184+ const paths = await globby ( '**/*.js' , { cwd : 'assets/js' } ) ;
185+ const b = browserify ( {
186+ entries : paths . map ( str => `assets/js/${ str } ` ) ,
187+ debug : true
188+ } ) ;
189+ return (
190+ b
191+ . plugin ( collapser )
192+ . plugin ( 'factor-bundle' , {
193+ outputs : paths . map ( str => `${ config . buildBase } /js/${ str } ` )
200194 } )
201- )
202- . pipe ( buffer ( ) )
195+ . bundle ( )
196+ // .bundle((err, buffer) => {
197+ . pipe ( fs . createWriteStream ( `${ config . buildBase } /js/factor-bundle.js` ) )
198+ ) ;
199+ }
200+
201+ async function compile ( ) {
202+ return src ( 'build/js/**/*.js' , {
203+ since : lastRun ( compile )
204+ } )
203205 . pipe ( sourcemaps . init ( { loadMaps : true } ) )
204- . pipe ( gulpif ( PROD , uglify ( ) ) )
206+ . pipe ( envify ( env ) )
207+ . pipe ( unassert ( ) )
208+ . pipe ( babel ( ) )
209+ . pipe ( gulpif ( PROD , terser ( ) ) )
205210 . pipe ( gulpif ( PROD , rev ( ) ) )
206211 . pipe ( sourcemaps . write ( './' ) )
207212 . pipe ( dest ( config . buildBase ) )
@@ -233,6 +238,8 @@ function clean() {
233238 return del ( [ config . buildBase ] ) ;
234239}
235240
241+ const js = series ( bundle , compile ) ;
242+
236243const build = series (
237244 clean ,
238245 parallel (
0 commit comments