Skip to content

Commit ece521b

Browse files
authored
Merge pull request cferdinandi#42 from cferdinandi/development
Updated build
2 parents 5733f91 + 1886a7f commit ece521b

File tree

4 files changed

+6436
-16
lines changed

4 files changed

+6436
-16
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
language: node_js
22
node_js:
3-
- "0.10"
3+
- "7"
44
before_script:
55
- npm install -g gulp
66
script: gulp

gulpfile.js

Lines changed: 115 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
/**
2+
* Settings
3+
*/
4+
5+
var settings = {
6+
scripts: true, // Turn on/off script tasks
7+
styles: false, // Turn on/off style tasks
8+
svgs: false, // Turn on/off SVG tasks
9+
images: false, // Turn on/off image tasks
10+
docs: false, // Turn on/off documentation generation
11+
cacheBust: false // Turn on/off cache busting (adds a version number to minified files)
12+
};
13+
14+
115
/**
216
* Gulp Packages
317
*/
@@ -18,15 +32,23 @@ var livereload = require('gulp-livereload');
1832
var package = require('./package.json');
1933

2034
// Scripts and tests
21-
var jshint = require('gulp-jshint');
22-
var stylish = require('jshint-stylish');
23-
var concat = require('gulp-concat');
24-
var uglify = require('gulp-uglify');
25-
var optimizejs = require('gulp-optimize-js');
35+
var jshint = settings.scripts ? require('gulp-jshint') : null;
36+
var stylish = settings.scripts ? require('jshint-stylish') : null;
37+
var concat = settings.scripts ? require('gulp-concat') : null;
38+
var uglify = settings.scripts ? require('gulp-uglify') : null;
39+
var optimizejs = settings.scripts ? require('gulp-optimize-js') : null;
40+
41+
// Styles
42+
var sass = settings.styles ? require('gulp-sass') : null;
43+
var prefix = settings.styles ? require('gulp-autoprefixer') : null;
44+
var minify = settings.styles ? require('gulp-cssnano') : null;
45+
46+
// SVGs
47+
var svgmin = settings.svgs ? require('gulp-svgmin') : null;
2648

2749
// Docs
28-
var markdown = require('gulp-markdown');
29-
var fileinclude = require('gulp-file-include');
50+
var markdown = settings.docs ? require('gulp-markdown') : null;
51+
var fileinclude = settings.docs ? require('gulp-file-include') : null;
3052

3153

