Skip to content

Commit

Permalink
Added minified output
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Busłowicz committed Nov 15, 2016
1 parent fa4271c commit a2cf31f
Showing 1 changed file with 52 additions and 25 deletions.
77 changes: 52 additions & 25 deletions gulpfile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const del = require("del");
const gulp = require("gulp");
const tslint = require("gulp-tslint");
const rename = require("gulp-rename");
const uglify = require("gulp-uglify");
const transform = require("gulp-transform");

const TSConfig = require("./tsconfig.json");
Expand Down Expand Up @@ -36,56 +37,82 @@ export class Gulpfile {
@Task() buildHTML() {
const project = this.buildConfig(es5Project);
return project
.pipe(transform(content => {
let links = [];
let scripts = [];
content = content
.toString()
.replace(/require\(['"](link|script)!(.*?)['"]\);\n?/g, (m, type, module) => {
switch (type) {
case "link":
links.push(module);
break;
case "script":
scripts.push(module);
break;
}
return "";
});
return Buffer.from(
links.map(module => `<link rel="import" href="${module}">\n`).join("") +
scripts.map(module => `<script src="${module}"></script>\n`).join("") +
`<script>\nvar ESP = ESP || {};\n(function(exports){${content}}(ESP));\n</script>`
);
}))
.pipe(transform(this.htmlWrapper))
.pipe(rename({ extname: ".html" }))
.pipe(gulp.dest(join(this.dest, "html")));
}

@Task() buildHTMLMin() {
const project = this.buildConfig(es5Project, false, true);
return project
.pipe(transform(this.htmlWrapper))
.pipe(rename({ extname: ".min.html" }))
.pipe(gulp.dest(join(this.dest, "html")));
}

@Task() buildES5() {
return this.buildConfig(es5Project, "cjs");
}

@Task() buildES5Min() {
return this.buildConfig(es5Project, "cjs", true);
}

@Task() buildES6() {
return this.buildConfig(es6Project, "es6");
}

@SequenceTask() build() {
return [ "clean", "lint", "buildES5", "buildES6", "buildHTML" ];
return [
"clean", "lint",
"buildES5", "buildES6", "buildHTML",
"buildES5Min", "buildHTMLMin"
];
}

@Task() default() {
// return [ "build" ];
console.log("default task");
}

private buildConfig(projectConfig, dest?) {
const project = gulp.src(this.include.concat(this.srcTS)).pipe(projectConfig());
private buildConfig(projectConfig, dest?, min?) {
let project = gulp.src(this.include.concat(this.srcTS)).pipe(projectConfig());
if (min) {
project = project.pipe(uglify());
if (dest) {
project = project.pipe(rename({extname: ".min.js"}));
}
}
if (dest) {
return project.pipe(gulp.dest(join(this.dest, dest)));
}
else {
return project;
}
}

private htmlWrapper(content) {
let links = [];
let scripts = [];

content = content
.toString()
.replace(/require\(['"](link|script)!(.*?)['"]\);\n?/g, (m, type, module) => {
switch (type) {
case "link":
links.push(module);
break;
case "script":
scripts.push(module);
break;
}
return "";
});

return Buffer.from(
links.map(module => `<link rel="import" href="${module}">\n`).join("") +
scripts.map(module => `<script src="${module}"></script>\n`).join("") +
`<script>\nvar ESP = ESP || {};\n(function(exports){${content}}(ESP));\n</script>`
);
}
}

0 comments on commit a2cf31f

Please sign in to comment.