PNPM Github 操作流程

Ham*_*eed 6 github pnpm github-actions cicd

我刚刚将项目从 npm 和 lerna 移至 pnpm,但现在使用 GitHub actions 时出现以下错误

“第 1 行:pnpm:未找到命令”

有人可以建议 .yml 文件应该是什么样子吗?我已经在下面发布了当前版本?

name: Lint & Unit Test

on: [pull_request]

jobs:
  run-linters:
    name: Run linter and Unit tests
    runs-on: ubuntu-latest

    steps:
      - name: Check out Git repository
        uses: actions/checkout@v3

      - name: ACTIONS_ALLOW_UNSECURE_COMMANDS
        run: echo 'ACTIONS_ALLOW_UNSECURE_COMMANDS=true' >> $GITHUB_ENV

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 16.18.1

      - name: Portal Install Node.js dependencies
        working-directory: ./portals
        run: |
          pnpm install

      - name: Portals Lint & tests
        working-directory: ./portals
        run: |
          cat .env.example > .env
          pnpm run build:tailwind
          pnpm run lint
          pnpm test

      - name: Services Install Node.js dependencies
        working-directory: ./services
        run: |
          pnpm install

      - name: Services Lint & tests
        working-directory: ./services
        run: |
          pnpm run lint
          pnpm test
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 10

pnpm是一个快速高效的 Node.js 包管理器,类似于npmyarn它以节省磁盘空间和加快安装速度而闻名。

pnpm要在 GitHub Actions 工作流程中进行设置,请在 GitHub Actions 工作流程文件(通常.github/workflows/<your-workflow>.yml)中添加安装步骤pnpm:使用pnpm/action-setup操作来执行此操作。它会自动安装pnpm在您的 GitHub Actions 运行器环境中。

on:
    push:
    pull_request:

jobs:
    install:
    runs-on: ubuntu-latest

    steps:
        - uses: actions/checkout@v3
        
        - name: Setup pnpm
        uses: pnpm/action-setup@v3 # docs https://pnpm.io/continuous-integration#github-actions
        with:
            version: 8  # Optional: specify a pnpm version

        # Further steps for your build/test process
Run Code Online (Sandbox Code Playgroud)

指定pnpm版本是可选的。如果省略,则安装最新版本。如果您希望与本地开发环境保持一致,请指定与pnpm本地使用的版本相同的版本。


需要指定版本吗?pnpm每次发布版本时我都必须在 yaml 中查找吗?

packageManager当.txt 文件中package.json有字段时,版本是可选的。

{
  "name": "your-project",
  "version": "1.0.0",
  "packageManager": "pnpm@6.0.2",
  // other fields
}
Run Code Online (Sandbox Code Playgroud)

Corepack 是一个实验性 Node.js 工具,它提供了一种管理多个包管理器(如npmyarnpnpm)的方法。它可以根据项目的package.json.

Corepack 将确保pnpmGitHub Actions 工作流程中使用的版本与package.json. 这将使您的本地开发环境与 CI/CD 环境保持一致,从而保持不同环境之间的一致性。