-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
92 lines (73 loc) · 2.07 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
'use strict';
/*!
* V4Fire Malevich
* https://github.com/V4Fire/Malevich
*
* Released under the MIT license
* https://github.com/V4Fire/Malevich/blob/master/LICENSE
*/
const
$C = require('collection.js'),
path = require('upath'),
isPathInside = require('is-path-inside');
const
nodemon = require('gulp-nodemon'),
plumber = require('gulp-plumber');
const
{src} = require('config'),
{config, resolve} = require('@pzlr/build-core');
const
defineRequire = include('build/require.gulp');
module.exports = function (gulp = require('gulp')) {
require('@v4fire/client/gulpfile')(gulp);
gulp.task('build:server', () => {
const
ts = require('gulp-typescript'),
defReq = `(${defineRequire.toString()})();\n`,
header = require('gulp-header'),
isDep = new RegExp(`(^.*?(?:^|[\\/])(${config.dependencies.map((el) => RegExp.escape(el)).join('|')}))(?:$|[\\/])`),
tsProject = ts.createProject('server.tsconfig.json');
function dest(file) {
const
out = src.serverOutput(),
depDecl = isDep.exec(file.path);
if (depDecl) {
file.base = $C(resolve.rootDependencies).one.get((el) => isPathInside(el, depDecl[1]));
return path.join(out, 'node_modules', depDecl[2]);
}
return out;
}
return gulp.src(['*.d.ts', `${config.serverDir}/**/*.ts`, ...resolve.rootDependencies.map((el) => `${el}/**/*.ts`)])
.pipe(plumber())
.pipe(tsProject())
.js
.pipe(header(defReq))
.pipe(gulp.dest(dest));
});
gulp.task('watch:server.build', (done) => {
gulp.watch(`${config.serverDir}/**/*.ts`, gulp.series('build:server'));
done();
});
gulp.task('watch:server', (done) => {
const
dest = src.serverOutput(),
stream = nodemon({
script: dest,
ext: 'js',
watch: [dest],
done
});
stream.on('quit', function () {
console.log('App has quit');
process.exit();
}).on('restart', function (files) {
console.log('App restarted due to: ', files);
});
done();
});
gulp.task(
'start:watch:server', gulp.series(['build:server', 'watch:server.build', 'watch:server'])
);
global.callGulp(module);
};
module.exports();