-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathgulpfile.js
115 lines (98 loc) · 2.89 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
111
112
113
114
var gulp = require('gulp');
var jshint = require('gulp-jshint');
var uglify = require('gulp-uglify');
// var minify = require("gulp-babel-minify");
// var browserify = require('gulp-browserify');
var browserify = require('browserify');
var sass = require('gulp-sass');
var csspurge = require('gulp-css-purge');
var gutil = require('gulp-util');
var pump = require('pump');
var babelify = require('babelify');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
// var sourcemaps = require('gulp-sourcemaps');
// var plugins = require('gulp-load-plugins');
// gulp helper
var gzip = require('gulp-gzip');
var del = require('del');
var rename = require('gulp-rename');
// path tools
var path = require('path');
var join = path.join;
var mkdirp = require('mkdirp');
// browserify build config
var buildDir = "build";
var browserFile = "browser.js";
//var packageConfig = require('./package.json');
var outputFile = "iHam";
// auto config for browserify
var outputFileSt = outputFile + ".js";
var outputFilePath = join(buildDir, outputFileSt);
var outputFileMinSt = outputFile + ".min.js";
var outputFileMinPath = join(buildDir, outputFileMinSt);
// a failing test breaks the whole build chain
gulp.task('default', ['lint', 'test', 'build-all']);
gulp.task('lint', function () {
return gulp.src('./src/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});
gulp.task('test', function () {
return gulp.src('./test/**/*.js', {read: false})
.pipe(mocha({
reporter: 'spec',
useColors: false
}));
});
// will remove everything in build
gulp.task('clean', function () {
return del([buildDir]);
});
// just makes sure that the build dir exists
gulp.task('init', ['clean'], function () {
mkdirp(buildDir, function (err) {
if (err) console.error(err)
});
});
// sass-import
gulp.task('sass', ['init'], function () {
return gulp
.src('./index.scss')
.pipe(sass({
errLogToConsole: true
}))
.pipe(csspurge())
.pipe(rename(outputFile + '.css'))
.pipe(gulp.dest(buildDir));
});
// browserify debug
gulp.task('build-browser', ['sass'], function () {
return browserify({entries: browserFile, debug: true})
.transform("babelify", { presets: ["es2015"] })
.bundle()
.pipe(source(browserFile))
.pipe(buffer())
.pipe(rename(outputFileSt))
.pipe(gulp.dest(buildDir))
});
// browserify min
gulp.task('build-browser-min', ['build-browser'], function (cb) {
pump([
gulp.src(outputFilePath),
minify({
mangle: {
keepClassName: true
}
}),
rename(outputFileMinSt),
gulp.dest(buildDir)
], cb);
});
gulp.task('build-browser-gzip', ['build-browser-min'], function () {
return gulp.src(outputFileMinPath)
.pipe(gzip({append: false, gzipOptions: {level: 9}}))
.pipe(rename(outputFile + ".min.gz.js"))
.pipe(gulp.dest(buildDir));
});
gulp.task('build-all', ['build-browser-gzip']);