在 Babel 项目工作流程中,首先 运行 单元测试然后转译更有意义,还是反之亦然?

In a Babel project workflow, does it make more sense to run unit tests firstly and transpile secondly or vice-versa?

在工作流程中(grunt、gulp、npm),是否更好:

  1. 测试
  2. 转译为 ES5
  3. 交付(捆绑、缩小等)

  1. 转译为 ES5
  2. 测试
  3. 交付(捆绑、缩小等)

第一种方法,我会为我的单元测试库提供一个预处理器(如 ./node_modules/.bin/mocha --compilers js:babel/register example.js),然后我才会继续转译。第二种方法,我会测试转译步骤的输出。

#1 或#2 是否有任何注意事项?期待了解这两种方法的优缺点。

对我来说,您 运行 测试将要发送给您的客户的代码似乎是有道理的。

按照这个逻辑,您应该运行针对转译后的代码进行测试。

不过这里有两种思路:

  1. 我们没有写 babel,也不应该测试它的效果
  2. 我们没有写 babel 没关系,无论如何我们都应该测试我们的 post-transpile 代码是否工作

对于某些依赖项,我订阅#1,但对于构​​建工具,如 babel,我倾向于订阅#2

Babel 很棒,但并不完美。它也会犯错误,我认为最好是采取防御措施,如果可能的话,在你的 builds/tests 中抓住它。

对于其他事情,例如在您的代码中包含一个库,我更愿意相信所提供的测试套件。例如,如果我要编写一个 React 应用程序,我就不会为 React 特定的功能编写测试。