-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathgulpfile.js
105 lines (88 loc) · 2.84 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
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var template = require('gulp-template');
var prism = require('./source/example/prism.js');
var fs = require('fs');
var runSequence = require('run-sequence');
var ghPages = require('gulp-gh-pages');
var gzipSize = require('gzip-size');
var prettyBytes = require('pretty-bytes');
var del = require('del');
gulp.task('default', ['build']);
gulp.task('build', function(cb) {
runSequence('clear', ['css', 'js', 'example-misc'], 'example-html', cb);
});
gulp.task('dev', ['build'], function() {
gulp.watch('./source/*.js', ['js']);
gulp.watch('./source/*.css', ['css']);
gulp.watch(['./source/example/css/**/*.css', './source/example/js/**/*.js'], ['example-misc']);
gulp.watch('./source/example/index.html', ['example-html']);
});
gulp.task('gh-pages', ['build'], function () {
return gulp.src('./dist/example/**/*')
.pipe(ghPages());
});
gulp.task('clear', function(cb) {
del(['dist'], cb);
});
gulp.task('css', function() {
return gulp.src(['./source/*.css'])
.pipe(gulp.dest('./dist/example/css'));
// .pipe(gulp.dest('./dist'));
});
gulp.task('js', function() {
return gulp.src(['./source/*.js'])
.pipe(gulp.dest('./dist/example/js'))
.pipe(uglify({
preserveComments: function(node, comment) {
return comment.pos === 0;
}
}))
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('./dist/example/js'));
});
gulp.task('example-misc', function() {
return gulp.src(['./source/example/css/**/*.css', './source/example/js/**/*.js'], {base: './source/example'})
.pipe(gulp.dest('./dist/example'));
});
gulp.task('example-html', ['js', 'css'], function() {
var data = {
sizes: {},
sizesGzipped: {},
files: {}
};
var types = {
js: 'javascript',
css: 'css',
html: 'markup'
};
[
'css/jquery.custom-scroll.css',
'js/jquery.custom-scroll.js',
'js/jquery.custom-scroll.min.js'
].forEach(function(fileName) {
var stats = fs.statSync('./dist/example/' + fileName);
data.sizes[fileName] = prettyBytes(stats.size);
var file = fs.readFileSync('./dist/example/' + fileName, 'utf8');
data.sizesGzipped[fileName] = prettyBytes(gzipSize.sync(file));
});
[
'code-block/include.html',
'code-block/how-it-works.html',
'code-block/init.js',
'code-block/api.js',
'css/jquery.custom-scroll-tiny.css',
'js/example-advanced.js'
]
.forEach(function(fileName) {
var file = fs.readFileSync('./source/example/' + fileName, 'utf8');
var type = fileName.split('.').pop();
var filePrism = prism.highlight(file, prism.languages[types[type]]);
var filePrismNum = '<ol><li>' + filePrism.split('\n</span>').join('</span>\n').split('\n').join('</li><li>') + '</li></ol>';
data.files[fileName] = filePrismNum;
});
return gulp.src('./source/example/index.html')
.pipe(template(data))
.pipe(gulp.dest('./dist/example/'));
});