-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
91 lines (84 loc) · 2.27 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
/**
* https://www.npmjs.com/package/gulp-typescript
* https://www.npmjs.com/package/gulp-requirejs-optimize
* https://raw.githubusercontent.com/requirejs/r.js/master/build/example.build.js
*/
const gulp = require("gulp");
const rxSource = "./node_modules/rxjs/src/**/*.ts";
const dist = "./dist";
const distJs = "./dist/js";
const rxDefinitions = "./dist/definitions";
const rxJs = "./dist/js/rxjs";
const rxJsName = "rxjs.js";
gulp.task("clear", function(callback) {
const rimraf = require("rimraf");
rimraf(dist, callback);
});
gulp.task("compile", ["clear"], function() {
const merge = require("merge2");
const ts = require("gulp-typescript");
const tsResult = gulp.src(rxSource).pipe(
ts({
target: "es5",
module: "amd", //
moduleResolution: "node",
//sourceMap: true,
emitDecoratorMetadata: true,
experimentalDecorators: true,
lib: ["es2017", "dom"],
noImplicitAny: true,
suppressImplicitAnyIndexErrors: true,
noEmitHelpers: true,
importHelpers: true,
declaration: true
})
);
return merge([
tsResult.dts.pipe(gulp.dest(rxDefinitions)),
tsResult.js.pipe(gulp.dest(rxJs))
]);
});
const bundle = () => {
const rjs = require("gulp-requirejs");
return rjs({
logLevel: 2,
//preserveLicenseComments: false,
optimize: "none", //"uglify",
generateSourceMaps: true,
useStrict: true,
baseUrl: distJs,
include: ["rxjs/Rx"],
out: rxJsName,
//packages: [
// {
// name: "rxjs/operators",
// location: "rxjs/operators/",
// main: "index.js"
// }
//],
paths: {
tslib: "empty:"
},
shim: {},
map: {}
}).pipe(gulp.dest(dist));
};
gulp.task("bundle", ["compile"], bundle);
gulp.task("bundle-only", bundle);
const minify = () => {
const sourcemaps = require("gulp-sourcemaps");
const uglify = require("gulp-uglify");
const rename = require("gulp-rename");
const plumber = require("gulp-plumber");
return gulp
.src(dist + "/" + rxJsName)
.pipe(sourcemaps.init())
.pipe(plumber())
.pipe(gulp.dest(dist))
.pipe(uglify())
.pipe(rename({ extname: ".min.js" }))
.pipe(sourcemaps.write("./"))
.pipe(gulp.dest(dist));
};
gulp.task("minify", ["bundle"], minify);
gulp.task("minify-only", minify);