与typescript插件汇总使用时,babel 7无法转译

时间:2018-11-22 19:45:40

标签: typescript babel rollup

我似乎无法让rollup-plugin-babel在我的打字稿项目中工作。 .ts代码进行编译和汇总程序包,生成了地图文件,但babel不会对其进行编译。

如果我运行npx babel lab.js --out-file lab-es5.js,通天塔也可以正常工作。

这是我的rollup.config.js

import commonjs from 'rollup-plugin-commonjs';
import nodeResolve from 'rollup-plugin-node-resolve';
import typescript from 'rollup-plugin-typescript2'
import sourcemaps from 'rollup-plugin-sourcemaps';
import babel from 'rollup-plugin-babel';

var plugins = [
    nodeResolve({
        module: true,
        jsnext: true,
        main: true,
        preferBuiltins: false
    }),
    commonjs({
        include: 'node_modules/**',  // Default: undefined
        ignoreGlobal: false,  // Default: false
    }),
    typescript(/*{ plugin options }*/),
    babel({
        exclude: 'node_modules/**',
        runtimeHelpers: true
    }),
    sourcemaps()
];

export default [
    {
        input: 'src/lab.ts',
        plugins,
        output: {
            name: "TablePager",
            file: 'lab.js',
            format: 'iife',
            sourcemap: true
        }
    }
];

这是我的.babelrc

{
    "presets": ["@babel/preset-env"]
}

如果您对我做错了什么有任何线索,我会很好的。

3 个答案:

答案 0 :(得分:0)

您的.babelrc丢失了@babel/preset-typescript。尝试安装软件包并将其添加到配置中:

{
    "presets": [
        "@babel/preset-env",
        "@babel/preset-typescript"
    ]
}

答案 1 :(得分:0)

检出Microsoft的TypeScript-Babel-Starter和汇总部分。

/cms/site/index

.babelrc

/cms/site/error

答案 2 :(得分:0)

说明

默认情况下,@rollup/plugin-babel已启用以下扩展名:

.js
.jsx
.es6
.es
.mjs

因此,将@rollup/plugin-babel@rollup/plugin-typescript一起使用时,有两点需要设置。

  1. 您必须告诉它使用TypeScript扩展名(默认情况下未启用)。
  2. 您必须告诉它要传输哪些文件。

由于某些原因,文档说默认情况下,所有文件都已转译。具有TypeScript扩展名的文件不是这种情况。因此,您必须手动设置include选项。

幸运的是,对于第二个选项,您可以告诉它使用全局模式。设置文件夹无效。

示例

这里是一个例子。在这种情况下,所有要转换的TypeScript文件都位于src文件夹中。

"use strict";

import babel from "@rollup/plugin-babel";
import typescript from "@rollup/plugin-typescript";

import { resolve } from "path";

export default {
    plugins: [
        typescript(),
        babel({
            extensions: [".ts"],
            include: resolve("src", "**", "*.ts")
        })
    ];
};

链接