无法在Bitbucket管道上生成Typescript应用程序



我在尝试让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:找不到命令

我花了很长时间在谷歌上搜索,试图找到答案,但我没能解决这个问题。几个月前,我试图克服,但失败了,今天我又打了一个回环,尝试了一下,但仍然没有成功。

如有任何帮助,我们将不胜感激。感谢您对的支持

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

  1. 顶级管道脚本找不到tsc,可能是因为安装了typescript程序包后没有更新其环境。我建议永久地省略- node -v && npm -v && tsc -v行(或至少它的&& tsc -v部分(,因为当你尝试- npm run build时,任何丢失的部分都会很快出现
  2. 您的管道内存不足。8GB的size: 2x似乎是您现在可以请求的最多的,因此您必须查看构建脚本,以寻找减少内存占用的方法。一些想法:
    • 您已经在安装步骤中要求提供最新版本的TypeScript(这本身可能令人担忧;请考虑未来的重大更改(,但您使用的是Node.js 10。我不知道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管道,以防止意外的包更新

最新更新