forked from sendgrid/schoolkeep-templates
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
125 lines (106 loc) · 2.72 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
var gulp = require( 'gulp' );
var gulpif = require( 'gulp-if' );
var browserSync = require( 'browser-sync' ).create();
var sass = require( 'gulp-sass' );
var sourcemaps = require( 'gulp-sourcemaps' );
var autoprefixer = require( 'gulp-autoprefixer' );
var concat = require( 'gulp-concat' );
var cssnano = require( 'gulp-cssnano' );
var notify = require( 'gulp-notify' );
var changed = require( 'gulp-changed' );
var scsslint = require( 'gulp-scss-lint' );
var cache = require( 'gulp-cached' );
var runSequence = require( 'run-sequence' );
var handleErrors = function () {
var args = Array.prototype.slice.call( arguments );
// Send error to notification center with gulp-notify
notify
.onError( {
title: 'Compile Error',
message: '<%= error %>'
} )
.apply( this, args );
// Keep gulp from hanging on this task
this.emit( 'end' );
};
// Set NODE_ENV to development by default
process.env.NODE_ENV = 'development';
// Set NODE_ENV to production when building
gulp.task( 'set-prod-node-env', function () {
return ( process.env.NODE_ENV = 'production' );
} );
// Open new browser window if --open flag is set
var initBrowserSync = function () {
var option,
i = process.argv.indexOf( '--open' );
if ( i > -1 ) {
// option = process.argv[i+1];
option = process.argv[ i ];
}
browserSync.init( {
proxy: "localhost:4000",
open: true,
} );
};
gulp.task('sass', function () {
return gulp.src('./assets/styles/style.scss')
.pipe(sourcemaps.init())
.pipe(sass({
includePaths: [
'assets/styles/extensions/foundation',
'node_modules/foundation-sites/scss',
'node_modules/motion-ui/src',
]
})
.on('error', sass.logError))
.pipe( autoprefixer( { browsers: [ 'last 3 versions' ] } ) )
.pipe( gulpif( process.env.NODE_ENV === 'production',
cssnano( {
safe: true, // Use safe optimizations.
keepSpecialComments: 1
}
)
)
)
.pipe( gulpif( process.env.NODE_ENV === 'development',
sourcemaps.write()
)
)
.pipe( concat( 'styles.css.sktl' ) )
.pipe( gulp.dest( './templates/' ) )
.pipe( browserSync.stream() );
});
// SCSS linter
gulp.task( 'scss-lint', function () {
return gulp
.src( [ './assets/styles/**/**/*.scss' ] )
.pipe( cache( 'scsslint' ) )
.pipe(
scsslint( {
config: '.scss-lint.yml',
maxBuffer: 614400,
endless: true
} )
);
} );
gulp.task( 'default', [ 'sass' ] );
// Spin up dev
gulp.task( 'sync', function () {
runSequence(
'sass',
function () {
initBrowserSync();
}
);
// Compile & lint SASS on change
gulp.watch( './assets/styles/**/**/*.scss', { interval: 500 }, [
'sass',
'scss-lint'
] );
} )
// Build for production
gulp.task( 'build', [ 'set-prod-node-env' ], function () {
runSequence(
'sass'
);
} );