This repository was archived by the owner on Feb 19, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
79 lines (70 loc) · 2.56 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
'use strict';
const path = require( 'path' );
const gulp = require( 'gulp' );
const sourcemaps = require( 'gulp-sourcemaps' );
const autoprefixer = require( 'gulp-autoprefixer' );
const concat = require( 'gulp-concat' );
const cleanCSS = require( 'gulp-clean-css' );
const order = require( 'gulp-order' );
const babel = require( 'gulp-babel' );
const minify = require( 'gulp-minify' );
const htmlreplace = require( 'gulp-html-replace' );
const htmlmin = require( 'gulp-htmlmin' );
const publicFolder = path.join( __dirname, './public' );
const distFolder = path.join( __dirname, './public_dist' );
gulp.task( 'build-css', function() {
gulp.src( path.join( publicFolder, './css/**/*.css' ) )
.pipe( sourcemaps.init() )
.pipe( autoprefixer( {
browsers: [ 'last 2 versions' ],
cascade: false,
} ) )
.pipe( concat( 'main.css' ) )
.pipe( cleanCSS() )
.pipe( sourcemaps.write( '.' ) )
.pipe( gulp.dest( path.join( distFolder, 'css' ) ) );
} );
gulp.task( 'build-js', function() {
gulp.src( path.join( __dirname, 'node_modules/es6-promise/dist/es6-promise.auto.min.*' ) )
.pipe( gulp.dest( path.join( distFolder, 'js' ) ) );
gulp.src( path.join( publicFolder, './js/**/*.js' ) )
.pipe( order( [
'lite.js',
'lite-request.js',
'view.js',
'app.js'
]
) )
.pipe( babel( {
presets: [ 'es2015' ]
} ) )
.pipe( concat( 'app.js' ) )
.pipe( minify() )
.pipe( gulp.dest( path.join( distFolder, 'js' ) ) );
} );
gulp.task( 'build', [ 'build-js', 'build-css' ], function() {
gulp.src( path.join( publicFolder, './images/**/*' ) )
.pipe( gulp.dest( path.join( distFolder, 'images' ) ) );
let replaceOptions = {
css: 'css/main.css',
js: 'js/app-min.js',
promise: 'js/es6-promise.auto.min.js',
};
if ( process.env.GA && process.env.GA.match( /^[\w]{2}-[\d]+(-[\d]+)?$/ ) ) {
replaceOptions.ga = {
src: null,
tpl: `<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '${process.env.GA}', 'auto');
ga('send', 'pageview');
</script>`
}
}
gulp.src( path.join( publicFolder, './index.html' ) )
.pipe( htmlreplace( replaceOptions ) )
.pipe( htmlmin( { collapseWhitespace: true } ) )
.pipe( gulp.dest( distFolder ) );
} );