1- const fs = require ( 'fs' ) ;
2- const path = require ( 'path' ) ;
3- const gulp = require ( 'gulp' ) ;
4- const ts = require ( 'gulp-typescript' ) ;
5- const sourcemaps = require ( 'gulp-sourcemaps' ) ;
6- const clean = require ( 'gulp-clean' ) ;
7- const deleteEmpty = require ( 'delete-empty' ) ;
8- const childProcess = require ( 'child_process' ) ;
9- const log = require ( 'fancy-log' ) ;
10- const clc = require ( 'cli-color' ) ;
11- const promiseSeries = require ( 'promise.series' ) ;
12-
13- const { promisify } = require ( 'util' ) ;
14-
15- const exec = promisify ( childProcess . exec ) ;
16-
17- const SAMPLE = path . join ( __dirname , 'sample' ) ;
1+ 'use strict' ;
2+ /**
3+ * Load the TypeScript compiler, then load the TypeScript gulpfile which simply loads all
4+ * the tasks. The tasks are really inside tools/gulp/tasks.
5+ */
186
19- const packages = {
20- common : ts . createProject ( 'packages/common/tsconfig.json' ) ,
21- core : ts . createProject ( 'packages/core/tsconfig.json' ) ,
22- microservices : ts . createProject ( 'packages/microservices/tsconfig.json' ) ,
23- websockets : ts . createProject ( 'packages/websockets/tsconfig.json' ) ,
24- testing : ts . createProject ( 'packages/testing/tsconfig.json' ) ,
25- 'platform-express' : ts . createProject (
26- 'packages/platform-express/tsconfig.json' ,
27- ) ,
28- 'platform-fastify' : ts . createProject (
29- 'packages/platform-fastify/tsconfig.json' ,
30- ) ,
31- 'platform-socket.io' : ts . createProject (
32- 'packages/platform-socket.io/tsconfig.json' ,
33- ) ,
34- 'platform-ws' : ts . createProject ( 'packages/platform-ws/tsconfig.json' ) ,
35- } ;
36- const modules = Object . keys ( packages ) ;
37- const source = 'packages' ;
38- const distId = process . argv . indexOf ( '--dist' ) ;
39- const dist = distId < 0 ? source : process . argv [ distId + 1 ] ;
40-
41- gulp . task ( 'default' , function ( ) {
42- modules . forEach ( module => {
43- gulp . watch (
44- [ `${ source } /${ module } /**/*.ts` , `${ source } /${ module } /*.ts` ] ,
45- [ module ] ,
46- ) ;
47- } ) ;
48- } ) ;
49-
50- gulp . task ( 'copy-misc' , function ( ) {
51- return gulp
52- . src ( [ 'Readme.md' , 'LICENSE' , '.npmignore' ] )
53- . pipe ( gulp . dest ( `${ source } /common` ) )
54- . pipe ( gulp . dest ( `${ source } /core` ) )
55- . pipe ( gulp . dest ( `${ source } /microservices` ) )
56- . pipe ( gulp . dest ( `${ source } /websockets` ) )
57- . pipe ( gulp . dest ( `${ source } /testing` ) )
58- . pipe ( gulp . dest ( `${ source } /platform-fastify` ) )
59- . pipe ( gulp . dest ( `${ source } /platform-express` ) )
60- . pipe ( gulp . dest ( `${ source } /platform-ws` ) )
61- . pipe ( gulp . dest ( `${ source } /platform-socket.io` ) ) ;
62- } ) ;
63-
64- gulp . task ( 'clean:output' , function ( ) {
65- return gulp
66- . src (
67- [ `${ source } /**/*.js` , `${ source } /**/*.d.ts` , `${ source } /**/*.js.map` ] ,
68- {
69- read : false ,
70- } ,
71- )
72- . pipe ( clean ( ) ) ;
73- } ) ;
74-
75- gulp . task ( 'clean:dirs' , function ( done ) {
76- deleteEmpty . sync ( `${ source } /` ) ;
77- done ( ) ;
78- } ) ;
79-
80- gulp . task ( 'clean:bundle' , gulp . series ( 'clean:output' , 'clean:dirs' ) ) ;
81-
82- modules . forEach ( module => {
83- gulp . task ( module , ( ) => {
84- return packages [ module ]
85- . src ( )
86- . pipe ( packages [ module ] ( ) )
87- . pipe ( gulp . dest ( `${ dist } /${ module } ` ) ) ;
88- } ) ;
89- } ) ;
90-
91- modules . forEach ( module => {
92- gulp . task ( module + ':dev' , ( ) => {
93- return packages [ module ]
94- . src ( )
95- . pipe ( sourcemaps . init ( ) )
96- . pipe ( packages [ module ] ( ) )
97- . pipe (
98- sourcemaps . mapSources ( sourcePath => './' + sourcePath . split ( '/' ) . pop ( ) ) ,
99- )
100- . pipe ( sourcemaps . write ( '.' ) )
101- . pipe ( gulp . dest ( `${ dist } /${ module } ` ) ) ;
102- } ) ;
103- } ) ;
104-
105- gulp . task ( 'common:dev' , gulp . series ( modules . map ( module => module + ':dev' ) ) ) ;
106- gulp . task ( 'build' , gulp . series ( modules ) ) ;
107- gulp . task ( 'build:dev' , gulp . series ( 'common:dev' ) ) ;
108-
109- function getFolders ( dir ) {
110- return fs . readdirSync ( dir ) . filter ( function ( file ) {
111- return fs . statSync ( path . join ( dir , file ) ) . isDirectory ( ) ;
112- } ) ;
113- }
114-
115- const getDirs = base => getFolders ( base ) . map ( path => `${ base } /${ path } ` ) ;
116-
117- gulp . task ( 'install:samples' , async ( ) => {
118- const directories = getDirs ( SAMPLE ) ;
119-
120- const promises = directories . map ( async dir => {
121- const dirName = dir . replace ( __dirname , '' ) ;
122- log . info ( `Installing dependencies of ${ clc . magenta ( dirName ) } ` ) ;
123- try {
124- await exec ( `npm install --no-shrinkwrap --prefix ${ dir } ` ) ;
125- log . info ( `Finished installing ${ clc . magenta ( dirName ) } ` ) ;
126- } catch ( err ) {
127- log . error ( `Failed installing dependencies of ${ dirName } ` ) ;
128- throw err ;
129- }
130- } ) ;
131-
132- return await promiseSeries ( promises ) ;
133- } ) ;
134-
135- gulp . task ( 'build:samples' , async ( ) => {
136- const directories = getDirs ( SAMPLE ) ;
7+ const path = require ( 'path' ) ;
1378
138- const promises = directories . map ( async dir => {
139- const dirName = dir . replace ( __dirname , '' ) ;
140- log . info ( `Building ${ clc . magenta ( dirName ) } ` ) ;
141- try {
142- await exec ( `npm run build --prefix ${ dir } ` ) ;
143- log . info ( `Finished building ${ clc . magenta ( dirName ) } ` ) ;
144- } catch ( err ) {
145- log . error ( `Failed building ${ clc . magenta ( dirName ) } :` ) ;
146- if ( err . stdout ) {
147- log . error ( err . stdout ) ;
148- }
149- throw err ;
150- }
151- } ) ;
9+ const projectDir = __dirname ;
10+ const tsconfigPath = path . join ( projectDir , 'tools/gulp/tsconfig.json' ) ;
15211
153- return await promiseSeries ( promises ) ;
12+ require ( 'ts-node' ) . register ( {
13+ project : tsconfigPath
15414} ) ;
15515
156- gulp . task ( 'move' , function ( ) {
157- const examplesDirs = getDirs ( 'sample' ) ;
158- const integrationDirs = getDirs ( 'integration' ) ;
159- const directories = examplesDirs . concat ( integrationDirs ) ;
160-
161- let stream = gulp . src ( [ 'node_modules/@nestjs/**/*' ] ) ;
162-
163- directories . forEach ( dir => {
164- stream = stream . pipe ( gulp . dest ( dir + '/node_modules/@nestjs' ) ) ;
165- } ) ;
166- return stream ;
167- } ) ;
16+ require ( './tools/gulp/gulpfile' ) ;
0 commit comments