首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将env选项与非env选项合并时,Babel插件的顺序

将env选项与非env选项合并时,Babel插件的顺序
EN

Stack Overflow用户
提问于 2017-02-28 03:46:20
回答 1查看 1.6K关注 0票数 15

巴贝尔插件文档说:

  • 预置之前运行插件。
  • 插件排序是第一位的。
  • 预先设定的顺序颠倒(最后到第一)。

巴贝尔.babelrc文档说:

特定于特定环境的选项被合并并覆盖非env特定选项。

文档并没有具体说明它们是如何合并的。

我正在使用样板React项目反应弹弓,我想利用类属性转换。该项目使用babel-preset-stage-1,其中包括babel-plugin-transform-class-properties。类属性转换应该允许我编写如下代码:

代码语言:javascript
运行
复制
class Example extends Component {
  static propTypes = {
    ...
  }
}

该项目的.babelrc是:

代码语言:javascript
运行
复制
{
  "presets": [
    "react",
    "stage-1"
  ],
  "env": {
    "development": {
      "presets": [
        "latest",
        "react-hmre"
      ]
    },
    "production": {
      "presets": [
        ["latest", {
          "es2015": {
            "modules": false
          }
        }]
      ],
      "plugins": [
        "transform-react-constant-elements",
        "transform-react-remove-prop-types"
      ]
    },
    "test": {
      "presets": [
        "latest"
      ]
    }
  }
}

但当我这么做的时候,我得到了:

代码语言:javascript
运行
复制
Module build failed: SyntaxError: Missing class properties transform.

  5 |   class Example extends Component {
> 6 |     static propTypes = {
    |     ^
  7 |       ...
  8 |     }
  9 |

类属性转换是存在的,但很明显,排序是不正常的。

通过手动将非env预置合并到env预置中,我让它在编译时没有任何错误,但是现在有很多重复:

代码语言:javascript
运行
复制
{
  "env": {
    "development": {
      "presets": [
        "latest",
        "react-hmre",
        "stage-1",
        "react"
      ]
    },
    "production": {
      "presets": [
        ["latest", {
          "es2015": {
            "modules": false
          }
        }],
        "stage-1",
        "react"
      ],
      "plugins": [
        "transform-react-constant-elements",
        "transform-react-remove-prop-types"
      ]
    },
    "test": {
      "presets": [
        "latest",
        "stage-1",
        "react"
      ]
    }
  }
}

在使用env和non选项时,是否有指定插件顺序的方法?

EN

回答 1

Stack Overflow用户

发布于 2017-02-28 04:39:58

.babelrc env继承就像类一样,它不是很深的复制预置/插件。因此,这就是为什么babel生成预置&插件供开发人员在不同的ways.you中使用,可以结合预设/插件来共享something..babelrc env继承,如下所示:

代码语言:javascript
运行
复制
Object.assign({presets:['es2015']},env.development);
//it not merge your presets,that I have tested.
// if your env.development have a presets:['es2017'] then use es2017 otherwise use es2015
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42499829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档