Skip to main content
The repository uses pnpm as its package manager and Turborepo to orchestrate tasks across the monorepo. Most commands are run from the repository root; some are also available scoped to individual workspaces.
Node.js 24.x and pnpm 10.28.2 are required. See the devEngines field in the root package.json for authoritative version requirements.

Development

CommandDescription
pnpm devStart the Next.js development server with hot reload
pnpm buildProduction build for all packages and the site
pnpm deployStatic-export build (NEXT_PUBLIC_STATIC_EXPORT=true)
pnpm startStart the production Next.js server after build
# Start the development server
pnpm dev

# Build for production
pnpm build

# Start the production server
pnpm start

Code quality

Linting

CommandDescription
pnpm lintRun all linters (JS/TS, CSS, Markdown)
pnpm lint:fixRun all linters with auto-fix enabled
The lint command is a composite that runs three sub-linters in sequence:
Sub-commandToolTargets
lint:jsESLint**/*.{js,mjs,ts,tsx}
lint:cssStylelint**/*.css
lint:mdESLint + eslint-plugin-mdx**/*.md?(x)
Each has a corresponding :fix variant that passes --fix to the underlying tool.

Formatting

CommandDescription
pnpm prettierCheck formatting with Prettier (no changes written)
pnpm prettier:fixApply Prettier formatting
pnpm formatAlias that runs prettier:fix and all lint:fix tasks together
# Check formatting without making changes
pnpm prettier

# Apply Prettier formatting
pnpm prettier:fix

# Run all fixers at once
pnpm format

Type checking

pnpm lint:types
Runs tsc --noEmit across all TypeScript workspaces.

Testing

CommandDescription
pnpm testRun all unit tests
pnpm test:unitAlias for pnpm test
pnpm test:ciRun unit tests with CI reporters (lcov, JUnit, GitHub annotations)
# Run all unit tests
pnpm test

# Run tests with CI output formats
pnpm test:ci
The test:ci command sets NODE_OPTIONS to enable three reporters simultaneously:
NODE_OPTIONS="\
  --test-reporter=lcov --test-reporter-destination=lcov.info \
  --test-reporter=junit --test-reporter-destination=junit.xml \
  --test-reporter=@reporters/github --test-reporter-destination=stdout"
For Playwright end-to-end tests, run directly from apps/site:
pnpm --filter @node-core/website playwright

Storybook

CommandDescription
pnpm storybookStart the Storybook development server
pnpm storybook:buildBuild a static Storybook for deployment
# Start Storybook
pnpm storybook

# Build static Storybook
pnpm storybook:build

Scripts

Release post generator

pnpm scripts:release-post -- --version=vXX.X.X
Generates a release blog post at apps/site/pages/en/blog/release/vX.Y.Z.md by fetching data from the Node.js dist server and GitHub changelog. Pass --force to overwrite an existing file:
pnpm scripts:release-post -- --version=v24.0.0 --force
See Writing Blog Posts for full usage details.

Cloudflare deployment

CommandDescription
pnpm cloudflare:deployBuild and deploy to Cloudflare Workers
pnpm cloudflare:previewLocal preview with wrangler dev

Compilation

pnpm compile
Runs the compile Turborepo task across all packages. Used to compile TypeScript packages (e.g. @node-core/ui-components) before publishing.

Build docs developers (and LLMs) love