在 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),是否更好:
- 测试
- 转译为 ES5
- 交付(捆绑、缩小等)
或
- 转译为 ES5
- 测试
- 交付(捆绑、缩小等)
第一种方法,我会为我的单元测试库提供一个预处理器(如 ./node_modules/.bin/mocha --compilers js:babel/register example.js
),然后我才会继续转译。第二种方法,我会测试转译步骤的输出。
#1 或#2 是否有任何注意事项?期待了解这两种方法的优缺点。
对我来说,您 运行 测试将要发送给您的客户的代码似乎是有道理的。
按照这个逻辑,您应该运行针对转译后的代码进行测试。
不过这里有两种思路:
- 我们没有写 babel,也不应该测试它的效果
- 我们没有写 babel 没关系,无论如何我们都应该测试我们的 post-transpile 代码是否工作
对于某些依赖项,我订阅#1,但对于构建工具,如 babel,我倾向于订阅#2
Babel 很棒,但并不完美。它也会犯错误,我认为最好是采取防御措施,如果可能的话,在你的 builds/tests 中抓住它。
对于其他事情,例如在您的代码中包含一个库,我更愿意相信所提供的测试套件。例如,如果我要编写一个 React 应用程序,我就不会为 React 特定的功能编写测试。
在工作流程中(grunt、gulp、npm),是否更好:
- 测试
- 转译为 ES5
- 交付(捆绑、缩小等)
或
- 转译为 ES5
- 测试
- 交付(捆绑、缩小等)
第一种方法,我会为我的单元测试库提供一个预处理器(如 ./node_modules/.bin/mocha --compilers js:babel/register example.js
),然后我才会继续转译。第二种方法,我会测试转译步骤的输出。
#1 或#2 是否有任何注意事项?期待了解这两种方法的优缺点。
对我来说,您 运行 测试将要发送给您的客户的代码似乎是有道理的。
按照这个逻辑,您应该运行针对转译后的代码进行测试。
不过这里有两种思路:
- 我们没有写 babel,也不应该测试它的效果
- 我们没有写 babel 没关系,无论如何我们都应该测试我们的 post-transpile 代码是否工作
对于某些依赖项,我订阅#1,但对于构建工具,如 babel,我倾向于订阅#2
Babel 很棒,但并不完美。它也会犯错误,我认为最好是采取防御措施,如果可能的话,在你的 builds/tests 中抓住它。
对于其他事情,例如在您的代码中包含一个库,我更愿意相信所提供的测试套件。例如,如果我要编写一个 React 应用程序,我就不会为 React 特定的功能编写测试。