Browse Source

MPIDE-29: cache angular templates at build time

Angular component templates are now stored in $templateCache to prevent
needless fetching of small html files from the server.
Austin Meagher 10 years ago
parent
commit
08206af4b7
2 changed files with 24 additions and 6 deletions
  1. 20 5
      gulpfile.js
  2. 4 1
      package.json

+ 20 - 5
gulpfile.js

@@ -10,10 +10,12 @@ var gulp = require("gulp"),
 	rename = require("gulp-rename"),
 	uglify = require("gulp-uglify"),
 	minifyCss = require("gulp-minify-css"),
+	minifyHtml = require("gulp-minify-html"),
 	concat = require("gulp-concat"),
 	useref = require("gulp-useref"),
 	gulpif = require("gulp-if"),
 	ngAnnotate = require("gulp-ng-annotate"),
+	ngHtml2Js = require("gulp-ng-html2js"),
 	errLogger = gutil.log.bind(gutil, gutil.colors.red("Error: ")),
 	opts = {
 		buildDir: "build",
@@ -24,6 +26,16 @@ gulp
 .task("pre", function() {
 	gulp.src(["src/web/**/*.html", "!src/web/index.html", "!src/web/bower_components/**/*"])
 	.pipe(plumber(errLogger))
+	.pipe(minifyHtml())
+	.pipe(ngHtml2Js({
+		moduleName: function(file) {
+			var pathParts = file.path.split("/");
+			var prefix = pathParts[pathParts.length - 3];
+			var moduleName = pathParts[pathParts.length - 2];
+			return "modellang-ide." + (prefix === "pages" ? "" : prefix + ".") + moduleName;
+		}
+	}))
+	.pipe(concat("templates.min.js"))
 	.pipe(gulp.dest(opts.buildDir + "/web"));
 
 	return gulp.src("src/web/assets/**/*")
@@ -37,15 +49,13 @@ gulp
 	return bower();
 })
 
-.task("minify", ["pre", "bower"], function() {
+.task("concat", ["pre", "bower"], function() {
 	var assets = useref.assets();
 
 	return gulp.src("src/web/index.html")
 	.pipe(plumber(errLogger))
 	.pipe(assets)
 	.pipe(gulpif("index.min.js", babel({blacklist: ["useStrict"]})))
-	.pipe(gulpif("index.min.js", ngAnnotate()))
-	.pipe(gulpif("*.js", uglify()))
 	.pipe(gulpif("*.css", minifyCss()))
 	.pipe(assets.restore())
 	.pipe(useref())
@@ -79,8 +89,13 @@ gulp
 	return;
 })
 
-.task("build", ["minify", "parser", "generator"], function() {
-	return;
+.task("build", ["concat", "parser", "generator"], function() {
+	return gulp.src(opts.buildDir + "/web/{index,templates}.min.js")
+	.pipe(plumber(errLogger))
+	.pipe(concat("index.min.js"))
+	.pipe(ngAnnotate())
+	.pipe(uglify())
+	.pipe(gulp.dest(opts.buildDir + "/web"));
 })
 
 .task("deploy", ["build"], function() {

+ 4 - 1
package.json

@@ -12,17 +12,20 @@
     "pegjs": "0.8.0",
     "gulp-util": "^3.0.5",
     "gulp-plumber": "^1.0.1",
+    "gulp": "^3.9.0",
     "gulp-bower": "^0.0.10",
     "gulp-peg": "^0.1.2",
     "gulp-gh-pages": "^0.5.2",
     "gulp-babel": "^5.1.0",
+    "gulp-minify-html": "^1.0.3",
+    "gulp-ng-html2js": "^0.2.0",
     "gulp-rename": "^1.2.2",
     "gulp-uglify": "^1.2.0",
     "gulp-minify-css": "^1.1.6",
     "gulp-concat": "^2.5.2",
     "gulp-useref": "^1.2.0",
     "gulp-if": "^1.2.5",
-    "gulp-ng-annotate": "^1.0.0",
+    "gulp-ng-annotate": "^1.0.0"
   },
   "scripts": {
     "postinstall": "gulp",