【问题标题】:Make babel exclude test files使 babel 排除测试文件
【发布时间】:2016-02-15 17:19:24
【问题描述】:

在我的构建步骤中,我使用 babel 将代码转换为 es5(从 srcdist)。如何使其排除以.test.js 结尾的文件?

package.json

"scripts": {
  "build": "babel src --out-dir dist",

.babelrc

{
  "presets": [ "es2015" ],
  "ignore": "\\.test\\.js"
}

【问题讨论】:

  • 我发现 babelrc 不起作用,但内联编译器选项起作用

标签: node.js babeljs


【解决方案1】:

根据文档,你应该可以写.babelrc

{
  "ignore": [
    "**/*.test.js"
  ]
}

但是,我能够验证这似乎不起作用。我用版本 6.5.1 (babel-core 6.5.2) 尝试过。

同时,以下确实有效:

babel src --out-dir build --ignore '**/*.test.js'

这与.babelrc 文件中所写的 glob 模式相同。如果你从 npm 安装任何 glob 库,你会发现这个 glob 模式可以工作(这就是我想出的方法......我目前不使用 babel)。

【讨论】:

  • 我试过“*/.test.js”、“src/**/*.test.js”、“src/index.test.js”。它仍然编译src\index.test.js -> dist\index.test.js
  • 我已经编辑了答案...似乎 .bablerc 忽略不被尊重。我注意到在他们的 github 问题跟踪器上报告了这种情况的几种变体。通过命令行标志 --ignore 尝试一下,您会注意到 glob 模式得到了尊重。
  • 文件应该命名为 .babelrc 而不是 .bablerc
  • 我尝试了使用 CLI 的解决方法,我只是注意到 ' 两侧的 **/*.test.js 对完成这项工作很重要。否则,它似乎认出了 glob 很奇怪。我不知道..
  • @PlusbPreco 需要将 glob 括在引号中的原因是,这使得它可以作为字符串传递给 babel,然后 babel 将使用该字符串来匹配文件。如果参数没有被引用,shell 会在传递给 babel 之前使用自己的规则扩展它。
【解决方案2】:

截至今天,以下内容在 .babelrc 中有效 (babel-core: v6.26.3)

"ignore": [
  "**/__tests__", // ignore the whole test directory
  "**/*.test.js" // ignore test files only
]

【讨论】:

    猜你喜欢
    • 2017-06-25
    • 2014-08-02
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2015-12-11
    • 2019-01-11
    • 2011-02-11
    • 2023-01-16
    相关资源
    最近更新 更多