UNPKG

3.22 kBJavaScriptView Raw
1module.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 //paths: ["node_modules"] //change to bower components?
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