diff --git a/lib/cmd/test.js b/lib/cmd/test.js index 7045b289..88a25df0 100644 --- a/lib/cmd/test.js +++ b/lib/cmd/test.js @@ -50,6 +50,19 @@ class TestCommand extends Command { yield this.helper.forkNode(mochaFile, testArgs, opt); } + get context() { + const context = super.context; + const { argv, execArgvObj } = context; + + // remove ts-node, ts-node and espower-typescript can't coexist + // because espower-typescript@9 has already register ts-node + if (argv.typescript) { + execArgvObj.require.splice(execArgvObj.require.indexOf(require.resolve('ts-node/register')), 1); + } + + return context; + } + /** * format test args then change it to array style * @param {Object} context - { cwd, argv, ...} @@ -90,6 +103,7 @@ class TestCommand extends Command { // for power-assert if (testArgv.typescript) { + // remove ts-node in context getter on top. requireArr.push(require.resolve('espower-typescript/guess')); } diff --git a/lib/command.js b/lib/command.js index 9bcb1e4b..0b750ee0 100644 --- a/lib/command.js +++ b/lib/command.js @@ -50,8 +50,16 @@ class Command extends BaseCommand { // execArgv if (argv.typescript) { execArgvObj.require = execArgvObj.require || []; - execArgvObj.require.push(path.join(__dirname, './ts-helper.js')); - env.EGG_TYPESCRIPT = true; + execArgvObj.require.push(require.resolve('ts-node/register')); + + // tell egg loader to load ts file + env.EGG_TYPESCRIPT = 'true'; + + // use type check + env.TS_NODE_TYPE_CHECK = process.env.TS_NODE_TYPE_CHECK || 'true'; + + // load files from tsconfig on startup + env.TS_NODE_FILES = process.env.TS_NODE_FILES || 'true'; } return context; diff --git a/lib/ts-helper.js b/lib/ts-helper.js deleted file mode 100644 index cb435ad3..00000000 --- a/lib/ts-helper.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -require('ts-node').register({ - typeCheck: true, - files: true, -}); diff --git a/package.json b/package.json index 66e873c8..11434457 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "debug": "^3.1.0", "detect-port": "^1.2.3", "egg-utils": "^2.4.0", - "espower-typescript": "^8.0.0", + "espower-typescript": "^9.0.0", "globby": "^8.0.1", "inspector-proxy": "^1.2.1", "intelli-espower-loader": "^1.0.1",