-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.browserify.js
63 lines (55 loc) · 1.56 KB
/
gulpfile.browserify.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
const { src, dest, parallel, series, watch } = require("gulp");
const ts = require("gulp-typescript");
const tsProject = ts.createProject("tsconfig.json");
const merge = require("merge2");
const concat = require('gulp-concat')
const browserify = require("browserify");
const source = require('vinyl-source-stream');
const tsify = require("tsify");
const del = require('del')
const uglify = require('gulp-uglify');
const sourcemaps = require('gulp-sourcemaps');
const buffer = require('vinyl-buffer');
const DEVMODE = process.argv[2] === "--dev" ? true : false
const paths = {
pages: ['src/*.html']
};
const clean = () => {
return del('lib')
}
const html = () => {
return src(paths.pages)
.pipe(dest("lib"));
}
// 输出 CommonJS 规范到 dist 目录下
const compile = () => {
const tsResult = tsProject.src().pipe(tsProject());
return merge([
tsResult.dts.pipe(concat('bundle.d.ts')).pipe(dest('lib')),
browserify({
basedir: '.',
debug: true,
entries: ['src/index.ts'],
cache: {},
packageCache: {}
})
.plugin(tsify)
.transform('babelify', {
presets: [["@babel/preset-env", { "modules": false }]],
extensions: ['.ts']
})
.bundle()
.pipe(source('bundle.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(sourcemaps.write('./'))
.pipe(dest("lib"))
]);
}
const generator = series(clean, html, compile)
const change = DEVMODE ? () => {
watch('src/**/*.ts', generator)
generator()
} : generator
exports.default = change