-
Notifications
You must be signed in to change notification settings - Fork 365
/
gulpfile.js
104 lines (90 loc) · 2.92 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// Load Gulp...of course
var gulp = require( 'gulp' );
// CSS related plugins
var sass = require( 'gulp-sass' );
var autoprefixer = require( 'gulp-autoprefixer' );
var minifycss = require( 'gulp-uglifycss' );
// JS related plugins
var concat = require( 'gulp-concat' );
var uglify = require( 'gulp-uglify' );
var babelify = require( 'babelify' );
var browserify = require( 'browserify' );
var source = require( 'vinyl-source-stream' );
var buffer = require( 'vinyl-buffer' );
var stripDebug = require( 'gulp-strip-debug' );
// Utility plugins
var rename = require( 'gulp-rename' );
var sourcemaps = require( 'gulp-sourcemaps' );
var notify = require( 'gulp-notify' );
var plumber = require( 'gulp-plumber' );
var options = require( 'gulp-options' );
var gulpif = require( 'gulp-if' );
// Browers related plugins
var browserSync = require( 'browser-sync' ).create();
var reload = browserSync.reload;
// Project related variables
var projectURL = 'https://test.dev';
var styleSRC = 'src/scss/mystyle.scss';
var styleURL = './assets/';
var mapURL = './';
var jsSRC = 'src/js/myscript.js';
var jsURL = './assets/';
var styleWatch = 'src/scss/**/*.scss';
var jsWatch = 'src/js/**/*.js';
var phpWatch = '**/*.php';
// Tasks
gulp.task( 'browser-sync', function() {
browserSync.init({
proxy: projectURL,
https: {
key: '/Users/alecaddd/.valet/Certificates/test.dev.key',
cert: '/Users/alecaddd/.valet/Certificates/test.dev.crt'
},
injectChanges: true,
open: false
});
});
gulp.task( 'styles', function() {
gulp.src( styleSRC )
.pipe( sourcemaps.init() )
.pipe( sass({
errLogToConsole: true,
outputStyle: 'compressed'
}) )
.on( 'error', console.error.bind( console ) )
.pipe( autoprefixer({ browsers: [ 'last 2 versions', '> 5%', 'Firefox ESR' ] }) )
.pipe( sourcemaps.write( mapURL ) )
.pipe( gulp.dest( styleURL ) )
.pipe( browserSync.stream() );
});
gulp.task( 'js', function() {
return browserify({
entries: [jsSRC]
})
.transform( babelify, { presets: [ 'env' ] } )
.bundle()
.pipe( source( 'myscript.js' ) )
.pipe( buffer() )
.pipe( gulpif( options.has( 'production' ), stripDebug() ) )
.pipe( sourcemaps.init({ loadMaps: true }) )
.pipe( uglify() )
.pipe( sourcemaps.write( '.' ) )
.pipe( gulp.dest( jsURL ) )
.pipe( browserSync.stream() );
});
function triggerPlumber( src, url ) {
return gulp.src( src )
.pipe( plumber() )
.pipe( gulp.dest( url ) );
}
gulp.task( 'default', ['styles', 'js'], function() {
gulp.src( jsURL + 'myscript.min.js' )
.pipe( notify({ message: 'Assets Compiled!' }) );
});
gulp.task( 'watch', ['default', 'browser-sync'], function() {
gulp.watch( phpWatch, reload );
gulp.watch( styleWatch, [ 'styles' ] );
gulp.watch( jsWatch, [ 'js', reload ] );
gulp.src( jsURL + 'myscript.min.js' )
.pipe( notify({ message: 'Gulp is Watching, Happy Coding!' }) );
});