3254
/**
@@ -35,10 +57,22 @@ var fileinclude = require('gulp-file-include');
3557

3658
var paths = {
3759
input: 'src/**/*',
38-
output: 'dist/',
60+
output: 'static/',
3961
scripts: {
4062
input: 'src/js/*',
41-
output: 'dist/js/'
63+
output: 'static/js/'
64+
},
65+
styles: {
66+
input: 'src/sass/**/*.{scss,sass}',
67+
output: 'static/css/'
68+
},
69+
svgs: {
70+
input: 'src/svg/*',
71+
output: 'static/svg/'
72+
},
73+
images: {
74+
input: 'src/img/*',
75+
output: 'static/img/'
4276
},
4377
docs: {
4478
input: 'src/docs/*.{html,md,markdown}',
@@ -65,23 +99,28 @@ var banner = {
6599
'/*!' +
66100
' <%= package.name %> v<%= package.version %>' +
67101
' | (c) ' + new Date().getFullYear() + ' <%= package.author.name %>' +
68-
' | MIT License' +
102+
' | <%= package.license %> License' +
69103
' | <%= package.repository.url %>' +
70104
' */\n'
71105
};
72106

73107

74108
/**
75-
* Gulp Taks
109+
* Gulp Tasks
76110
*/
77111

78112
// Lint, minify, and concatenate scripts
79113
gulp.task('build:scripts', ['clean:dist'], function() {
114+
115+
if ( !settings.scripts ) return;
116+
117+
var fileVersion = settings.cacheBust ? '.' + package.version : '';
118+
80119
var jsTasks = lazypipe()
81120
.pipe(header, banner.full, { package : package })
82121
.pipe(optimizejs)
83122
.pipe(gulp.dest, paths.scripts.output)
84-
.pipe(rename, { suffix: '.min' })
123+
.pipe(rename, { suffix: '.min' + fileVersion})
85124
.pipe(uglify)
86125
.pipe(optimizejs)
87126
.pipe(header, banner.min, { package : package })
@@ -100,15 +139,66 @@ gulp.task('build:scripts', ['clean:dist'], function() {
100139
.pipe(jsTasks());
101140
});
102141

142+
// Process, lint, and minify Sass files
143+
gulp.task('build:styles', ['clean:dist'], function() {
144+
if ( !settings.styles ) return;
145+
146+
var fileVersion = settings.cacheBust ? '.' + package.version : '';
147+
148+
return gulp.src(paths.styles.input)
149+
.pipe(plumber())
150+
.pipe(sass({
151+
outputStyle: 'expanded',
152+
sourceComments: true
153+
}))
154+
.pipe(flatten())
155+
.pipe(prefix({
156+
browsers: ['last 2 version', '> 1%'],
157+
cascade: true,
158+
remove: true
159+
}))
160+
.pipe(header(banner.full, { package : package }))
161+
.pipe(gulp.dest(paths.styles.output))
162+
.pipe(rename({ suffix: '.min' + fileVersion }))
163+
.pipe(minify({
164+
discardComments: {
165+
removeAll: true
166+
}
167+
}))
168+
.pipe(header(banner.min, { package : package }))
169+
.pipe(gulp.dest(paths.styles.output));
170+
});
171+
172+
// Optimize SVGs
173+
gulp.task('build:svgs', ['clean:dist'], function () {
174+
if ( !settings.svgs ) return;
175+
176+
return gulp.src(paths.svgs.input)
177+
.pipe(plumber())
178+
.pipe(svgmin())
179+
.pipe(gulp.dest(paths.svgs.output));
180+
});
181+
182+
// Copy image files into output folder
183+
gulp.task('build:images', ['clean:dist'], function() {
184+
if ( !settings.images ) return;
185+
186+
return gulp.src(paths.images.input)
187+
.pipe(plumber())
188+
.pipe(gulp.dest(paths.images.output));
189+
});
190+
103191
// Lint scripts
104192
gulp.task('lint:scripts', function () {
193+
if ( !settings.scripts ) return;
194+
105195
return gulp.src(paths.scripts.input)
106196
.pipe(plumber())
107197
.pipe(jshint())
108198
.pipe(jshint.reporter('jshint-stylish'));
109199
});
110200

111-
// Remove pre-existing content from output folders
201+
// Remove pre-existing content from output and test folders
112202
gulp.task('clean:dist', function () {
113203
del.sync([
114204
paths.output
@@ -117,6 +207,8 @@ gulp.task('clean:dist', function () {
117207

118208
// Generate documentation
119209
gulp.task('build:docs', ['compile', 'clean:docs'], function() {
210+
if ( !settings.docs ) return;
211+
120212
return gulp.src(paths.docs.input)
121213
.pipe(plumber())
122214
.pipe(fileinclude({
@@ -135,20 +227,25 @@ gulp.task('build:docs', ['compile', 'clean:docs'], function() {
135227

136228
// Copy distribution files to docs
137229
gulp.task('copy:dist', ['compile', 'clean:docs'], function() {
230+
if ( !settings.docs ) return;
231+
138232
return gulp.src(paths.output + '/**')
139233
.pipe(plumber())
140234
.pipe(gulp.dest(paths.docs.output + '/dist'));
141235
});
142236

143237
// Copy documentation assets to docs
144238
gulp.task('copy:assets', ['clean:docs'], function() {
239+
if ( !settings.docs ) return;
240+
145241
return gulp.src(paths.docs.assets)
146242
.pipe(plumber())
147243
.pipe(gulp.dest(paths.docs.output + '/assets'));
148244
});
149245

150246
// Remove prexisting content from docs folder
151247
gulp.task('clean:docs', function () {
248+
if ( !settings.docs ) return;
152249
return del.sync(paths.docs.output);
153250
});
154251

@@ -162,7 +259,7 @@ gulp.task('listen', function () {
162259
});
163260

164261
// Run livereload after file change
165-
gulp.task('refresh', ['compile', 'docs'], function () {
262+
gulp.task('refresh', ['compile'], function () {
166263
livereload.changed();
167264
});
168265

@@ -175,7 +272,10 @@ gulp.task('refresh', ['compile', 'docs'], function () {
175272
gulp.task('compile', [
176273
'lint:scripts',
177274
'clean:dist',
178-
'build:scripts'
275+
'build:scripts',
276+
'build:styles',
277+
'build:images',
278+
'build:svgs'
179279
]);
180280

181281
// Generate documentation

0 commit comments

Comments
 (0)