Skip to content

Commit d11fdda

Browse files
Praseetha-KRuna
authored andcommitted
Dev build (#242)
* Adds build & dev-build tasks * Adds run-sequence & del to dev deps * Add .dev/ to gitignore * Remove site/css dest for lib-scss task
1 parent fd02556 commit d11fdda

3 files changed

Lines changed: 134 additions & 52 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
node_modules/
2-
assets/
2+
assets/
3+
.dev/

gulpfile.js

Lines changed: 127 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -16,99 +16,178 @@ var gulp = require('gulp'),
1616
deploy = require('gulp-gh-pages'),
1717
notify = require('gulp-notify'),
1818
sassLint = require('gulp-sass-lint'),
19-
twig = require('gulp-twig');
19+
twig = require('gulp-twig'),
20+
runSequence = require('run-sequence'),
21+
del = require('del');
2022

23+
var is_prod = false;
24+
25+
var paths = {
26+
libscss: 'source/scss/**/*.scss',
27+
sitescss: 'site/scss/**/*.scss',
28+
sitetwig: 'site/**/*.twig',
29+
siteimg: 'site/img',
30+
testimg: 'site/test/ref',
31+
testcss: 'site/test/css',
32+
filtersjson: 'site/filters.json',
33+
dev: '.dev/'
34+
}
35+
var compiledPaths = {
36+
libcss: 'source/css/',
37+
sitecss: 'site/css/'
38+
}
2139

2240
gulp.task('lib-scss', function() {
23-
var onError = function(err) {
24-
notify.onError({
25-
title: "Gulp",
26-
subtitle: "Failure!",
27-
message: "Error: <%= error.message %>",
28-
sound: "Beep"
29-
})(err);
30-
this.emit('end');
41+
var dest = paths.dev + compiledPaths.libcss;
42+
if (is_prod) {
43+
dest = compiledPaths.libcss;
44+
}
45+
var onError = function(err) {
46+
notify.onError({
47+
title: "Gulp",
48+
subtitle: "Failure!",
49+
message: "Error: <%= error.message %>",
50+
sound: "Beep"
51+
})(err);
52+
this.emit('end');
3153
};
3254

33-
return gulp.src('source/scss/**/*.scss')
55+
return gulp.src(paths.libscss)
3456
.pipe(plumber({errorHandler: onError}))
3557
.pipe(sass())
3658
.pipe(size({ gzip: true, showFiles: true }))
3759
.pipe(prefix())
38-
.pipe(gulp.dest('source/css'))
60+
.pipe(gulp.dest(dest))
3961
.pipe(cssmin())
4062
.pipe(size({ gzip: true, showFiles: true }))
4163
.pipe(rename({ suffix: '.min' }))
42-
.pipe(gulp.dest('source/css'))
43-
.pipe(gulp.dest('site/css'))
64+
.pipe(gulp.dest(dest))
4465
.pipe(reload({stream:true}));
4566
});
4667

4768
gulp.task('site-scss', function() {
48-
var onError = function(err) {
49-
notify.onError({
50-
title: "Gulp",
51-
subtitle: "Failure!",
52-
message: "Error: <%= error.message %>",
53-
sound: "Beep"
54-
})(err);
55-
this.emit('end');
69+
var dest = paths.dev + compiledPaths.sitecss;
70+
if (is_prod) {
71+
dest = compiledPaths.sitecss;
72+
}
73+
var onError = function(err) {
74+
notify.onError({
75+
title: "Gulp",
76+
subtitle: "Failure!",
77+
message: "Error: <%= error.message %>",
78+
sound: "Beep"
79+
})(err);
80+
this.emit('end');
5681
};
5782

58-
return gulp.src('site/scss/**/*.scss')
83+
return gulp.src(paths.sitescss)
5984
.pipe(plumber({errorHandler: onError}))
6085
.pipe(sass())
6186
.pipe(size({ gzip: true, showFiles: true }))
6287
.pipe(prefix())
63-
.pipe(gulp.dest('site/css'))
88+
.pipe(gulp.dest(dest))
89+
.pipe(reload({stream:true}))
6490
.pipe(cssmin())
6591
.pipe(size({ gzip: true, showFiles: true }))
6692
.pipe(rename({ suffix: '.min' }))
67-
.pipe(gulp.dest('site/css'))
93+
.pipe(gulp.dest(dest))
6894
.pipe(reload({stream:true}));
6995
});
7096

71-
gulp.task('browser-sync', function() {
72-
browserSync({
73-
server: {
74-
baseDir: "site"
75-
}
76-
});
77-
});
78-
79-
gulp.task('deploy', function () {
80-
return gulp.src('site/**/*')
81-
.pipe(deploy());
82-
});
83-
8497
gulp.task('sass-lint', function () {
8598
gulp.src('scss/**/*.scss')
8699
.pipe(sassLint())
87100
.pipe(sassLint.format())
88101
.pipe(sassLint.failOnError());
89102
});
90103

104+
gulp.task('jshint', function() {
105+
gulp.src('js/*.js')
106+
.pipe(jshint())
107+
.pipe(jshint.reporter('default'));
108+
});
109+
91110
gulp.task('twig', function () {
92-
gulp.src(['site/**/*.twig', "!site/twig/template.twig"], {base: './'})
111+
var dest = paths.dev;
112+
if (is_prod) {
113+
dest = './';
114+
}
115+
gulp.src([paths.sitetwig, "!site/twig/template.twig"], {base: './'})
93116
.pipe(twig({
94117
data: require('./site/filters.json')
95118
}))
96-
.pipe(gulp.dest('./'));
119+
.pipe(gulp.dest(dest));
97120
});
98121

122+
function copytask(src, dest) {
123+
return function() {
124+
return gulp.src(src)
125+
.pipe(gulp.dest(dest));
126+
}
127+
}
99128

100-
gulp.task('watch', function() {
101-
gulp.watch('source/scss/**/*.scss', ['lib-scss', 'site-scss', 'sass-lint']);
102-
gulp.watch('site/scss/**/*.scss', ['site-scss', 'sass-lint']);
129+
gulp.task('copy-site-img', copytask(
130+
paths.siteimg + '/**/*',
131+
paths.dev + paths.siteimg
132+
));
133+
gulp.task('copy-test-img', copytask(
134+
paths.testimg + '/**/*',
135+
paths.dev + paths.testimg
136+
));
137+
gulp.task('copy-test-css', copytask(
138+
paths.testcss + '/**/*',
139+
paths.dev + paths.testcss
140+
));
141+
gulp.task('copy-files', ['copy-site-img', 'copy-test-img', 'copy-test-css']);
142+
143+
gulp.task('dev-build', function(cb) {
144+
is_prod = false;
145+
runSequence(
146+
'cleandev',
147+
'copy-files',
148+
'site-scss',
149+
'lib-scss',
150+
'twig',
151+
cb
152+
);
153+
});
154+
gulp.task('watch', ['dev-build'], function() {
155+
browserSync({
156+
server: {
157+
baseDir: paths.dev + 'site'
158+
}
159+
});
160+
gulp.watch(paths.libscss, ['lib-scss', 'site-scss', 'sass-lint']);
161+
gulp.watch(paths.sitescss, ['site-scss', 'sass-lint']);
103162
gulp.watch('source/scss/**/*.html', ['minify-html']);
104-
gulp.watch('site/**/*.twig', ['twig']);
163+
gulp.watch(paths.sitetwig, ['twig']);
105164
});
106165

166+
gulp.task('cleandev', function() {
167+
return del([paths.dev]);
168+
});
107169

108-
gulp.task('jshint', function() {
109-
gulp.src('js/*.js')
110-
.pipe(jshint())
111-
.pipe(jshint.reporter('default'));
170+
gulp.task('build', function(cb) {
171+
is_prod = true;
172+
runSequence(
173+
'site-scss',
174+
'lib-scss',
175+
'twig',
176+
cb
177+
);
178+
});
179+
180+
gulp.task('server', function() {
181+
browserSync({
182+
server: {
183+
baseDir: 'site'
184+
}
185+
});
186+
});
187+
188+
gulp.task('deploy', function () {
189+
return gulp.src('site/**/*')
190+
.pipe(deploy());
112191
});
113192

114-
gulp.task('default', ['browser-sync', 'twig', 'lib-scss', 'site-scss', 'watch']);
193+
gulp.task('default', ['watch']);

package.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,24 @@
2020
],
2121
"devDependencies": {
2222
"browser-sync": "^2.16.1",
23+
"del": "^2.2.2",
2324
"gulp": "^3.9.1",
2425
"gulp-autoprefixer": "^3.1.1",
2526
"gulp-cached": "^1.1.0",
27+
"gulp-clean-css": "^2.0.13",
2628
"gulp-concat": "^2.6.0",
2729
"gulp-gh-pages": "^0.5.4",
28-
"gulp-imagemin": "^3.0.3",
29-
"gulp-clean-css": "^2.0.13",
3030
"gulp-htmlmin": "^3.0.0",
31+
"gulp-imagemin": "^3.0.3",
3132
"gulp-notify": "^2.2.0",
3233
"gulp-plumber": "^1.1.0",
3334
"gulp-rename": "^1.2.2",
3435
"gulp-sass": "^2.3.2",
3536
"gulp-sass-lint": "1.2.0",
3637
"gulp-size": "^2.1.0",
38+
"gulp-twig": "~0.5.0",
3739
"gulp-uglify": "^2.0.0",
3840
"imagemin-pngquant": "^5.0.0",
39-
"gulp-twig": "~0.5.0"
41+
"run-sequence": "^1.2.2"
4042
}
4143
}

0 commit comments

Comments
 (0)