无法在 Bitbucket 管道上构建 Typescript 应用程序

Cannot build Typescript app on Bitbucket Pipeline

我在尝试让我的 TS 应用程序在 Bitbucket 管道中编译时遇到问题。

这是我的 .yaml 文件:

image: node:10.16.3

pipelines:
  pull-requests:
    '**':
      - step:
          name: Install dependencies
          caches:
            - node
          script:
            - npm install -g typescript
            - npm install
      - parallel:
        - step:
            name: Build App
            caches:
              - node
            size: 2x
            script:
              - node -v && npm -v && tsc -v
              - npm run build
        - step:
            name: Run Tests
            caches:
              - node
            script:
              - echo "Run tests"

但是失败并出现以下错误:

bash: tsc: command not found

我花了很长时间谷歌搜索试图找到答案,但我没有运气解决这个问题。几个月前尝试克服失败,今天又绕回来试一试,还是没有成功。

非常感谢任何帮助。感谢您的支持

根据您的问题和评论,这里有两个不同的问题:

  1. 顶级管道脚本找不到 tsc,可能是因为安装 typescript 软件包后未更新其环境。我建议永久删除 - node -v && npm -v && tsc -v 行(或至少删除它的 && tsc -v 部分),因为无论如何,当您尝试 - npm run build 时,任何丢失的内容都会很快出现。
  2. 您的管道 运行 内存不足。 size: 2x 8GB 似乎是您现在可以请求的最大容量,因此您必须查看构建脚本以寻找减少内存占用的方法。一些想法:
    • 您已经在安装步骤中要求使用最新版本的 TypeScript(这本身可能令人担忧;考虑未来的重大更改),但您使用的是 Node.js10。我不知道if Node.js 14 的占用空间较小,但值得一试。
    • 确保您的构建脚本本身 运行 没有任何并行的东西。 (管道配置中的 parallel 步骤不算数,因为它使用的是单独的 VM。)
    • 检查您的构建脚本调用的工具的选项,以了解您可以打开的优化。
    • 在最坏的情况下,您可能不得不以某种方式将项目的构建拆分成适合 Bitbucket 限制的部分。

你有 tsc: command not found 错误,因为你在第一步安装了 typescript,而不是你实际使用它的第二步。 Bitbucket 管道不会自动将环境传递到下一步。您可以:

  • 第一步提供artifact: node_modules选项。在这种情况下,Bitbucket Pipelines 会将整个 node_modules 文件夹传递到下一步。
  • 只需在需要它的步骤中直接执行 npm install,这样您就不需要绕过 node_modules

另一个提示:

  • 您应该将 npm ci 用于 CI 管道,以防止意外的包更新。