私は現在、TypeScript と ES6 (babel を使用) についてさらに学ぶことができるサイド プロジェクトを作成しています。
TypeScript で ES6 を使用したかったので、次のワークフローに落ち着きました。
Typescript (ES6) -> Babel (ES6) -> ES5
現在、Gulp を使用してこれらすべてを自動化していますが、ソースマップを適切に生成するのに苦労しています。このスタイルは /r/typescript のユーザーから提案されたので、それが可能かどうかさえわかりません。
とにかく、ここに私の現在のgulpタスクがあります
var server = $.typescript.createProject('src/server/tsconfig.json');
gulp.task('build', ['vet'], function () {
var sourceRoot = path.join(__dirname, 'src/server/**/*.ts');
return gulp.src('src/server/**/*.ts')
.pipe($.sourcemaps.init())
.pipe($.typescript(server))
.pipe($.babel())
.pipe($.sourcemaps.write('.', { sourceRoot: sourceRoot}))
.pipe(gulp.dest('build/server'));
});
私は多くの異なるアプローチを試みましたが、どれもうまくいきません。VSCode でデバッグすると、アプリのエントリポイント:build/server/index.js
ソース ファイルsrc/server/index.ts
が正しく読み込まれ、検出されます。
ただし、VSCode が別のファイルにステップインしようとすると、*.ts ファイルをbuild/server/utils/logger/index.js
探すsrc/server/utils/logger/index.js
必要があるため、見つからないファイルを探します。
それで、私は何を間違っていますか?それともこれは可能ですか?私はこれを約5時間見つめています。したがって、どんな洞察も素晴らしいでしょう。
また、VSCode 0.9.x は を表示し'.../.js' file not found
、VSCode 1.0 はサイレントに失敗します。
私のtsconfig.json、それはによって渡されます$.typescript.createProject()
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"target": "ES6",
"sourceMap": true,
"outDir": "build/server"
}
}
.babelrc
{
"presets": ["es2015"]
}
関連するnpmパッケージは次のとおりです
"devDependencies": {
"babel-polyfill": "^6.2.0",
"babel-preset-es2015": "^6.1.18",
"gulp-babel": "^6.1.0",
"gulp-sourcemaps": "^1.6.0",
"gulp-typescript": "^2.9.2"
}
編集: gulp-sourcemaps を調査しましたが、babel を使用していない場合、sourcemaps は適切に機能します。(関係のない情報はすべて削除しました)
src/server/up/up2/four.ts - バベルなし
{
"history": [ "/home/user/code/test/src/server/up/up2/four.js" ],
"base": "/home/user/code/test/src/server/",
"sourceMap": {
"sources": ["up/up2/four.ts"],
"file": "up/up2/four.js"
}
}
sourceMap.sources
適切なソースファイルがどのようにリストされているかに注意してくださいup/up2/four.ts
これは、gulp-babel をタスクに追加した場合の例です。
src/server/up/up2/four.ts - Babel を使用
{
"history": [ "/home/user/code/test/src/server/up/up2/four.js" ],
"base": "/home/user/code/test/src/server/",
"sourceMap": {
"sources": ["four.js"],
"file": "up/up2/four.js"
},
"babel": {
"...": "..."
}
}
typescript ファイルsourceMap.sources
の代わりに が誤って表示されることに注意してください。four.js
不思議なことに、typescript ファイルがルート ディレクトリsrc/server
にある限り、ソース マップは問題なく作成されます。
src/server/two.ts - Babel を使用
{
"history": [ "/home/user/code/test/src/server/two.js" ],
"base": "/home/user/code/test/src/server/",
"sourceMap": {
"sources": ["two.ts"],
"file": "two.js"
},
"babel": {
"...": "..."
}
}