2017-02-17 7 views
0

나는 다음과 같은 폴더 구조와 nodejs 응용 프로그램을 가지고있다. index.js.map은 "../src/index.ts"를 가리 킵니다 (정확함). 맵 파일의 해당 내용은 {"version":3,"sources":["../src/index.ts"],"names":[],"mappings"타이프 라이터 + 꿀꺽 + Sourcemaps 잘못된 소스 경로

이지만 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" 
    ] 
} 

? gulp-sourcemaps가 sourceRoot를 무시한 것 같습니다.

답변

0

좋아요. 중단 점을 맞추기위한 해결책을 찾았습니다. 소스 파일의 잘못된 부분을 보았습니다. "sources":["../src/controllers/authentication.controller.ts"]은 항상 동일하며 무시할 수 있습니다. gulp 작업을 sourceRoot: '../src'으로 바꾸면 작동합니다. sourcemap-file의 끝에 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"프로젝트 루트 폴더에서 폴더와 폴더 구조를 대응하는 "DIST"에 들어가는 모든 출력에 있습니다 당신과 비슷한 폴더. 여기에 당신을 도울 수있는 "컴파일"작업이 있습니다 :

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

희망이 도움이 될 것입니다.