forked from Azure/azure.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
107 lines (95 loc) · 3.85 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
'use strict';
var gulp = require('gulp'),
sass = require('gulp-sass'),
rename = require('gulp-rename'),
uglify = require('gulp-uglify'),
shell = require('gulp-shell'),
del = require('del'),
gulpIf = require('gulp-if'),
argv = require('yargs').argv,
sourcemaps = require('gulp-sourcemaps'),
concat = require('gulp-concat'),
browserSync = require('browser-sync'),
image = require('gulp-image'),
cache = require('gulp-cached'),
remember = require('gulp-remember');
var SITE_DIR = './_site';
gulp.task('assets:styles', function () {
var options = {includePaths: ['./node_modules/bootstrap/scss']};
if (argv.prod) {
options.outputStyle = 'compressed';
}
return gulp.src([
'./assets/styles/*.scss',
'./node_modules/githubjs/src/github.css'
]).pipe(sourcemaps.init())
.pipe(sass(options).on('error', sass.logError))
.pipe(concat('main.css'))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./css'));
});
gulp.task('assets:scripts', function () {
return gulp.src([
'./assets/scripts/polyfills/*.js',
'./node_modules/swagger-ui/dist/lib/lodash.min.js',
'./node_modules/bootstrap/dist/js/bootstrap.js',
'./node_modules/swagger-ui/dist/lib/jquery.ba-bbq.min.js',
'./node_modules/swagger-ui/dist/lib/jquery.slideto.min.js',
'./node_modules/swagger-ui/dist/lib/jquery.wiggle.min.js',
'./node_modules/swagger-ui/dist/lib/handlebars-4.0.5.js',
'./node_modules/swagger-ui/dist/lib/backbone-min.js',
'./node_modules/swagger-ui/dist/lib/js-yaml.min.js',
'./node_modules/swagger-ui/dist/swagger-ui.js',
'./node_modules/swagger-ui/dist/lib/highlight.9.1.0.pack.js',
'./node_modules/swagger-ui/dist/lib/highlight.9.1.0.pack_extended.js',
'./node_modules/swagger-ui/dist/lib/jsoneditor.min.js',
'./node_modules/swagger-ui/dist/lib/marked.js',
'./node_modules/swagger-ui/dist/lib/swagger-oauth.js',
'./assets/scripts/app.js'
]).pipe(sourcemaps.init())
.pipe(concat('app.js'))
.pipe(gulpIf(process.env.JEKYLL_ENV == 'production', uglify()))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./js'));
});
gulp.task('assets:images', function () {
return gulp.src([
'./assets/images/*',
'./node_modules/swagger-ui/dist/images/collapse.gif',
'./node_modules/swagger-ui/dist/images/expand.gif',
'./node_modules/swagger-ui/dist/images/explorer_icons.png',
'./node_modules/swagger-ui/dist/images/logo_small.png',
'./node_modules/swagger-ui/dist/images/throbber.gif',
'./node_modules/swagger-ui/dist/images/wordnik_api.png'
]).pipe(cache('images'))
.pipe(image())
.pipe(gulp.dest('./images'));
});
gulp.task('assets', ['assets:styles', 'assets:scripts', 'assets:images']);
gulp.task('jekyll:build', ['assets'], shell.task(['bundle exec jekyll build']));
gulp.task('build', ['jekyll:build']);
gulp.task('rebuild', ['build'], browserSync.reload)
// watch and reload
gulp.task('serve', ['build'], function () {
browserSync({
server: {
baseDir: SITE_DIR,
middleware: function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
next();
}
}
});
var watcher = gulp.watch(['./assets/**/*', './_posts/**/*', './_layouts/**/*', './_includes/**/*', './pages/**/*',
'./*.html', './*.json', './_data/**/*', './blog/**/*'], ['rebuild']);
watcher.on(['change', 'added'], function (evt) {
if (evt.type === 'deleted') {
delete cache.caches['images'][evt.path];
remember.forget('images', evt.path);
}
});
});
gulp.task('clean', function () {
return del([SITE_DIR, './js', './css', './images']);
});
gulp.task('default', ['serve']);