使用Bable将Typescript项目配置为从ES6转换为ES5

时间:2015-12-05 00:08:51

标签: javascript visual-studio typescript visual-studio-2015 babeljs

我刚刚开始一个新项目,我真的想使用最近为打字稿发布的Async和Await东西。

但如果你的目标是ES6,那么它只能起作用(现在)。

所以我想知道是否有办法配置Visual Studio(2015 Update 1)来获取由Typescript输出的ES6 java脚本并将其转换为es5?

所以,我会有Typescript - > ES6 - > ES5。 (这将在Typescript支持Async / Await目标ES5之前实现。)

1 个答案:

答案 0 :(得分:1)

可能是,它并不完全是你提出的要求,但这是一种做同样事情的方法。我希望,它可能是有用的。首先,如此处http://docs.asp.net/en/latest/client-side/using-gulp.html所述,您可以在VS2015中使用gulp。然后,在tsconfig.json文件中,您应该将typescript编译器选项设置为以下内容:

//tsconfig.json

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "module": "commonjs",
        "noImplicitAny": false,
        "removeComments": true,
        "preserveConstEnums": true
    },
    "exclude": [
        ".vscode",
        "node_modules",
        "typings",
        "public"
    ]
}

最后,gulp文件 - 例如我的一个项目 - 用于转换ES6到ES5:

// gulpfile.js

'use strict';

var gulp = require("gulp"),
    ts = require("gulp-typescript"),
    babel = require("gulp-babel");

var tsSrc = [
    '**/*.ts',
    '!./node_modules/**',
    '!./typings/**',
    '!./vscode/**',
    '!./public/**'
];
gulp.task("ts-babel", function () {
    var tsProject = ts.createProject('tsconfig.json');
    return gulp.src(tsSrc)
        .pipe(tsProject())
        .pipe(babel({
            presets: ['es2015'],
            plugins: [
                'transform-runtime'
            ]
        }))
        .pipe(gulp.dest((function (f) { return f.base; })));
});

现在您可以使用命令 gulp ts-babel 来转换文件。并且不要忘记安装所需的npm-packages,如babel-preset-es2015和babel-plugin-transform-runtime。

<强> UPD 即可。感谢Ashok M A的关注。将管道(ts())更改为管道(tsProject())