【问题标题】:Github CI with TypeScript and Jest [closed]带有 TypeScript 和 Jest 的 Github CI [关闭]
【发布时间】:2020-11-07 17:38:29
【问题描述】:

在本地,与 npm t -- --watch 并行运行 tsctsc -w 所有工作,但尝试将我所拥有的内容复制到 Github CI 并没有奏效。出于某种原因,我什至无法使用ls 打印文件夹。不过,TypeScript 和 Jest 的安装似乎都成功了。

When it runs inside Github CI,我只是收到来自tsc 正下方Run tscError: Process completed with exit code 1. 的所有可能命令的日志。

这是我目前在 Github CI 中的设置:

...

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Installing TypeScript
        run: npm i -D typescript
      - name: Installing Jest
        run: npm i -D jest
      - name: Compiling TypeScript Code
        run: tsc
      - name: Running Tests
        run: npm t

这是我的package.json

{
  ...
  "main": "dist/content.js",
  "scripts": {
    "test": "jest",
    "testwatch": "jest --watchAll"
  },
  "devDependencies": {
    "@types/jest": "^26.0.15",
    "jest": "^26.6.2",
    "ts-jest": "^26.4.3",
    "typescript": "^4.0.5"
  }
}

我认为与我的tsconfig.json 相关的唯一内容是:

{
  "outDir": "./dist/",
  "rootDir": "./lib/",
}

我是否在此设置中犯了错误?我错过了什么? Here 是我项目的完整设置。

【问题讨论】:

  • 为什么不安装所有的依赖?还有你的意思是它不起作用,会发生什么
  • 你的意思是npm i -g -a?不幸的是,它也没有用。我还在 Github 中添加了运行日志的链接。我所有的尝试和错误都在我链接的项目的“操作”部分中。
  • 不,我的意思是npm i(或者npm ci,如果您正确使用了锁定文件)- 使用包文件,这就是它的用途。
  • 哦,你忘了实际检查你的代码,所以你没有包文件或其他任何东西。参见例如docs.github.com/en/free-pro-team@latest/actions/quickstart.
  • 1.它可能位于 repo 的 lib 目录中,但您尚未将 repo 检出到 CI 环境中。再次通读快速入门。 2. 是的,它会重新创建它,但是你从根本上破坏了锁文件的要点,即在任何地方都有一组一致的依赖项。

标签: javascript typescript npm github-ci


【解决方案1】:

正如@jonrsharpe 在 cmets 中所提到的,整个问题可以用接近一个错字的东西来概括。我基本上忘记了将代码签出到 CI 环境中。因此,我必须将其添加到 steps 的开头:

...
steps:
  - name: Checking out the Project's Code
    uses: actions/checkout@v2
  ...

Jon 指出的另一个问题是缺少 package-lock.json 文件,该文件的目的是使项目中安装的软件包与 CI VM 中安装的软件包一致——然后使用 npm ci 而不是 npm i .

【讨论】:

  • 在过去的 24 小时里,我基本上采纳了@jonrsharpe 的所有建议,而且它们似乎真的得到了回报。您现在可以在project 中查看它们。
猜你喜欢
  • 2020-07-01
  • 1970-01-01
  • 2017-04-20
  • 2022-01-20
  • 2017-08-03
  • 2020-12-02
  • 2020-09-20
  • 2022-01-16
  • 1970-01-01
相关资源
最近更新 更多