11'use strict' ;
22
3+ const fs = require ( 'fs' ) ;
4+ const path = require ( 'path' ) ;
35const BaseCommand = require ( 'common-bin' ) ;
46const Logger = require ( 'zlogger' ) ;
57const helper = require ( './helper' ) ;
@@ -16,11 +18,47 @@ class Command extends BaseCommand {
1618 execArgv : true ,
1719 } ;
1820
21+ // common-bin setter, don't care about override at sub class
22+ // https://github.com/node-modules/common-bin/blob/master/lib/command.js#L158
23+ this . options = {
24+ sourcemap : {
25+ description : 'whether enable sourcemap support, will load `source-map-support` etc' ,
26+ type : 'boolean' ,
27+ alias : [ 'ts' , 'typescript' ] ,
28+ } ,
29+ } ;
30+
1931 this . logger = new Logger ( {
2032 prefix : '[egg-scripts] ' ,
2133 time : false ,
2234 } ) ;
2335 }
36+
37+ get context ( ) {
38+ const context = super . context ;
39+ const { argv, execArgvObj, cwd } = context ;
40+
41+ // read `egg.typescript` from package.json
42+ let baseDir = argv . _ [ 0 ] || cwd ;
43+ if ( ! path . isAbsolute ( baseDir ) ) baseDir = path . join ( cwd , baseDir ) ;
44+ const pkgFile = path . join ( baseDir , 'package.json' ) ;
45+ if ( fs . existsSync ( pkgFile ) ) {
46+ const pkgInfo = require ( pkgFile ) ;
47+ if ( pkgInfo && pkgInfo . egg && pkgInfo . egg . typescript ) {
48+ argv . sourcemap = true ;
49+ }
50+ }
51+
52+ // execArgv
53+ if ( argv . sourcemap ) {
54+ execArgvObj . require = execArgvObj . require || [ ] ;
55+ execArgvObj . require . push ( require . resolve ( 'source-map-support/register' ) ) ;
56+ }
57+
58+ argv . sourcemap = argv . typescript = argv . ts = undefined ;
59+
60+ return context ;
61+ }
2462}
2563
2664module . exports = Command ;
0 commit comments