SIGN IN SIGN UP

chore(website): migrate to pnpm and enable minimum release age (#855)

## Summary

Migrates the `website/` subdirectory from Yarn 4 to pnpm 10 as part of
an org-wide supply-chain hardening migration. The Python root (managed
by uv) is unchanged.

Enables pnpm's `minimumReleaseAge` (1 day / 1440 minutes) to block
installing packages published within the last 24h, with exclusions for
first-party scopes `@apify/*` and `@crawlee/*`. Renovate is updated with
`internalChecksFilter: strict` and a matching 0-day package rule so our
own releases are not held back.

## Changes

- **website/package.json** — `packageManager` now `pnpm@10.24.0`; adds
`name: apify-sdk-python-website` and `private: true`; all scripts
rewritten from `yarn X` to `pnpm X`
- **website/pnpm-workspace.yaml** (new) — `minimumReleaseAge: 1440` plus
exclusions for `@apify/*` and `@crawlee/*`
- **website/.npmrc** (new) — `node-linker=hoisted` + workspace hoisting
settings to mirror the previous yarn `node-modules` layout
- **website/.yarnrc.yml, website/yarn.lock** — removed (no
`.yarn/patches/` existed in this repo, so nothing was preserved)
- **website/pnpm-lock.yaml** (new) — generated via `pnpm install`
- **website/docusaurus.config.js** — renamed
`future.experimental_faster` -> `future.faster` (Docusaurus 3.10 rename,
forward-compatible)
- **.github/actions/pnpm-install/action.yml** (new) — composite action
copied from `apify-client-js`, extended with a `working-directory` input
so it can install inside `website/` without changing the caller's
default directory
- **.github/workflows/_release_docs.yaml** — `git add website/yarn.lock`
-> `git add website/pnpm-lock.yaml` in the auto-commit step of the
docs-theme update
- **.github/workflows/manual_release_stable.yaml** — removed `corepack
enable && yarn install`, installs via the new composite action with
`working-directory: website`; `npx docusaurus` -> `pnpm exec docusaurus`
- **pyproject.toml** — poe tasks `update-docs-theme`, `build-docs`,
`run-docs` now invoke `pnpm` directly (no more `corepack enable &&
yarn`)
- **renovate.json** — adds `internalChecksFilter: strict` and a
`packageRule` matching `@apify/*` / `@crawlee/*` with
`minimumReleaseAge: 0 days`. `ignoreDeps` unchanged (did not contain
`yarn`).
- **.gitignore** — replaced `website/.yarn` with `website/.pnpm-store`

## Verification

- `pnpm install` and `pnpm install --frozen-lockfile` both succeed in
`website/`
- Existing peer-dependency warnings (eslint v10, typescript v6,
styled-components) pre-date this migration and are carried over
unchanged
- Local docusaurus build was attempted but could not complete outside CI
because the typedoc plugin spawns `python` (not `python3`) and this
laptop doesn't expose `python` on PATH; in CI `actions/setup-python`
provides `python` so this will resolve there. This is orthogonal to the
pnpm migration.
- `pnpm lint` surfaces an eslint v10 flat-config error that pre-dates
this PR (no `eslint.config.js` present). Not introduced here.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
M
Martin Adámek committed
a57fcd387bcba95ee760bb0a907f5c7f983a48b1
Parent: a5413b5
Committed by GitHub <noreply@github.com> on 4/29/2026, 12:48:33 PM