将Babel插件应用于特定目录

时间:2017-07-09 20:02:22

标签: javascript babeljs

我正在为我的React Native应用程序使用Babel转换插件,但我希望它只适用于特定目录。

转换是允许我在方便的DSL中编码,但是如果暴露在常规的javascript中会遇到错误。它不是我自己编写的插件,所以如果不手动包含我自己的分支,我无法修改它的行为。相反,我想简单地在.babelrc中指定应该或不应该启用它来转换AST。

有办法做到这一点吗?比如Babel自己处理的插件选项?

{
  "presets": ["es2015"],
  "plugins": [
      ["some_plugin", {
           include: ["./plugin_specific_code"]
      }]
  ]
}

1 个答案:

答案 0 :(得分:1)

我不确定.bablerc(尝试查看它是否有效)但您可以在任何给定目录中创建package.json并覆盖babel的主package.json设置,如下所示:

<强> /package.json

我只希望我的正常版本的flow预设由我的主package.json定义。

{
  ...
  "babel": {
    "presets": [
      "flow"
    ],
    "plugins": [
      "transform-es2015-modules-commonjs",
      "transform-object-rest-spread"
    ],
    "env": {
      "test": {
        "plugins": [
          "istanbul"
        ]
      }
    }
  },
  "nyc": {
    "require": [
      "babel-register"
    ],
    "reporter": [
      "lcov",
      "text"
    ],
    "sourceMap": false,
    "instrument": false
  }
}

<强> /tests/package.json

对于单元/积分测试,我需要更多的预设,所以我的代码转换为mocha / nyc / instanbul可以理解的格式,所以我在那个目录中的package.json中定义它们。

{
  "babel": {
    "presets": [
      "es2017",
      "flow",
      "stage-0"
    ],
    "plugins": [
      "transform-es2015-modules-commonjs",
      "transform-object-rest-spread"
    ]
  }
}