2014-12-29 35 views
7

Tôi có một dự án mà tôi đang sử dụng gulp. Tôi muốn có các tệp bản ghi được chuyển đổi thành javascript và cũng có bản đồ nguồn. Dưới đây là những gì tôi có ngay bây giờ:Làm thế nào tôi có thể sử dụng gulp để tạo sourcemaps Typescript trong các tệp khác nhau chứ không phải bên trong các tệp javascript?

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

gulp.task('typescript', function() { 
    gulp.src('app/**/*.ts') 
     .pipe(typescript()) 
     .pipe(sourcemaps.init())  
     .pipe(sourcemaps.write()) 
     .pipe(gulp.dest('app'))  
}); 

Điều này hoạt động một phần nhưng tất cả các sourcemaps xuất hiện bên trong javascript. Bất cứ ai có thể cho tôi biết làm thế nào tôi có thể làm cho nó để nó tạo ra một tập tin sourcemap cho mỗi javascript hơn là có bản đồ bên trong?

Trả lời

11

Bạn đang viết sourcemaps.write() để nội tuyến.

Từ gulp-sourcemaps repo

Để viết các file bản đồ nguồn bên ngoài, thông qua một đường dẫn tương đối đến đích để sourcemaps.write().

Nên -

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

gulp.task('typescript', function() { 
    gulp.src('app/**/*.ts') 
     .pipe(sourcemaps.init()) 
     .pipe(typescript()) 
     .pipe(sourcemaps.write('../maps')) 
     .pipe(gulp.dest('app'))  
}); 

Xem nếu điều này khắc phục vấn đề của bạn.

+1

Tôi đã thử cách này. Nó đã thêm các chú thích như // # sourceMappingURL = ../../../maps/access/controllers/HomeController.js.map vào các tệp của tôi nhưng không có tệp bản đồ nào được tạo ra. – Alan2

+0

Oh duh - tài liệu hiển thị các plugin đi sau 'sourcemaps.init'. Chạy 'typescript()' post 'init'. –

+0

@Alan Bạn có thể sử dụng 'sourcemaps.write (". ")' Để ghi các bản đồ nguồn vào các tệp '.js.map' thay vì inlining chúng. Tham khảo: [github] (https://github.com/ivogabe/gulp-typescript/issues/201) –

Các vấn đề liên quan