【问题标题】:Passing a preset to babel programmatically以编程方式将预设传递给 babel
【发布时间】:2016-09-21 12:25:12
【问题描述】:

我很难以编程方式使用babel

"use strict";

const babel = require("babel-core")
    , es2015 = require("babel-preset-es2015")
    ;

babel.transformFile("my-file.js", {
   presets: [es2015]
}, (err, result) =>
  console.log(err || result)
);

以这个错误结束:

Couldn't find preset "es2015" relative to directory "/Users/myusername"

不过,我确实安装了 babel-preset-es2015 作为本地依赖项。如何解决这个问题?

我不想将babel-preset-es2015babel-core 作为项目的本地依赖项。

为什么会出现这个错误?

【问题讨论】:

    标签: javascript node.js ecmascript-6 babeljs transpiler


    【解决方案1】:

    好吧,我开始在babel-core 中进行深入调试,并找到了opts.babelrc !== false 的检查。

    我的主目录中可能有一个.babelrc,但由于我想以编程方式使用babel,我只想忽略它,所以我在选项中使用babelrc: false

    "use strict";
    
    const babel = require("babel-core")
        , es2015 = require("babel-preset-es2015")
        ;
    
    babel.transformFile("my-file.js", {
       presets: [es2015]
     , babelrc: false
    }, (err, result) =>
      console.log(err || result)
    );
    

    【讨论】:

    • .babelrc 文件属于项目文件夹,你不应该在通用父文件夹中有.babelrc,这是自找麻烦,就像这种情况一样。
    • @loganfsmyth 是的,是的。因为我真的不想拥有特定于项目的 babel 配置,所以我创建了 babel-it,它只是在 npm publish 之前对当前目录中的代码进行 babel 化。
    猜你喜欢
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多