55/* eslint-disable import/no-nodejs-modules */
66
77const fs = require ( 'fs' ) ;
8+ const path = require ( 'path' ) ;
89const https = require ( 'https' ) ;
910const gulp = require ( 'gulp' ) ;
1011const yargs = require ( 'yargs' ) ;
@@ -26,9 +27,9 @@ const webpackConfiguration = require('./webpack.config');
2627
2728const browserSync = BrowserSync . create ( ) ;
2829const srcDir = 'src' ;
29- const baseDir = 'static ' ;
30- const distDir = ` ${ baseDir } /compiled` ;
31- const stylesheetsDir = ` ${ srcDir } /css` ;
30+ const distDir = 'dist ' ;
31+ const stylesheetsDir = path . join ( srcDir , 'css' ) ;
32+ const staticDir = path . join ( srcDir , 'static' ) ;
3233const bowerComponents = 'bower_components' ;
3334
3435const cssnextBrowsers = [ ] ;
@@ -49,14 +50,24 @@ gulp.task('env', () => {
4950 }
5051} ) ;
5152
53+ gulp . task ( 'static' , ( ) => gulp .
54+ src ( path . join ( staticDir , '**/*' ) ) .
55+ pipe ( gulp . dest ( distDir ) )
56+ ) ;
57+
5258gulp . task ( 'fonts' , ( ) => gulp .
5359 src ( [
54- `${ bowerComponents } /inconsolata-webfont/fonts/inconsolata-regular.*` ,
55- `${ bowerComponents } /fontawesome/fonts/fontawesome-webfont.*` ,
56- `${ bowerComponents } /roboto-webfont-bower/fonts/` +
57- 'Roboto-{Bold,Regular}-webfont.*' ,
60+ path . join (
61+ bowerComponents ,
62+ 'inconsolata-webfont/fonts/inconsolata-regular.*'
63+ ) ,
64+ path . join ( bowerComponents , 'fontawesome/fonts/fontawesome-webfont.*' ) ,
65+ path . join (
66+ bowerComponents ,
67+ 'roboto-webfont-bower/fonts/Roboto-{Bold,Regular}-webfont.*'
68+ ) ,
5869 ] ) .
59- pipe ( gulp . dest ( ` ${ distDir } / fonts` ) )
70+ pipe ( gulp . dest ( path . join ( distDir , ' fonts' ) ) )
6071) ;
6172
6273gulp . task ( 'css' , ( ) => {
@@ -67,8 +78,8 @@ gulp.task('css', () => {
6778
6879 return gulp .
6980 src ( [
70- ` ${ bowerComponents } / normalize-css/normalize.css` ,
71- ` ${ stylesheetsDir } / **/*.css` ,
81+ path . join ( bowerComponents , ' normalize-css/normalize.css' ) ,
82+ path . join ( stylesheetsDir , ' **/*.css' ) ,
7283 ] ) .
7384 pipe ( concat ( 'application.css' ) ) .
7485 pipe ( sourcemaps . init ( { loadMaps : true } ) ) .
@@ -92,11 +103,12 @@ gulp.task('js', ['env'], () => {
92103 return pify ( webpack ) ( productionWebpackConfig ) ;
93104} ) ;
94105
95- gulp . task ( 'build' , [ 'fonts' , 'css' , 'js' ] ) ;
106+ gulp . task ( 'build' , [ 'static' , ' fonts', 'css' , 'js' ] ) ;
96107
97108gulp . task ( 'syncFirebase' , async ( ) => {
98- const data =
99- await pify ( fs ) . readFile ( `${ __dirname } /config/firebase-auth.json` ) ;
109+ const data = await pify ( fs ) . readFile (
110+ path . resolve ( __dirname , 'config/firebase-auth.json' )
111+ ) ;
100112 const firebaseSecret = process . env . FIREBASE_SECRET ;
101113 if ( ! firebaseSecret ) {
102114 throw new Error ( 'Missing environment variable FIREBASE_SECRET' ) ;
@@ -120,23 +132,23 @@ gulp.task('syncFirebase', async () => {
120132 } ) ;
121133} ) ;
122134
123- gulp . task ( 'dev' , [ 'browserSync' , 'fonts' , 'css' ] , ( ) => {
124- gulp . watch ( `${ stylesheetsDir } /**/*.css` , [ 'css' ] ) ;
125- gulp . watch ( `${ baseDir } /*` ) . on ( 'change' , browserSync . reload ) ;
135+ gulp . task ( 'dev' , [ 'browserSync' , 'static' , 'fonts' , 'css' ] , ( ) => {
136+ gulp . watch ( path . join ( staticDir , '/**/*' ) , [ 'static' ] ) ;
137+ gulp . watch ( path . join ( stylesheetsDir , '**/*.css' ) , [ 'css' ] ) ;
138+ gulp . watch ( path . join ( distDir , '*' ) ) . on ( 'change' , browserSync . reload ) ;
126139} ) ;
127140
128- gulp . task ( 'browserSync' , ( ) => {
141+ gulp . task ( 'browserSync' , [ 'static' ] , ( ) => {
129142 const compiler = webpack ( webpackConfiguration ) ;
130143 compiler . plugin ( 'invalid' , browserSync . reload ) ;
131144 browserSync . init ( {
132145 server : {
133- baseDir,
146+ baseDir : distDir ,
134147 middleware : [ webpackDevMiddleware (
135148 compiler ,
136149 {
137150 lazy : false ,
138151 stats : 'errors-only' ,
139- publicPath : `/${ webpackConfiguration . output . publicPath } ` ,
140152 }
141153 ) ] ,
142154 } ,
0 commit comments