Senior engineers are expected to own the toolchain: why the build is slow, why CI is red, why types pass locally and fail in the pipeline, how a new hire gets to a running app in ten minutes. Interviewers probe this with "walk me through your CI", "how do you keep the bundle small", "how would you set up a monorepo". This section covers the 2026 toolchain around Nuxt 4 with enough depth to answer and enough pointers to verify.
import.meta.glob, environment API. Nuxt configures it; you tune through vite options and nuxt analyze.@nuxt/eslint with flat config and stylistic rules, vue-tsc through nuxt typecheck (TypeScript 6 until vue-tsc supports the TS 7 API), and optional Oxlint or Biome for speed.--frozen-lockfile in CI, minimumReleaseAge-style install delays and provenance as supply-chain defences.nuxi commands, .env handling, nuxt.config per environment, reproducible environments, and debugging strategies from hydration mismatches to memory leaks.| Page | Covers |
|---|---|
| Vite and the build | Rolldown, how Nuxt builds client and server, chunks and analysis, env handling, build performance |
| Linting, formatting and types in CI | @nuxt/eslint flat config, stylistic, vue-tsc/TS 7 status, Oxlint, Biome, pre-commit versus CI |
| Package management and monorepos | pnpm, lockfiles, catalogs, workspaces, Turborepo, publishing, supply-chain hygiene |
| CI/CD pipelines | The stages, caching, parallelism, preview deploys, releases, rollbacks, secrets |
| Developer experience and debugging | DevTools, debugging SSR and Nitro, environments, onboarding, scripts and generators |
A package.json scripts block that encodes the gates the pipeline runs, so local and CI agree:
{
"scripts": {
"dev": "nuxt dev",
"build": "nuxt build",
"generate": "nuxt generate",
"preview": "nuxt preview",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"typecheck": "nuxt typecheck",
"test": "vitest run",
"test:e2e": "playwright test",
"check": "pnpm lint && pnpm typecheck && pnpm test",
"postinstall": "nuxt prepare"
}
}
If the build depends on a global CLI, an unpinned Node version or a .env someone emailed around, onboarding takes days and CI disagrees with local runs. Pin Node in package.json engines and .nvmrc, use Corepack or packageManager for pnpm, keep .env.example in the repo, and make pnpm check the one command that mirrors CI.
pnpm check locally and compare with the CI configuration; make them identical."Nuxt 4 on Vite 8 with Rolldown for the build, pnpm with a committed lockfile and frozen installs in CI, @nuxt/eslint flat config with stylistic rules replacing Prettier, nuxt typecheck with vue-tsc, Vitest with the Nuxt environment for unit and component tests and Playwright for end-to-end. One pnpm check command mirrors the pipeline. CI installs from cache, runs lint, types and tests in parallel, builds once, runs Playwright against the build, deploys a preview per pull request, and releases with migrations first and a rollback path. Nuxt DevTools and source maps for debugging, .env.example and pinned Node and pnpm versions so a new hire runs the app in ten minutes."
Nothing yet. Notes filed here show up on every page of this section.
Decision records and trade-offs
Writing architecture decision records, running lightweight RFCs, evaluating libraries and services, build versus buy, reversible versus one-way decisions, planning migrations as strangler moves, managing technical debt with a budget, and communicating trade-offs to product and leadership.
Vite and the build
How Nuxt builds with Vite 8 and Rolldown — dev server versus production, the client and server builds, Nitro's second bundling step, chunking and manual chunks, analysing bundles, environment variables at build versus runtime, source maps, build performance and the migration from Vite 7.