TypeScript + Browserify + SourceMaps in Gulp?



嗨,这个问题困扰着我。

我想知道,在从TS编译并使用Browserify之后,我是否可以让我的SourceMaps(从gulp-SourceMaps)一直指向我的TS文件。

目前我有它的工作,所以我使用tsify编译TS,然后我把它全部捆绑到all.js中,然后把uglify(minify)它捆绑到all.min.js中。我也有SourceMaps,但只是从缩小版映射到all.js.

我找了很多这个。我以前也做过从JS缩小到TS的SourceMaps,但在这种情况下我没有使用Browserify。

我当前的Gulp任务:

gulp.task('scripts', function(){
    return browserify(paths.mainJs)
        .plugin(tsify)
        .bundle()
        .on('error',console.error.bind(console))
        .pipe(source('all.js'))
        .pipe(buffer())
        .pipe(sourcemaps.init())
        .pipe(gulp.dest(paths.outscripts))
        .pipe(rename('all.min.js'))
        .pipe(uglify())
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(paths.outscripts));
});

请注意,这里的一个大问题是,sourcemaps调用之间的所有内容都需要支持gulp-sourcemaps,而Browserify没有。Gulp也有Typescript编译器,但我该如何使用Browserify?

谢谢!

我想通了!!下班后。。。。

这就是:

    gulp.task('scripts', function(){
    return browserify(paths.mainTs,{debug: true})
        .on('error',console.error.bind(console))
        .plugin(tsify)
        .bundle()
        .pipe(source('all.js'))
        .pipe(buffer())
        .pipe(sourcemaps.init({loadMaps: true}))
        .pipe(gulp.dest(paths.outscripts))
        .pipe(rename('all.min.js'))
        .pipe(uglify())
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(paths.outscripts));
});

paths.mainTs是入口TS文件(main.TS、index.TS、app.TS等)。

debug标志告诉Browserify编写源映射。

然后我在缩小之前加载这些地图,然后将它们写在最低版本上。

请注意,如果您在调试时使用完整的js,而不是minimied,那么您可以跳过带有源映射的两行。

EDIT:为了避免最后出现一个大的JS文件(因为它包括内联源映射),只需要sourcemaps.write('/somePath').

最新更新