2016-05-12 8 views
3

私はgulp-typescriptgulp-sourcemapsを使って、ソースマップでTypeScriptをコンパイルしています。 .jsと元のマップファイルの両方を元の.tsファイルと同じディレクトリに出力したいとします。gulp-typesmap with gulp-sourcemap:同じディレクトリに出力するファイル

TypeScriptを設定するのにtsconfig.jsonファイルを使用していますが、TypeScript定義ファイルを管理するのにtypingsを使用しています。私自身のコードはすべてjsディレクトリにあります。ここに私のプロジェクト構造です:

project root 
|-- js/ 
| |-- subdir/ 
| | |-- someScript.ts 
| |-- app.ts 
|-- typings/ 
| |-- someDefinitionFile.d.ts 
|-- gulpfile.js 
|-- tsconfig.json 

今私はapp.jsjsディレクトリに表示したい、とsomeScript.jsjs/subdirに表示されます。さらに、Chromeでデバッグするときに、[ソース]タブに同じフォルダ構造を保持したいと考えています。

私は、このために、次の一気タスク設定した:これは効果的に正しいディレクトリ内.jsファイルを出力し

var gulp = require("gulp"); 
var ts = require("gulp-typescript"); 
var tsProject = ts.createProject("tsconfig.json"); 
var sourcemaps = require('gulp-sourcemaps'); 

gulp.task("ts", function() { 
    var tsResult = tsProject 
     .src() 
     .pipe(sourcemaps.init()) 
     .pipe(ts(tsProject)).js 
     .pipe(sourcemaps.write(".")) 
     .pipe(gulp.dest("js")); 
}); 

を。ただし、Chromeでこれを実行して開発ツールを開くとき、.tsファイルはルートの下の 'source'ディレクトリにあります。つまり、ソースマップファイルに不正なルートが含まれています。

.tsファイルと.jsファイルを同じ場所に表示するには、何を変更する必要がありますか?

注:この質問は、私はtsconfig.jsonを使用することを除いて、this 1と同様であるので、gulp.srcまたはそのbaseプロパティを使用することはできません。

答えて

4

gulp-sourcemap書き込みオプションのsourceRootプロパティを設定するだけです。このタスクは正常に機能します:

gulp.task("ts", function() { 
    tsProject.src() 
     .pipe(sourcemaps.init()) 
     .pipe(ts(tsProject)).js 
     .pipe(sourcemaps.write({sourceRoot: "/js"})) 
     .pipe(gulp.dest("js")); 
}); 
関連する問題