2017-02-17 75 views
0

我有下面的文件夹结构的应用程序的NodeJS:打字稿+咕嘟咕嘟+ Sourcemaps错源路径

project 
|-- src/ 
| |-- controllers/ 
| | |`-- authorize-controller.ts 
| |`-- index.ts 
|--dist/ 
| |--controllers/ 
| | |`-- authorize-controller.js 
| | |`-- authorize-controller.js.map 
| |`-- index.js 
| |`-- index.js.map 
`-- gulpfile.js 
`-- tsconfig.json 

的sourcemaps被生成。 index.js.map指向“../src/index.ts”(正确)。映射文件的相应内容是{"version":3,"sources":["../src/index.ts"],"names":[],"mappings"

但dist \ controllers \ authorize-controller.js.map指向错误的目录。它有{"version":3,"sources":["../src/controllers/authentication.controller.ts"],"names":[],。有一个../失踪。

我gulpfile.js是:

gulp.task('compile',() => { 
    var tsResult = tsProject.src() 
    .pipe(sourcemaps.init()) 
    .pipe(tsProject()); 

    return tsResult.js 
    .pipe(sourcemaps.write('.', { includeContent: false, sourceRoot: '/src' })) 
    .pipe(gulp.dest('dist')); 
}); 

我tsconfig.json是:

{ 
    "compilerOptions": { 
     "module": "commonjs", 
     "target": "es6", 
     "noImplicitAny": false, 
     "sourceMap": true, 
     "outDir": "dist" 
    }, 
    "include": [ 
     "src/**/*.ts" 
    ], 
    "exclude": [ 
     "node_modules", 
     "dist", 
     ".vscode" 
    ] 
} 

我在做什么错? 看起来sourceRoot被gulp-sourcemaps忽略。

回答

0

好吧,我找到了一个解决方案来获得断点。 我查看了源文件的错误部分。 "sources":["../src/controllers/authentication.controller.ts"]总是相同的,可以忽略。如果我改变吞咽任务使用sourceRoot: '../src'它的作品。 在sourcemap-file的末尾,设置了sourceRoot。

这是我的新一饮而尽任务:

​​
0

我的源文件位于在项目根文件夹“SRC”文件夹,并用相应的文件夹结构将进入“测距”的所有输出文件夹与你相似。这是我认为可以帮助你的“编译”任务:

var gulp = require("gulp"); 
var tsc = require("gulp-typescript"); 
var sourcemaps = require('gulp-sourcemaps'); 

     gulp.task("compile", function() { 
     var tsProject = tsc.createProject('tsconfig.json'); 
     return gulp 
     .src("src/**/*.ts") 
     .pipe(sourcemaps.init()) 
     .pipe(tsProject()) 
     .pipe(sourcemaps.write(
      ".", 
     { 
      sourceRoot: function(file) { 
      var filePathSplit = file.sourceMap.file.split("/"); 
      var backTrack = '../'.repeat(filePathSplit.length-1) || '../' ; 
      var filePath = backTrack+ "src/"; 
      return filePath; 
     }} 
     )) 
     .pipe(gulp.dest("dist")); 
    }); 

希望这会有所帮助。