使用uglify将TypeScript Grunt转换为JavaScript

gil*_*ran 10 node.js uglifyjs gruntjs typescript

我在ts目录下有4个TypeScript文件.我可以使用typescript:base任务将它们全部编译成一个带有源映射(main.js.map)的文件(main.js).

但是,uglify在编译多个 TypeScript文件时尝试这些文件不起作用.uglifysourceMapIn用多个文件制作时,好像很困惑.

如何将具有多个文件的TypeScript项目编译为一个带有源映射的文件(返回原始ts文件)

这是grunt文件:

module.exports = function (grunt) {
    grunt.initConfig({
        uglify: {
            dist: {
                options: {
                    sourceMap: '../js/main.min.map',
                    sourceMapIn: 'main.js.map',
                    sourceMapRoot: '../ts/'
                },
                files: {
                    '../js/main.min.js': ['main.js']
                }
            }
        },
        typescript: {
            base: {
                 src: ['**/*.ts'],
                 dest: '../js/main.js',
                 options: {
                     module: 'amd',
                     sourcemap: true,
                     declaration: false
                 }
             }

        }
    });

    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-typescript');

    grunt.file.setBase('../ts');

    grunt.registerTask('default', ['typescript:base', 'uglify:dist']);
};
Run Code Online (Sandbox Code Playgroud)

谢谢!

Adr*_*ine 3

我尝试在以下环境中重现您的问题:

grunt: 0.4.1
grunt-contrib-uglify: 0.2.2
grunt-typescript: 0.2.4
nodejs: 0.10.15
Run Code Online (Sandbox Code Playgroud)

我必须更改uglify.dist.options.sourceMapIn'../js/main.js.map'uglify.dist.files['../js/main.min.js']to ['../js/main.js'],即使路径相对于 gruntfile 位置。之后,编译工作完美无缺,而且../js/main.min.js看起来../js/main.min.map都是正确的。