diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index be6b2564..757689f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,6 +48,13 @@ jobs: with: version: latest + - name: Setup Yarn (via Corepack) + if: matrix.pm == 'yarn' + shell: bash + run: | + corepack enable + corepack prepare yarn@stable --activate + - name: Setup Bun if: matrix.pm == 'bun' uses: oven-sh/setup-bun@v2 @@ -114,14 +121,18 @@ jobs: ${{ runner.os }}-bun- # Install dependencies + # COREPACK_ENABLE_STRICT=0 allows pnpm to install even though + # package.json declares "packageManager": "yarn@..." - name: Install dependencies shell: bash + env: + COREPACK_ENABLE_STRICT: '0' run: | case "${{ matrix.pm }}" in npm) npm ci ;; - pnpm) pnpm install ;; - # --ignore-engines required for Node 18 compat with some devDependencies (e.g., markdownlint-cli) - yarn) yarn install --ignore-engines ;; + pnpm) pnpm install --no-frozen-lockfile ;; + # Yarn Berry (v4+) removed --ignore-engines; engine checking is no longer a core feature + yarn) yarn install ;; bun) bun install ;; *) echo "Unsupported package manager: ${{ matrix.pm }}" && exit 1 ;; esac diff --git a/.github/workflows/reusable-test.yml b/.github/workflows/reusable-test.yml index ff907249..de55605c 100644 --- a/.github/workflows/reusable-test.yml +++ b/.github/workflows/reusable-test.yml @@ -40,6 +40,13 @@ jobs: with: version: latest + - name: Setup Yarn (via Corepack) + if: inputs.package-manager == 'yarn' + shell: bash + run: | + corepack enable + corepack prepare yarn@stable --activate + - name: Setup Bun if: inputs.package-manager == 'bun' uses: oven-sh/setup-bun@v2 @@ -104,13 +111,18 @@ jobs: restore-keys: | ${{ runner.os }}-bun- + # COREPACK_ENABLE_STRICT=0 allows pnpm to install even though + # package.json declares "packageManager": "yarn@..." - name: Install dependencies shell: bash + env: + COREPACK_ENABLE_STRICT: '0' run: | case "${{ inputs.package-manager }}" in npm) npm ci ;; - pnpm) pnpm install ;; - yarn) yarn install --ignore-engines ;; + pnpm) pnpm install --no-frozen-lockfile ;; + # Yarn Berry (v4+) removed --ignore-engines; engine checking is no longer a core feature + yarn) yarn install ;; bun) bun install ;; *) echo "Unsupported package manager: ${{ inputs.package-manager }}" && exit 1 ;; esac