Skip to content

Commit 0b12861

Browse files
author
Umed Khudoiberdiev
committed
added bundles to the package to use them on the frontend
1 parent 94fa490 commit 0b12861

File tree

2 files changed

+110
-1
lines changed

2 files changed

+110
-1
lines changed

gulpfile.ts

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ const ts = require("gulp-typescript");
1313
const sourcemaps = require("gulp-sourcemaps");
1414
const istanbul = require("gulp-istanbul");
1515
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");
1619

1720
@Gulpclass()
1821
export class Gulpfile {
@@ -38,6 +41,106 @@ export class Gulpfile {
3841
.pipe(shell(["tsc"]));
3942
}
4043

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+
41144
// -------------------------------------------------------------------------
42145
// Packaging and Publishing tasks
43146
// -------------------------------------------------------------------------
@@ -118,6 +221,9 @@ export class Gulpfile {
118221
package() {
119222
return [
120223
"clean",
224+
["bundleCopySources", "bundleCopyMainFile"],
225+
["compile", "compileBundles"],
226+
["uglify"],
121227
"packageCompile",
122228
"packageMoveCompiledFiles",
123229
"packageClearCompileDirectory",

package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "class-transformer",
3-
"version": "0.1.4",
3+
"version": "0.1.5",
44
"description": "Proper decorator-based transformation / serialization / deserialization of plain javascript objects to class constructors",
55
"license": "MIT",
66
"readmeFilename": "README.md",
@@ -35,13 +35,16 @@
3535
"del": "^2.2.1",
3636
"es6-shim": "^0.35.1",
3737
"gulp": "^3.9.1",
38+
"gulp-file": "^0.3.0",
3839
"gulp-istanbul": "^1.0.0",
3940
"gulp-mocha": "^3.0.1",
41+
"gulp-rename": "^1.2.2",
4042
"gulp-replace": "^0.5.4",
4143
"gulp-shell": "^0.5.1",
4244
"gulp-sourcemaps": "^1.6.0",
4345
"gulp-tslint": "^7.0.1",
4446
"gulp-typescript": "^3.1.3",
47+
"gulp-uglify": "^2.0.0",
4548
"gulpclass": "^0.1.1",
4649
"mocha": "^3.2.0",
4750
"moment": "2.14.1",

0 commit comments

Comments
 (0)