1 | module.exports = function (gulp) {
|
2 | var path = require("path");
|
3 | var config = require("config");
|
4 | var gutil = require('gulp-util');
|
5 | var less = require("gulp-less");
|
6 | var autoprefixer = require("gulp-autoprefixer");
|
7 | var to5 = require('gulp-6to5');
|
8 | var del = require("del");
|
9 | var jade = require("gulp-jade");
|
10 | var ngHtml2Js = require("gulp-ng-html2js");
|
11 | var concat = require("gulp-concat");
|
12 | var uglify = require('gulp-uglify');
|
13 | var ngAnnotate = require('gulp-ng-annotate');
|
14 | var gulpif = require("gulp-if");
|
15 | var streamqueue = require('streamqueue');
|
16 | var cached = require("gulp-cached");
|
17 | var remember = require("gulp-remember");
|
18 |
|
19 | var base = process.cwd();
|
20 |
|
21 | var paths = {
|
22 | base: base,
|
23 | less: {
|
24 | src: base + "/app/client/style",
|
25 | dest: base + "/app/.assets/style"
|
26 | },
|
27 | jade: {
|
28 | src: base + "/app/client/templates",
|
29 | dest: base + "/app/.assets/templates"
|
30 | },
|
31 | js: {
|
32 | src: base + "/app/client/js",
|
33 | dest: base + "/app/.assets"
|
34 | },
|
35 | clean: [base + "/app/.assets"]
|
36 | };
|
37 |
|
38 | gulp.task("less", function () {
|
39 | gulp.src(paths.less.src + "/app.less")
|
40 | .pipe(less({
|
41 |
|
42 | }))
|
43 | .pipe(autoprefixer())
|
44 | .on("error", gutil.log)
|
45 | .pipe(gulp.dest(paths.less.dest));
|
46 | });
|
47 |
|
48 | gulp.task("jade", function () {
|
49 | gulp.src(paths.jade.src + "/*.jade")
|
50 | .pipe(jade())
|
51 | .pipe(ngHtml2Js({
|
52 | moduleName: "app",
|
53 | prefix: "templates/"
|
54 | }))
|
55 | .pipe(concat("templates.js"))
|
56 | .pipe(gulp.dest(paths.jade.dest))
|
57 | });
|
58 |
|
59 | gulp.task('es6', function () {
|
60 | var min = config.get("assets.min");
|
61 |
|
62 | var assets = require("./app/server/assets");
|
63 | var moduleName = "app";
|
64 | var moduleContent = assets.expandModule(moduleName);
|
65 |
|
66 | var cwd = base + "/app/client/";
|
67 |
|
68 | var jsFiles = moduleContent.js.map(function (item) {
|
69 | return "js/" + item;
|
70 | });
|
71 |
|
72 | var js = gulp.src(jsFiles, {cwd: cwd, base: cwd})
|
73 | .pipe(cached())
|
74 | .pipe(to5())
|
75 | .pipe(remember());
|
76 | var components = gulp.src(moduleContent.components, {cwd: cwd, base: cwd});
|
77 | var merged = streamqueue({ objectMode: true }, components, js);
|
78 |
|
79 | return merged
|
80 | .pipe(gulpif(min, concat("js/" + moduleName + ".js")))
|
81 | .pipe(gulpif(min, ngAnnotate()))
|
82 | .pipe(gulpif(min, uglify()))
|
83 | .pipe(gulp.dest(paths.js.dest));
|
84 | });
|
85 |
|
86 |
|
87 | gulp.task('watch', ["default"], function () {
|
88 | var assets = require("./app/server/assets");
|
89 | var moduleName = "app";
|
90 | var moduleContent = assets.expandModule(moduleName);
|
91 |
|
92 | var jsFiles = moduleContent.js.map(function (item) {
|
93 | return base + "/app/client/js/" + item;
|
94 | });
|
95 |
|
96 | gulp.watch([paths.less.src + "/**/*.less"], ["less"]);
|
97 | gulp.watch([paths.jade.src + "/*.jade"], ["jade"]);
|
98 | gulp.watch(jsFiles, ["es6"]);
|
99 | });
|
100 |
|
101 | gulp.task("build", ["jade", "less", "es6"]);
|
102 | gulp.task("default", ["build"]);
|
103 |
|
104 | gulp.task('clean', function (cb) {
|
105 | return del(paths.clean, cb);
|
106 | });
|
107 |
|
108 | gulp.task("clean", function (cb) {
|
109 | del(['app/.assets/'], cb);
|
110 | });
|
111 |
|
112 | gulp.task("build", ["jade", "less", "es6"]);
|
113 |
|
114 | gulp.task("default", ["clean"], function () {
|
115 | return gulp.start("build");
|
116 | });
|
117 | }; |
\ | No newline at end of file |