-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
112 lines (95 loc) · 3.34 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
var gulp = require('gulp'),
newer = require('gulp-newer'),
jshint = require('gulp-jshint'),
uglify = require('gulp-uglify'),
sass = require('gulp-sass'),
globbing = require('gulp-css-globbing'),
scsslint = require('gulp-scss-lint'),
minifycss = require('gulp-minify-css'),
// imagemin = require('gulp-imagemin'),
autoprefixer = require('gulp-autoprefixer'),
include = require('gulp-file-include'),
prettify = require('gulp-prettify'),
removeComment = require('gulp-remove-html-comments'),
cmq = require('gulp-combine-media-queries');
// Browse to project dir and install each package with npm install <package-name> --save-dev
// npm install gulp gulp-newer gulp-jshint gulp-uglify gulp-sass gulp-css-globbing gulp-scss-lint gulp-minify-css gulp-autoprefixer gulp-file-include gulp-prettify gulp-remove-html-comments gulp-combine-media-queries --save-dev
var browsersync = require('browser-sync').create(); // Different install command: npm install browser-sync gulp --save-dev
// BrowserSync Static Server ------------------
gulp.task('serve', ['css'], function() {
browsersync.init({
server: "./",
browser: "google chrome"
});
gulp.watch("src/sass/**/*.scss", ['css']);
gulp.watch("*.html").on('change', browsersync.reload);
});
//CSS Linting ---------------------------------
gulp.task('lint-scss', function() {
return gulp.src(['src/sass/**/*.scss', '!src/sass/vendor/*.scss'])
.pipe(scsslint())
.pipe(scsslint.reporter());
});
//JS Linting ----------------------------------
gulp.task('lint-js', function(){
return gulp.src(['src/js/**/*.js', '!src/js/vendor/*.js'])
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'));
});
// GULP TASKS //-------------------------------
// Content ------------------------------------
gulp.task('html', function() {
gulp.src('src/*.html')
.pipe(include({
basepath: '',
}))
.pipe(removeComment())
.pipe(prettify({
indent_with_tabs: "true"
}))
.pipe(gulp.dest('./'))
});
// Styles -------------------------------------
gulp.task('css', function(){
gulp.src('src/sass/*.scss')
.pipe(globbing({extensions: '.scss'})) // Glob all SASS files
.pipe(sass()) // SASS Preprocessor
.pipe(cmq()) // Combine all Media Queries
.pipe(autoprefixer({browsers: ['last 4 versions'], cascade: false})) // Auto-Prefix
.pipe(minifycss()) // Minify css
.pipe(gulp.dest('assets/css'))
.pipe(browsersync.stream());
});
// Scripts ------------------------------------
gulp.task('js', function(){
gulp.src('src/js/**/*.js')
.pipe(newer('assets/js'))
.pipe(uglify())
.pipe(gulp.dest('assets/js'));
});
// Images -------------------------------------
// gulp.task('img', function(){
// gulp.src('src/img/**/*.{jpg,jpeg,png,gif,svg,ico}')
// .pipe(newer('assets/img'))
// .pipe(imagemin({
// optimizationLevel: 5,
// progressive: true,
// interlaced: true,
// svgoPlugins: [{
// collapseGroups: false,
// removeViewBox: false
// }]
// }))
// .pipe(gulp.dest('assets/img'))
// });
// FUNCTIONS //--------------------------------
// Watch Function
gulp.task('watch', function() {
gulp.watch('src/**/*.html', ['html']);
// gulp.watch('src/style/**/*.scss', ['css']);
gulp.watch('src/js/**/*.js', ['js']);
// gulp.watch('src/img/**/*', ['img']);
gulp.watch('src/**/*.md',['html']);
});
// Default Function
gulp.task('default', ['serve', 'watch'], function(){});