forked from skydiver/october-theme-blank-materialize
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
94 lines (89 loc) · 3.18 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
/*
* Build project assets for development and production
*
* Installation (Node Package Manager):
* > npm install --global gulp-cli bower
* > npm install && bower install
*
* Usage (GulpJS):
* > gulp styles [--production][--src=<filepath/filename.scss> [--dest=<path/dirname>]]
* > gulp scripts [--production][--src=<filepath/filename.js> [--dest=<path/dirname>]]
* > gulp upbuild [--production]
* > gulp watch
*/
'use strict';
var // defaults
defassets_srcdir = "assets/",
defvendor_srcdir = defassets_srcdir+"vendor/",
defstyles_srcdir = defassets_srcdir+"scss/",
defstyles_srcglb = defstyles_srcdir+"*.scss",
defscripts_srcglb = defassets_srcdir+"es6/*.js",
defassets_destdir = defassets_srcdir,
defstyles_destdir = defassets_destdir+"css/",
defscripts_destdir = defassets_destdir+"js/",
// global modules
args = require('yargs').argv,
pump = require('pump'),
gulp = require('gulp'),
gulpif = require('gulp-if'),
rename = require('gulp-rename');
gulp.task('default', ['styles', 'scripts']);
gulp.task('styles', function(cb){
var sourcemaps = require('gulp-sourcemaps'),
sass = require('gulp-sass'),
autoprefixer = require('gulp-autoprefixer'),
cleancss = require('gulp-clean-css'),
ignore = require('gulp-ignore'),
srcfiles = args.src || defstyles_srcglb,
destdir = args.dest || defstyles_destdir;
pump([ gulp.src( srcfiles ),
sourcemaps.init(),
sass( {
errLogToConsole: true,
outputStyle: 'nested',
//sourceComments: true,
sourceMapEmbed: false,
includePaths: [
defvendor_srcdir+"materialize/sass"
] } ),
autoprefixer( {
cascade: false,
//map: true,
browsers: ["last 2 versions", "Safari >= 8", "iOS >= 8"] } ),
sourcemaps.write( "./", {
includeContent: false,
sourceRoot: "../scss" } ),
gulp.dest( destdir ),
gulpif(args.production, ignore.exclude( "*.map" ) ),
gulpif(args.production, rename( { suffix: ".min" } ) ),
gulpif(args.production, cleancss() ),
gulpif(args.production, gulp.dest( destdir ) )
], cb);
});
gulp.task('scripts', function(cb){
var include = require('gulp-include'), // extend source files with Sprockets syntax
uglify = require('gulp-uglify'),
srcfiles = args.src || defscripts_srcglb,
destdir = args.dest || defscripts_destdir;
pump([ gulp.src( srcfiles ),
include(),
gulp.dest( destdir ),
gulpif(args.production, rename( function(fullname){ fullname.extname = ".min.js"; } ) ),
gulpif(args.production, uglify( { output: { comments: "/^!/" } } ) ),
gulpif(args.production, gulp.dest( destdir ) )
], cb);
});
gulp.task('upbuild', ['styles', 'scripts'], function(cb){
var fs = require('fs'),
yaml = require('js-yaml'),
srcfile = args.src || defassets_destdir+"../fields.yaml";
if (fs.existsSync(srcfile)) {
var obyaml = yaml.safeLoad( fs.readFileSync( srcfile, "utf8" ), { json: true } );
obyaml.fields.version.default++;
fs.writeFileSync( srcfile, yaml.dump( obyaml, { indent: 4 } ) );
}
});
gulp.task('watch', function(){
gulp.watch( [defstyles_srcglb], ['styles'] );
gulp.watch( [defscripts_srcglb], ['scripts'] );
});