build(packaging): add an ability to build libs with sourcemaps and ts files

npm has command `npm ln` which allow using link to local lib,
in this case, if you want to use the ability to debug ts sources.
you can run `gulp build:dev -dist lib` and lib dirs will contain
ts & source maps which allow effectively debug external apps together
with nestJS framework
This commit is contained in:
Vladimir Bloshchitsyn
2018-03-08 15:15:51 +03:00
parent eda82afb8b
commit 4d2260bca9
3 changed files with 419 additions and 26 deletions

View File

@@ -1,6 +1,8 @@
const gulp = require('gulp');
const ts = require('gulp-typescript');
const gulpSequence = require('gulp-sequence');
const sourcemaps = require('gulp-sourcemaps');
const clean = require('gulp-clean');
const packages = {
common: ts.createProject('src/common/tsconfig.json'),
@@ -23,6 +25,20 @@ gulp.task('default', function() {
});
});
gulp.task('copy:ts', function(){
return gulp.src(['src/**/*.ts'])
.pipe(gulp.dest('./lib'));
});
gulp.task('clean:lib', function(){
return gulp.src([
'lib/**/*.js.map',
'lib/**/*.ts',
'!lib/**/*.d.ts'
], {read: false})
.pipe(clean());
});
modules.forEach(module => {
gulp.task(module, () => {
return packages[module]
@@ -32,10 +48,30 @@ modules.forEach(module => {
});
});
modules.forEach(module => {
gulp.task(module + ':dev', () => {
return packages[module]
.src()
.pipe(sourcemaps.init())
.pipe(packages[module]())
.pipe(sourcemaps.mapSources(sourcePath => './' + sourcePath.split('/').pop()))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(`${dist}/${module}`));
});
});
gulp.task('build', function(cb) {
gulpSequence('common', modules.filter((module) => module !== 'common'), cb);
});
gulp.task('build:dev', function(cb) {
gulpSequence(
'common:dev',
modules.filter((module) => module !== 'common').map((module) => module + ':dev'),
'copy:ts',
cb);
});
gulp.task('move', function() {
gulp.src(['node_modules/@nestjs/**/*']).pipe(
gulp.dest('examples/01-cats-app/node_modules/@nestjs')