11const path = require ( 'path' ) ;
22
3+ const AWS = require ( 'aws-sdk' ) ;
4+ const _ = require ( 'lodash' ) ;
5+ const awscloudfront = require ( 'gulp-awspublish-cloudfront' ) ;
36const awspublish = require ( 'gulp-awspublish' ) ;
47const babelify = require ( '@ladjs/babelify' ) ;
58const browserify = require ( 'browserify' ) ;
69const buffer = require ( 'vinyl-buffer' ) ;
7- const cloudfront = require ( 'gulp-cloudfront' ) ;
810const collapser = require ( 'bundle-collapser/plugin' ) ;
911const commonShake = require ( 'common-shakeify' ) ;
1012const cssnano = require ( 'cssnano' ) ;
@@ -47,28 +49,36 @@ process.env.I18N_UPDATE_FILES = true;
4749
4850const env = require ( './config/env' ) ;
4951const config = require ( './config' ) ;
52+ const logger = require ( './helpers/logger' ) ;
5053
5154const PROD = config . env === 'production' ;
5255const DEV = config . env === 'development' ;
5356const TEST = config . env === 'test' ;
54-
5557const staticAssets = [
5658 'assets/**/*' ,
5759 '!assets/css/**/*' ,
5860 '!assets/img/**/*' ,
5961 '!assets/js/**/*'
6062] ;
61-
6263const manifestOptions = {
6364 merge : true ,
64- base : 'build'
65+ base : config . buildBase
6566} ;
6667
68+ // set aws logger
69+ AWS . config . logger = logger ;
70+
6771function publish ( ) {
6872 // create a new publisher
69- const publisher = awspublish . create ( config . aws ) ;
73+ const publisher = awspublish . create (
74+ _ . merge ( config . aws , {
75+ params : {
76+ Bucket : env . AWS_S3_BUCKET
77+ }
78+ } )
79+ ) ;
7080 return (
71- src ( [ 'build /**/*' , '!build/rev-manifest.json' ] )
81+ src ( [ ` ${ config . buildBase } /**/*` , `! ${ config . manifest } ` ] )
7282 // gzip, Set Content-Encoding headers and add .gz extension
7383 . pipe ( awspublish . gzip ( ) )
7484 // publisher will add Content-Length, Content-Type
@@ -83,7 +93,7 @@ function publish() {
8393 . pipe ( publisher . cache ( ) )
8494 // print upload updates to console
8595 . pipe ( awspublish . reporter ( ) )
86- . pipe ( cloudfront ( config . aws ) )
96+ . pipe ( awscloudfront ( env . AWS_CLOUDFRONT_DISTRIBUTION_ID ) )
8797 ) ;
8898}
8999
@@ -105,12 +115,10 @@ function img() {
105115 use : [ pngquant ( ) ]
106116 } )
107117 )
108- . pipe ( dest ( 'build' ) )
118+ . pipe ( dest ( config . buildBase ) )
109119 . pipe ( gulpif ( DEV , lr ( config . livereload ) ) )
110- . pipe (
111- gulpif ( PROD , rev . manifest ( 'build/rev-manifest.json' , manifestOptions ) )
112- )
113- . pipe ( gulpif ( PROD , dest ( 'build' ) ) ) ;
120+ . pipe ( gulpif ( PROD , rev . manifest ( config . manifest , manifestOptions ) ) )
121+ . pipe ( gulpif ( PROD , dest ( config . buildBase ) ) ) ;
114122}
115123
116124function scss ( ) {
@@ -134,7 +142,7 @@ function css() {
134142 . pipe (
135143 postcss ( [
136144 fontMagician ( {
137- hosted : [ path . join ( __dirname , 'build' , 'fonts' ) , '/fonts' ]
145+ hosted : [ path . join ( __dirname , config . buildBase , 'fonts' ) , '/fonts' ]
138146 } ) ,
139147 unprefix ( ) ,
140148 postcssPresetEnv ( ) ,
@@ -145,12 +153,10 @@ function css() {
145153 )
146154 . pipe ( gulpif ( PROD , rev ( ) ) )
147155 . pipe ( sourcemaps . write ( './' ) )
148- . pipe ( dest ( 'build' ) )
156+ . pipe ( dest ( config . buildBase ) )
149157 . pipe ( gulpif ( DEV , lr ( config . livereload ) ) )
150- . pipe (
151- gulpif ( PROD , rev . manifest ( 'build/rev-manifest.json' , manifestOptions ) )
152- )
153- . pipe ( gulpif ( PROD , dest ( 'build' ) ) ) ;
158+ . pipe ( gulpif ( PROD , rev . manifest ( config . manifest , manifestOptions ) ) )
159+ . pipe ( gulpif ( PROD , dest ( config . buildBase ) ) ) ;
154160}
155161
156162function xo ( ) {
@@ -161,7 +167,7 @@ function xo() {
161167}
162168
163169function eslint ( ) {
164- return src ( 'build /**/*.js' , { since : lastRun ( eslint ) } )
170+ return src ( ` ${ config . buildBase } /**/*.js` , { since : lastRun ( eslint ) } )
165171 . pipe (
166172 gulpEslint ( {
167173 allowInlineConfig : false ,
@@ -198,12 +204,10 @@ function js() {
198204 . pipe ( gulpif ( PROD , uglify ( ) ) )
199205 . pipe ( gulpif ( PROD , rev ( ) ) )
200206 . pipe ( sourcemaps . write ( './' ) )
201- . pipe ( dest ( 'build' ) )
207+ . pipe ( dest ( config . buildBase ) )
202208 . pipe ( gulpif ( DEV , lr ( config . livereload ) ) )
203- . pipe (
204- gulpif ( PROD , rev . manifest ( 'build/rev-manifest.json' , manifestOptions ) )
205- )
206- . pipe ( gulpif ( PROD , dest ( 'build' ) ) ) ;
209+ . pipe ( gulpif ( PROD , rev . manifest ( config . manifest , manifestOptions ) ) )
210+ . pipe ( gulpif ( PROD , dest ( config . buildBase ) ) ) ;
207211}
208212
209213function remark ( ) {
@@ -222,11 +226,11 @@ function static() {
222226 base : 'assets' ,
223227 allowEmpty : true ,
224228 since : lastRun ( static )
225- } ) . pipe ( dest ( 'build' ) ) ;
229+ } ) . pipe ( dest ( config . buildBase ) ) ;
226230}
227231
228232function clean ( ) {
229- return del ( [ 'build' ] ) ;
233+ return del ( [ config . buildBase ] ) ;
230234}
231235
232236const build = series (
0 commit comments