-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgulpfile.js
116 lines (100 loc) · 3.4 KB
/
gulpfile.js
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
var gulp = require('gulp');
var connect = require('gulp-connect');
var watch = require('gulp-watch');
var mcss = require('gulp-mcs');
var exec = require('child_process').exec;
var lr = require('tiny-lr')();
var path = require('path');
var express = require('express');
var app = express();
// 需要配置项
var PathConfig = {
mcssSrc: ['./src/mcss/**/*.mcss','!./src/mcss/**/_*.mcss','!./src/mcss/mass/**/*.mcss'],
cssDist: './src/css/',
livereloadSrc: ['./src/javascript/**/*.js', './src/css/**/*.css', './statichtml/*.html','./template/**/*.ftl'], // 自动刷新监听文件/目录
fmppSrc: ['./template/**/*.ftl','./mock/**/*.tdd'] // 自动执行fmpp监听文件/目录
};
var EXPRESS_ROOT = __dirname;
var EXPRESS_PORT = 9000;
var APICONFIG = './async.api.js';
var LIVEPORT = 35729;
// 静态服务器
// 并开启自动刷新
gulp.task('server:connect', function() {
connect.server({
port: 9000,
livereload: true,
middleware: function(connect, opt) {
var Proxy = require('gulp-connect-proxy');
opt.route = '/rest'; // localhost:9000/rest/hostname.com/xxx will be proxied, no http(s) prefix..
var proxy = new Proxy(opt);
return [proxy];
}
})
});
// 通知服务器何时进行自动刷新
gulp.task('livereload:connect', function() {
gulp.src(PathConfig.livereloadSrc)
.pipe(watch(PathConfig.livereloadSrc))
.pipe(connect.reload())
});
// express服务器
function startExpress() {
var bodyParser = require('body-parser');
app.use(require('connect-livereload')());
app.use(express.static(EXPRESS_ROOT));
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
var apis = require(APICONFIG);
for(var key in apis) {
var method = key.split(/\s+/)[0].toLowerCase(),
url = key.split(/\s+/)[1];
app[method](url, apis[key]);
}
var server = app.listen(EXPRESS_PORT, function() {
var host = server.address().address;
var port = server.address().port;
console.log('async server listening at http://%s:%s', host, port)
});
}
function startLivereload() {
lr.listen(LIVEPORT, function() {
console.log('livereload listen at port ' + LIVEPORT);
});
}
function notifyLivereload(event) {
var fileName = require('path').relative(EXPRESS_ROOT, event.path);
lr.changed({
body: {
files: [fileName]
}
});
}
gulp.task('server:express', function() {
startExpress();
startLivereload();
gulp.watch(PathConfig.livereloadSrc, notifyLivereload);
});
// 自动进行fmpp
gulp.task('fmpp', function() {
exec('fmpp', function(err, stdout, stderr) {
if(stdout) console.log(stdout);
if(stderr) console.log(stderr);
if(err) console.log('exec error: ', err);
})
});
gulp.task('watchFmpp', function() {
gulp.watch(PathConfig.fmppSrc, ['fmpp']);
});
// mcss to css
gulp.task('mcss', function() {
gulp.src(PathConfig.mcssSrc)
.pipe(mcss())
.pipe(gulp.dest(PathConfig.cssDist))
});
gulp.task('watchMcss', function() {
gulp.watch(PathConfig.mcssSrc[0], ['mcss']);
});
//默认启动
gulp.task('numen', ['mcss','fmpp','server:express','watchMcss']);
gulp.task('default', ['mcss', 'fmpp', 'server:express', 'watchFmpp', 'watchMcss']);