【问题标题】:How to run tests before commit in create react app?如何在创建反应应用程序中提交之前运行测试?
【发布时间】:2020-03-21 15:56:29
【问题描述】:

如何在提交前在创建反应应用程序中运行 jest?我找到了几篇文章,但是它们太复杂了,没有逐步解释要做什么。你能解释一下如何使它工作

【问题讨论】:

  • 承诺 git 和 create-react-app 并没有真正相互关联。但基本上,你想使用 git hook。如果您查看.git/hooks,您会看到示例。 pre-commit 是您想要添加测试命令的那个,并检查测试命令的返回值。如果它失败了,那么你会想在你的 pre-commit 钩子中调用 exit 来取消提交。还有一个名为husky 的工具可以让定义 git 挂钩变得更加容易,并且有它的文档和关于如何将它添加到项目中的文章。也许用它来保持简单

标签: reactjs unit-testing jestjs create-react-app


【解决方案1】:

您需要使用husky 包。这是基本配置(放入package.json)。它将 pre-commit 钩子添加到您的 git 配置中。

"husky": {
  "hooks": {
    "pre-commit": "CI=true npm run test",
  }
}

您也可以考虑使用lint-staged 来检查您提交的文件。可以看到完整配置here

【讨论】:

  • 安装了Husky,将这个添加到package.json,钩子仍然不起作用。这里缺少一些东西。
  • 新版husky使用另一种配置方式,请参考文档
【解决方案2】:

也许您可以为此使用一些 npm 包。

因此,这不是直接的解决方案,但您可以包含任意数量的内容,而不是使用 git 命令、shell 和 yml 文件

安装包 Pre-Commit 并从 npm 安装 git-cz。使用这些,您可以使用 package.json 中的 pre-commit 和 commit 以及他们想要的东西。

现在您可以在您的 packages.json 中使用这些包,如下所示

{ "start": "node index.js", "pre-commit": "lint-staged", "commit": "git-cz", "lint": "eslint . --ext .js,.jsx", }

例如,您要运行测试用例,然后 pre-commit: npm run test && lint-staged

因为在我们的项目中我们需要更新文档、检查 style-lint、eslint 和测试用例,所以我们使用了这些组合。

但是你不应该直接使用 git commit -m "message" 而是使用 npm run commit。

希望,这会有所帮助。

【讨论】:

    【解决方案3】:

    要在本地执行,您只需编写一个脚本,该脚本首先运行测试并通过管道输出退出代码,并根据退出代码决定是否真正推送。

    默认npm test 以交互模式运行

    运行测试后退出使用 CI=true

    CI=true npm test

    【讨论】:

    • OP 询问本地运行测试,而不是 CI
    • 我添加gitlab答案的原因是因为这个问题的标签之一有gitlab。
    • 每个人都会犯错,同志。和平。
    【解决方案4】:

    这对我有用:
    npm install --save-dev pre-commit
    https://www.npmjs.com/package/pre-commit

    然后,在package.json

    "scripts": {
        "start": "react-scripts start",
        "build": "react-scripts build",
        "test": "CI=true react-scripts test", //<-- update
        "eject": "react-scripts eject",
      }
    

    添加CI=true 运行所有测试而不使其交互

    最后,

    "devDependencies": {
        "pre-commit": "test"
      }
    

    【讨论】:

    • 这条线是如何工作的!, "pre-commit": "test" , 而不是 "test" 它应该是模块版本
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 2016-01-24
    • 2014-04-21
    • 2012-12-10
    • 2014-05-07
    • 2011-03-30
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多