-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
executable file
·171 lines (134 loc) · 4 KB
/
Copy pathgulpfile.js
File metadata and controls
executable file
·171 lines (134 loc) · 4 KB
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
// Include gulp
var gulp = require('gulp');
// Task notify - https://www.npmjs.com/package/gulp-notify
var notify = require("gulp-notify");
// JS Helpers
var jshint = require('gulp-jshint');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
// Browser Sync for awesomeness - http://www.browsersync.io/docs/gulp/
var browserSync = require('browser-sync');
var reload = browserSync.reload;
// Bring in PostCSS
var postcss = require('gulp-postcss');
// Autoprefixer, CSSNEXT and PreCSS
//var autoprefixer = require('autoprefixer');
var cssnext = require('cssnext');
var precss = require('precss');
// Lost Grid - https://github.com/corysimmons/lost
var sourcemaps = require('gulp-sourcemaps');
var lost = require('lost');
// Import other files
var atImport = require('postcss-import');
// Bring Media Queries into one
var mqpacker = require('css-mqpacker');
// CSS Lint
var stylelint = require("stylelint");
var reporter = require("postcss-reporter");
// Browser Support
var color_rgba_fallback = require('postcss-color-rgba-fallback');
var opacity = require('postcss-opacity');
var pseudoelements = require('postcss-pseudoelements');
var vmin = require('postcss-vmin');
var pixrem = require('pixrem'); // PX fallback for rem
var will_change = require('postcss-will-change');
// Strip and optimise CSS
var cssnano = require('cssnano');
// Auto styleguide
var fs = require('fs');
var styleGuide = require('postcss-style-guide');
var processedCSS = fs.readFileSync('src/style.css', 'utf-8');
// Do all sorts of magic with CSS
gulp.task('css', function () {
var processors = [
will_change,
lost(),
atImport,
cssnano,
precss,
cssnext,
color_rgba_fallback,
opacity,
pseudoelements,
vmin,
pixrem,
mqpacker,
/*
stylelint({
"rules": {
"color-no-invalid-hex": 2,
"declaration-colon-space-before": [2, "never"],
}
}),
reporter({
clearMessages: true,
})
*/
];
return gulp.src('./src/*.css')
.pipe(postcss(processors))
.pipe(gulp.dest('./public/library/css'))
.pipe(browserSync.stream())
.pipe(notify("CSS has been compiled and organised."));
});
// Create a styleguide
gulp.task('guide', function () {
return gulp.src('src/*.css')
.pipe(postcss([
require('postcss-style-guide')({
name: "Project name",
processedCSS: processedCSS,
dir: 'public/styleguide/'
})
]))
.pipe(gulp.dest('public/styleguide/'))
});
// Lint JS
gulp.task('lint', function() {
return gulp.src('public/library/js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(notify("Javascript has been linted"));
});
// Concatenate & Minify JS
gulp.task('scripts', function() {
return gulp.src([
//"public/library/js/libs/...",
"public/library/js/scripts.js",
])
.pipe(concat('all.js'))
.pipe(gulp.dest('public/library/js/min'))
.pipe(rename('all.min.js'))
.pipe(uglify())
.pipe(gulp.dest('public/library/js/min'))
.pipe(notify("Javascript has been concatinated and uglified"));
});
// Watch files and act if they are changed
gulp.task('watch', function() {
gulp.watch('public/library/js/*.js', ['lint', 'scripts']);
gulp.watch('src/*.css', ['css']);
});
// Static Server + watching scss/html files
gulp.task('serve', ['css'], function() {
/*
If static files use:
*/
browserSync.init({
server: "./public"
});
/*
else use dynamic url: - see http://www.browsersync.io/docs/options/#option-proxy
browserSync.init({
proxy: {
target: "http://url.local",
ws: true
}
});
*/
gulp.watch("src/*.css", ['css']);
gulp.watch("src/*.css", ['guide']);
gulp.watch("public/*.html").on('change', browserSync.reload);
});
// Default Task
gulp.task('default', ['css', 'lint', 'scripts', 'guide', 'watch', 'serve']);