如何在Babel插件文件中使“导出默认值”工作?

时间:2018-09-18 22:03:15

标签: node.js babeljs

我直接从文档(https://babeljs.io/docs/en/plugins#plugin-development)中获取了这个插件示例

export default function() {
  return {
    visitor: {
      Identifier(path) {
        const name = path.node.name;
        // reverse the name: JavaScript -> tpircSavaJ
        path.node.name = name.split("").reverse().join("");
      }
    }
  };
}

我的babel.config.js文件是这样的:

module.exports = {
    plugins: [
        'transform-es2015-modules-commonjs',
        './babelPlugin.js',
    ],
    presets: [
        '@babel/env'
    ]
} ;

我使用babel testInput.js -o testOutput.js命令运行Babel

但是我得到这个错误:

D:\Projects\Babel plugin test\babelPlugin.js:1
(function (exports, require, module, __filename, __dirname) {   export default function() {
                                                                ^^^^^^
SyntaxError: Unexpected token export

如果我使用export default而不是module.exports =,那么一切正常。

export default为什么引起语法错误?

1 个答案:

答案 0 :(得分:0)

Babel将编译testInput.js,因为babel testInput.js -o testOutput.js就是这样,但是配置中的任何内容都不会编译babelPlugin.js。如果要使用ES6模块语法编写它,则需要先单独编译插件。