UNPKG

2.15 kBJavaScriptView Raw
1// @ts-check
2
3const childProcess = require('child_process');
4const fs = require('fs');
5const path = require('path');
6
7const ts = require('gulp-typescript');
8const gulp = require('gulp');
9const clean = require('gulp-clean');
10
11const { join } = require('path');
12const { promisify } = require('util');
13
14const exec = promisify(childProcess.exec);
15
16/**
17 * SETTINGS
18 */
19const DIST = join(__dirname, 'dist');
20const LIB = join(__dirname, 'lib');
21const SAMPLE = join(__dirname, 'sample');
22
23const terminus = ts.createProject(join(__dirname, 'tsconfig.json'));
24
25/**
26 * UTIL
27 */
28function getFolders(dir) {
29 return fs
30 .readdirSync(dir)
31 .filter(file => fs.statSync(path.join(dir, file)).isDirectory());
32}
33
34const getDirs = base => getFolders(base).map(path => `${base}/${path}`);
35
36/**
37 * TASK
38 */
39
40gulp.task('clean', () => {
41 return gulp
42 .src([DIST, SAMPLE + '/*/node_modules/@nestjs/terminus', SAMPLE + '/*/dist'], {
43 allowEmpty: true,
44 })
45 .pipe(clean());
46});
47
48gulp.task('move', () => {
49 return gulp
50 .src(join(LIB, './**/*.proto'), { base: LIB })
51 .pipe(gulp.dest(join(DIST)));
52});
53
54gulp.task('build', () => {
55 return terminus
56 .src()
57 .pipe(terminus())
58 .pipe(gulp.dest(DIST));
59});
60
61gulp.task('move', () => {
62 const directories = getDirs(SAMPLE);
63
64 let stream = gulp.src(['dist/**/*']);
65
66 directories.forEach(dir => {
67 stream = stream.pipe(gulp.dest(dir + '/node_modules/@nestjs/terminus'));
68 });
69 return stream;
70});
71
72gulp.task('install:sample', async () => {
73 const directories = getDirs(SAMPLE);
74
75 const promises = directories.map(dir => exec(`npm install --prefix ${dir}`));
76
77 return await Promise.all(promises);
78});
79
80gulp.task('build:sample', async () => {
81 const directories = getDirs(SAMPLE);
82
83 const promises = directories.map(dir =>
84 exec(`npm run build --prefix ${dir}`),
85 );
86
87 return await Promise.all(promises);
88});
89
90gulp.task('clean:sample', async () => {});
91
92/**
93 * Aliases
94 */
95gulp.task('default', gulp.series(['clean', 'build']));
96gulp.task('build:app', gulp.series(['default']));
97gulp.task(
98 'build:all',
99 gulp.series(['build:app', 'install:sample', 'move', 'build:sample']),
100);