セットアップ:TypeScriptで記述されたNodeプロジェクト(純粋なNode、ブラウザビットなし))があります。tsc
からTypeScriptコンパイラ(TypeScript
)を使用できますコードをコンパイルするモジュール。
ただし、Mochaを使用してテストを作成したいので、そこに問題があります。私は試した --compilers ts:TypeScript
、しかし、私は次のようなエラーが出続けます:
error TS5023: Unknown compiler option 'compilers'.
mocha
へのコマンドラインがtsc
に渡されるように見えますが、これは明らかに良くありません。
この回答は使用しないでください。TypeScript-requireはメンテナンスされておらず、ts-nodeはその代替品です。この回答を後世に残してください。
それを見つけた。 TypeScript
モジュールは、実際には「メイン」関数のようなものです。モジュールがロードされるとすぐにコンパイラーが実行されます。あまり素敵なデザインではありません。
foo
ファイルにカスタムコンパイラを使用する方法を示す、Mochaの受け入れテストを調べました。彼らはrequire.extensions
メカニズム。以前に誰かがこれをやったに違いないと気付いたとき、コマンドラインでtsc
を呼び出すモジュールを書く途中でした。とても簡単です:
$ npm install TypeScript-require --save-dev
$ mocha --compilers ts:TypeScript-require
最新バージョンのMochaおよびts-nodeを使用して、 予期しないトークンインポートの問題。 ts-mocha で以下の設定を使用すると、うまくいきました:
tsconfig.json
{
"files": [
"src/main.ts"
],
"compilerOptions": {
"noImplicitAny": true,
"target": "es2015",
"types": ["mocha"],
"module": "commonjs"
}
}
package.json
"scripts": {
"mocha": "ts-mocha -p library/tsconfig.json library/test/**/*.ts"
},
launch.json
{
"type": "node",
"request": "launch",
"name": "Mocha Tests",
"runtimeArgs": [
"${workspaceFolder}/node_modules/ts-mocha/bin/ts-mocha",
"--timeout", "999999",
"-p",
"${workspaceFolder}/library/tsconfig.json",
"${workspaceFolder}/library/test/**/*.ts"
],
"internalConsoleOptions": "openOnSessionStart"
}
gulp.jsは、gulpも使用したい場合にのみ使用します。
const gulp = require('gulp');
const ts = require('gulp-TypeScript');
const mocha = require('gulp-mocha');
const tsProject = ts.createProject('tsconfig.json');
gulp.task('build', () => tsProject.src()
.pipe(tsProject())
.js.pipe(gulp.dest('dist')));
gulp.task('test', () => gulp.src('test/*.spec.ts')
.pipe(mocha({
reporter: 'nyan',
require: ['ts-node/register'],
})));
/* single command to hook into VS Code */
gulp.task('default', gulp.series('build', 'test'));