@@ -13,6 +13,9 @@ const ts = require("gulp-typescript");
13
13
const sourcemaps = require ( "gulp-sourcemaps" ) ;
14
14
const istanbul = require ( "gulp-istanbul" ) ;
15
15
const remapIstanbul = require ( "remap-istanbul/lib/gulpRemapIstanbul" ) ;
16
+ const rename = require ( "gulp-rename" ) ;
17
+ const file = require ( "gulp-file" ) ;
18
+ const uglify = require ( "gulp-uglify" ) ;
16
19
17
20
@Gulpclass ( )
18
21
export class Gulpfile {
@@ -38,6 +41,106 @@ export class Gulpfile {
38
41
. pipe ( shell ( [ "tsc" ] ) ) ;
39
42
}
40
43
44
+ // -------------------------------------------------------------------------
45
+ // Bundling task
46
+ // -------------------------------------------------------------------------
47
+
48
+ /**
49
+ * Compiles and compiles bundles.
50
+ */
51
+ @MergedTask ( )
52
+ compileBundles ( ) {
53
+ const amdTsProject = ts . createProject ( "tsconfig.json" , {
54
+ module : "amd" ,
55
+ outFile : "class-transformer.amd.js" ,
56
+ typescript : require ( "typescript" )
57
+ } ) ;
58
+ const systemTsProject = ts . createProject ( "tsconfig.json" , {
59
+ module : "system" ,
60
+ outFile : "class-transformer.system.js" ,
61
+ typescript : require ( "typescript" )
62
+ } ) ;
63
+ const amdPureTsProject = ts . createProject ( "tsconfig.json" , {
64
+ module : "amd" ,
65
+ outFile : "class-transformer.pure.amd.js" ,
66
+ noEmitHelpers : true ,
67
+ noImplicitUseStrict : true ,
68
+ typescript : require ( "typescript" )
69
+ } ) ;
70
+ const systemPureTsProject = ts . createProject ( "tsconfig.json" , {
71
+ module : "system" ,
72
+ outFile : "class-transformer.pure.system.js" ,
73
+ noEmitHelpers : true ,
74
+ noImplicitUseStrict : true ,
75
+ typescript : require ( "typescript" )
76
+ } ) ;
77
+
78
+ return [
79
+ gulp . src ( "build/bundle/**/*.ts" )
80
+ . pipe ( amdTsProject ( ) ) . js
81
+ . pipe ( gulp . dest ( "build/package" ) ) ,
82
+
83
+ gulp . src ( "build/bundle/**/*.ts" )
84
+ . pipe ( systemTsProject ( ) ) . js
85
+ . pipe ( gulp . dest ( "build/package" ) ) ,
86
+
87
+ gulp . src ( "build/bundle/**/*.ts" )
88
+ . pipe ( amdPureTsProject ( ) ) . js
89
+ . pipe ( gulp . dest ( "build/package" ) ) ,
90
+
91
+ gulp . src ( "build/bundle/**/*.ts" )
92
+ . pipe ( systemPureTsProject ( ) ) . js
93
+ . pipe ( gulp . dest ( "build/package" ) )
94
+ ] ;
95
+ }
96
+
97
+ /**
98
+ * Copies all source files into destination folder in a correct structure to build bundles.
99
+ */
100
+ @Task ( )
101
+ bundleCopySources ( ) {
102
+ return gulp . src ( [ "./src/**/*.ts" ] )
103
+ . pipe ( gulp . dest ( "./build/bundle/class-transformer" ) ) ;
104
+ }
105
+
106
+ /**
107
+ * Creates special main file for bundle build.
108
+ */
109
+ @Task ( )
110
+ bundleCopyMainFile ( ) {
111
+ return gulp . src ( "./package.json" , { read : false } )
112
+ . pipe ( file ( "class-transformer.ts" , `export * from "./class-transformer/index";` ) )
113
+ . pipe ( gulp . dest ( "./build/bundle" ) ) ;
114
+ }
115
+
116
+ /**
117
+ * Uglifys bundles.
118
+ */
119
+ @MergedTask ( )
120
+ uglify ( ) {
121
+ return [
122
+ gulp . src ( `./build/package/class-transformer.pure.amd.js` )
123
+ . pipe ( uglify ( ) )
124
+ . pipe ( rename ( `class-transformer.pure.amd.min.js` ) )
125
+ . pipe ( gulp . dest ( "./build/package" ) ) ,
126
+
127
+ gulp . src ( `./build/package/class-transformer.pure.system.js` )
128
+ . pipe ( uglify ( ) )
129
+ . pipe ( rename ( `class-transformer.pure.system.min.js` ) )
130
+ . pipe ( gulp . dest ( "./build/package" ) ) ,
131
+
132
+ gulp . src ( `./build/package/class-transformer.amd.js` )
133
+ . pipe ( uglify ( ) )
134
+ . pipe ( rename ( `class-transformer.amd.min.js` ) )
135
+ . pipe ( gulp . dest ( "./build/package" ) ) ,
136
+
137
+ gulp . src ( `./build/package/class-transformer.system.js` )
138
+ . pipe ( uglify ( ) )
139
+ . pipe ( rename ( `class-transformer.system.min.js` ) )
140
+ . pipe ( gulp . dest ( "./build/package" ) ) ,
141
+ ] ;
142
+ }
143
+
41
144
// -------------------------------------------------------------------------
42
145
// Packaging and Publishing tasks
43
146
// -------------------------------------------------------------------------
@@ -118,6 +221,9 @@ export class Gulpfile {
118
221
package ( ) {
119
222
return [
120
223
"clean" ,
224
+ [ "bundleCopySources" , "bundleCopyMainFile" ] ,
225
+ [ "compile" , "compileBundles" ] ,
226
+ [ "uglify" ] ,
121
227
"packageCompile" ,
122
228
"packageMoveCompiledFiles" ,
123
229
"packageClearCompileDirectory" ,
0 commit comments