2017-02-17 7 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"] всегда один и тот же, и его можно игнорировать. Если я изменю задачу gulp для использования sourceRoot: '../src', она будет работать. В конце файла sourcemap установлен sourceRoot.

Это моя новый глоток задача:

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')); 
}); 
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")); 
    }); 

Надеюсь, это поможет.