Upgrade to Nuxt 4#16
Merged
Merged
Conversation
Signed-off-by: thelooter <evekolb2204@gmail.com>
Signed-off-by: thelooter <evekolb2204@gmail.com>
Deploying web with
|
| Latest commit: |
b01f923
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://519f6270.web-9b9.pages.dev |
| Branch Preview URL: | https://chore-major-upgrade.web-9b9.pages.dev |
There was a problem hiding this comment.
Pull request overview
This pull request upgrades the project from Nuxt 3 to Nuxt 4, which represents a major framework upgrade with significant dependency updates and new application code.
Key Changes:
- Upgraded Nuxt from v3.19.3 to v4.2.1
- Updated FontAwesome packages from v6.7.2 to v7.1.0 (major version bump)
- Updated VueUse from v12.8.2 to v14.0.0 (major version bump)
- Updated ESLint and related plugins to newer versions
- Added Node.js engine requirements
- Added new pages (team, privacy, legal, cookies, index, error)
- Added new components (NavBar, Footer, Team, Highlight, Catch sections)
- Added FontAwesome plugin configuration
Reviewed changes
Copilot reviewed 2 out of 23 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| package.json | Updated all major dependencies for Nuxt 4 compatibility, added Node.js engine requirements |
| pnpm-lock.yaml | Lockfile reflecting all dependency updates and version resolutions |
| eslint.config.js | Minor path adjustment for ESLint config import |
| app/plugins/fontawesome.ts | New plugin to configure FontAwesome icons globally |
| app/pages/*.vue | New page components for team, privacy, legal, cookies, index, and error pages |
| app/components/*.vue | New reusable components for navigation, footer, and content sections |
| app/layouts/default.vue | New default layout wrapper |
| app/assets/* | New CSS and image assets |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Contributor
|
There are some suggestions from the bot and the linting is failing |
- Prefix the .nuxt eslint config import with ./ so ESLint resolves it as a relative path instead of a package specifier (lint was failing with ERR_INVALID_MODULE_SPECIFIER). - Set engines.node to ^20.19.0 || >=22.12.0 to match Nuxt 4.2.1's own requirement instead of the overly narrow ^22 || ^24 || ^25. - Add trailing newline to package.json for prettier compliance.
Bring all dependencies up to date (PR had been open ~7 months): Major bumps (verified compatible, build + lint + SSG output checked): - eslint 9 -> 10, @eslint/js 9 -> 10, globals 16 -> 17 - @nuxtjs/robots 5 -> 6, @nuxtjs/sitemap 7 -> 8, nuxt-schema-org 5 -> 6 Minor/patch bumps: - nuxt 4.2 -> 4.4, vue 3.5.25 -> 3.5.39, @vueuse/* 14.0 -> 14.3 - @fortawesome/* 7.1 -> 7.3, posthog-js, prettier, typescript-eslint, etc. Held back intentionally: - vue-router kept on 4.x (nuxt 4.4.8 requires vue-router ^4.6.3; 5.x is incompatible) - @nuxt/devtools kept on 3.x (only a 4.0.0-alpha is newer) Verified: pnpm lint, pnpm build and pnpm generate all pass; robots.txt, sitemap.xml and schema.org JSON-LD generate correctly; all routes return 200.
The Lint workflow read engines.pnpm from package.json to feed pnpm/action-setup's version input, but package.json declares the pnpm version via the packageManager field instead, so engines.pnpm was undefined. action-setup v4 reads packageManager on its own and errored on the duplicate (ERR_PNPM_BAD_PM_VERSION: 'Multiple versions of pnpm specified'), failing the job before lint ever ran. Drop the manual version plumbing and let action-setup resolve pnpm from the packageManager field. Apply the same fix to the deploy workflow, which pinned version: 9.6.0 against packageManager pnpm@10.23.0 and would have hit the identical error on merge to main.
Bump packageManager pnpm@10.23.0 -> pnpm@11.9.0 and adapt to pnpm 11's new defaults: - pnpm 11 enables a 1-day minimumReleaseAge supply-chain cooldown and re-verifies the lockfile on every install. Pin prettier (3.9.3) and posthog-js (1.396.2) to the latest releases older than the cooldown so the lockfile passes the policy; they will catch up on a later update. - pnpm 11 reads settings from pnpm-workspace.yaml instead of .npmrc. Migrate shamefully-hoist and strict-peer-dependencies there and delete .npmrc. The hoist setting is required so @nuxt/eslint can resolve the TypeScript tooling and generate an eslint config that parses <script lang="ts"> blocks. - pnpm 11 makes strictDepBuilds the default, so declare every dependency with an install script under allowBuilds. All are set to false (not run); the project builds, generates and runs without them. Verified: install (incl. --frozen-lockfile), lint, build and generate all pass; robots.txt, sitemap.xml and schema.org JSON-LD still generate.
Insprill
approved these changes
Jun 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.