【问题标题】:Using gulp with tsify and babelify isn't running babel将 gulp 与 tsify 和 babelify 一起使用不会运行 babel
【发布时间】:2016-06-15 14:38:51
【问题描述】:

我有以下 gulp 任务(包括我的所有要求,根据要求):

const gulp = require("gulp");
const browserify = require("browserify");
const tsify = require("tsify");
const sass = require('gulp-sass');
const fs = require('fs');
const uglify = require('gulp-uglify');
const tslint = require('gulp-tslint');
const gutil = require('gulp-util');
const babelify = require("babelify");

gulp.task('js', function () {
    return browserify({
        entries: paths.ts + 'App/start.ts',
        debug: true
    }).plugin("tsify")
        .transform(babelify.configure({
            presets: ["es2015"]
        }))
        .bundle()
        .on('error', swallowError)
        .pipe(fs.createWriteStream(jsOutput + "app.js"));
});

所有必需的模块都包含在 package.json 中,包括 babel-preset-es2015。但是,babelify 转换根本没有做任何事情,以至于我可以将“es2015”更改为任何内容并且我得到完全相同的结果(es6 输出)。

我尝试过包含指定预设的 .babelrc 文件,但没有效果,以及指定 babelify 转换的几种不同方式,包括添加 .ts 文件扩展名。

我的 tsconfig.json 有以下内容:

"compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
}

将输出类型指定为 ES6。

在此过程中没有抛出任何错误,并且 typescript 已完全转译,我只剩下 ES6 代码。

【问题讨论】:

  • 你的 gulp 文件中有 required gulp、browserify、babelify 吗?
  • 我已经根据我的要求更新了问题。
  • 此链接显示了某人在 gulp 任务中使用 babelify 的示例,它看起来与您的有所不同:gist.github.com/danharper/3ca2273125f500429945
  • 我首先进行从打字稿到 javascript 的转换,所以我使用 tsify,他们建议的方式就像我所做的那样:npmjs.com/package/tsify#es2015-formerly-known-as-es6 我已经尝试指定文件扩展名,因为他们有完成,无济于事。
  • 似乎 tsify 默认生成 ES5 代码。也许您应该指定 {target: 'es6'} 作为 tsify 选项?

标签: typescript gulp browserify babeljs


【解决方案1】:

你必须告诉 Babelify 要考虑的文件扩展名,在这种情况下,对于 TypeScript 来说是 .ts

// ...
.transform(babelify, {
    presets: ['es2015'],
    extensions: ['.js', '.ts'] // <-- I have added .js and .ts
})
// ...

【讨论】:

  • 这已经成功了,谢谢。我假设 tsify 插件将不再需要指定 .ts 扩展名,但这显然是一个错误的假设。
  • 这意味着官方页面中的 gulp Typescript 教程是错误的,因为它正在测量该属性(扩展):typescriptlang.org/docs/handbook/gulp.html
猜你喜欢
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 2016-01-26
  • 1970-01-01
相关资源
最近更新 更多