forked from maksrom/javascript-nodejs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
122 lines (87 loc) · 3.45 KB
/
gulpfile.js
File metadata and controls
122 lines (87 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/**
* NB: All tasks are initialized lazily, even plugins are required lazily,
* running 1 task does not require all tasks' files
*/
const gulp = require('gulp');
const path = require('path');
const fs = require('fs');
const assert = require('assert');
const development = (process.env.NODE_ENV == 'development');
const serverSources = [
'hmvc/**/*.js', 'modules/**/*.js', 'tasks/**/*.js', '*.js'
];
function lazyRequireTask(name) {
var args = [].slice.call(arguments, 1);
return function(callback) {
var task = require('./tasks/' + name).apply(this, args);
return task(callback);
};
}
function wrapWatch(watch, task) {
return function(callback) {
if (process.env.NODE_ENV == 'development') {
gulp.watch(watch, [task]);
} else {
callback();
}
};
}
gulp.task('lint-once', lazyRequireTask('lintOnce', { src: serverSources }));
gulp.task('lint-or-die', lazyRequireTask('lintOnce', { src: serverSources, dieOnError: true }));
gulp.task('lint', ['lint-once'], lazyRequireTask('lint', {src: serverSources}));
// usage: gulp loaddb --db fixture/db
gulp.task('loaddb', lazyRequireTask('loadDb'));
gulp.task("supervisor", ['link-modules'], lazyRequireTask('supervisor', { cmd: "./bin/www", watch: ["hmvc", "modules"] }));
gulp.task("app:livereload", lazyRequireTask("livereload", { watch: "www/**/*.*" }));
gulp.task('link-modules', lazyRequireTask('linkModules', { src: ['modules/*', 'hmvc/*'] }));
gulp.task("app:sync-resources", lazyRequireTask('syncResources', {
'app/fonts' : 'www/fonts',
'app/img': 'www/img'
}));
gulp.task("app:sync-css-images-once", lazyRequireTask('syncCssImages', {
src: 'app/stylesheets/**/*.{png,svg,gif,jpg}',
dst: 'www/i'
}));
gulp.task('app:sync-css-images', ['app:sync-css-images-once'],
wrapWatch('app/stylesheets/**/*.{png,svg,gif,jpg}', 'app:sync-css-images-once')
);
gulp.task('app:sprite-once', lazyRequireTask('sprite', {
spritesSearchFsRoot: 'app',
spritesWebRoot: '/i',
spritesFsDir: 'www/i',
styleFsDir: 'app/stylesheets/sprites'
}));
gulp.task('app:sprite', ['app:sprite-once'], wrapWatch("app/**/*.sprite/**", 'sprite'));
gulp.task('app:clean-compiled-css', function(callback) {
fs.unlink('./www/stylesheets/base.css', function(err) {
if (err && err.code == 'ENOENT') err = null;
callback(err);
});
});
// Show errors if encountered
gulp.task('app:compile-css-once',
['app:clean-compiled-css'],
lazyRequireTask('compileCss', {
src: './app/stylesheets/base.styl',
dst: './www/stylesheets'
})
);
gulp.task('app:compile-css', ['app:compile-css-once'], wrapWatch("app/**/*.styl", "app:compile-css-once"));
gulp.task("app:browserify:clean", lazyRequireTask('browserifyClean', { dst: './www/js'} ));
gulp.task("app:browserify", ['app:browserify:clean'], lazyRequireTask('browserify'));
// compile-css and sprites are independant tasks
// run both or run *-once separately
gulp.task('run', ['supervisor', 'app:livereload', "app:sync-resources", 'app:compile-css', 'app:sprite', 'app:browserify', 'app:sync-css-images']);
// TODO: refactor me out!
gulp.task('import', function(callback) {
const mongoose = require('config/mongoose');
const taskImport = require('tutorial/tasks/import');
taskImport({
root: path.join(path.dirname(__dirname), 'javascript-tutorial'),
updateFiles: true // skip same size files
//minify: true // takes time(!)
})(function() {
mongoose.disconnect();
callback.apply(null, arguments);
});
});