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