diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml
index 83645d7c3e..fd62da4e90 100644
--- a/.github/workflows/benchmark.yml
+++ b/.github/workflows/benchmark.yml
@@ -46,7 +46,7 @@ jobs:
run: pnpm build
- name: Run benchmarks
- uses: CodSpeedHQ/action@0b631f8998f2389eb5144632b6f9f8fabd33a86e # v2.4.1
+ uses: CodSpeedHQ/action@f11c406b8c87cda176ff341ed4925bc98086f6d1 # v2.4.2
with:
run: pnpm vitest bench
token: ${{ secrets.CODSPEED_TOKEN }}
diff --git a/README.md b/README.md
index 9570d902ed..a9df118209 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
-
+
@@ -120,4 +120,4 @@ If you expect to be using Nuxt 2 beyond the EOL (End of Life) date (June 30, 202
## ⚖️ License
-[MIT](./LICENSE)
+[MIT](https://github.com/nuxt/nuxt/tree/main/LICENSE)
diff --git a/docs/1.getting-started/10.deployment.md b/docs/1.getting-started/10.deployment.md
index 91a4a71cc0..582a24d14a 100644
--- a/docs/1.getting-started/10.deployment.md
+++ b/docs/1.getting-started/10.deployment.md
@@ -117,10 +117,13 @@ In most cases, Nuxt can work with third-party content that is not generated or c
Accordingly, you should make sure that the following options are unchecked / disabled in Cloudflare. Otherwise, unnecessary re-rendering or hydration errors could impact your production application.
-1. Speed > Optimization > Auto Minify: Uncheck JavaScript, CSS and HTML
-2. Speed > Optimization > Disable "Rocket Loader™"
-3. Speed > Optimization > Disable "Mirage"
+1. Speed > Optimization > Content Optimization > Auto Minify: Uncheck JavaScript, CSS and HTML
+2. Speed > Optimization > Content Optimization > Disable "Rocket Loader™"
+3. Speed > Optimization > Image Optimization > Disable "Mirage"
4. Scrape Shield > Disable "Email Address Obfuscation"
-5. Scrape Shield > Disable "Server-side Excludes"
With these settings, you can be sure that Cloudflare won't inject scripts into your Nuxt application that may cause unwanted side effects.
+
+::tip
+Their location on the Cloudfalre dashboard sometimes changes so don't hesitate to look around.
+::
diff --git a/docs/1.getting-started/8.error-handling.md b/docs/1.getting-started/8.error-handling.md
index c4b44a438d..3c898508fc 100644
--- a/docs/1.getting-started/8.error-handling.md
+++ b/docs/1.getting-started/8.error-handling.md
@@ -150,10 +150,10 @@ Read more about `useError` composable.
### `createError`
```ts [TS Signature]
-function createError (err: { cause, data, message, name, stack, statusCode, statusMessage, fatal }): Error
+function createError (err: string | { cause, data, message, name, stack, statusCode, statusMessage, fatal }): Error
```
-Create an error object with additional metadata. It is usable in both the Vue and Server portions of your app, and is meant to be thrown.
+Create an error object with additional metadata. You can pass a string to be set as the error `message` or an object containing error properties. It is usable in both the Vue and Server portions of your app, and is meant to be thrown.
If you throw an error created with `createError`:
- on server-side, it will trigger a full-screen error page which you can clear with [`clearError`](#clearerror).
diff --git a/docs/3.api/3.utils/create-error.md b/docs/3.api/3.utils/create-error.md
index ecdc7e7386..6d49a54410 100644
--- a/docs/3.api/3.utils/create-error.md
+++ b/docs/3.api/3.utils/create-error.md
@@ -12,7 +12,9 @@ You can use this function to create an error object with additional metadata. It
## Parameters
-- `err`: `{ cause, data, message, name, stack, statusCode, statusMessage, fatal }`
+- `err`: `string | { cause, data, message, name, stack, statusCode, statusMessage, fatal }`
+
+You can pass either a string or an object to the `createError` function. If you pass a string, it will be used as the error `message`, and the `statusCode` will default to `500`. If you pass an object, you can set multiple properties of the error, such as `statusCode`, `message`, and other error properties.
## In Vue App
@@ -48,4 +50,6 @@ export default eventHandler(() => {
})
```
+In API routes, using `createError` by passing an object with a short `statusMessage` is recommended because it can be accessed on the client side. Otherwise, a `message` passed to `createError` on an API route will not propagate to the client. Alternatively, you can use the `data` property to pass data back to the client. In any case, always consider avoiding to put dynamic user input to the message to avoid potential security issues.
+
:read-more{to="/docs/getting-started/error-handling"}
diff --git a/package.json b/package.json
index 189b0f5217..606b99f51c 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
"vue": "3.4.29"
},
"devDependencies": {
- "@eslint/js": "9.4.0",
+ "@eslint/js": "9.5.0",
"@nuxt/eslint-config": "0.3.13",
"@nuxt/kit": "workspace:*",
"@nuxt/test-utils": "3.13.1",
@@ -64,7 +64,7 @@
"changelogen": "0.5.5",
"consola": "3.2.3",
"devalue": "5.0.0",
- "eslint": "9.4.0",
+ "eslint": "9.5.0",
"eslint-plugin-no-only-tests": "3.1.0",
"eslint-plugin-perfectionist": "2.11.0",
"eslint-typegen": "0.2.4",
diff --git a/packages/kit/package.json b/packages/kit/package.json
index fe5ef01502..2253b46346 100644
--- a/packages/kit/package.json
+++ b/packages/kit/package.json
@@ -1,6 +1,6 @@
{
"name": "@nuxt/kit",
- "version": "3.12.1",
+ "version": "3.12.2",
"repository": {
"type": "git",
"url": "git+https://github.com/nuxt/nuxt.git",
diff --git a/packages/kit/src/plugin.ts b/packages/kit/src/plugin.ts
index 8905c11274..aadcdbc718 100644
--- a/packages/kit/src/plugin.ts
+++ b/packages/kit/src/plugin.ts
@@ -43,8 +43,11 @@ export function normalizePlugin (plugin: NuxtPlugin | string): NuxtPlugin {
* Note: By default plugin is prepended to the plugins array. You can use second argument to append (push) instead.
* @example
* ```js
+ * import { createResolver } from '@nuxt/kit'
+ * const resolver = createResolver(import.meta.url)
+ *
* addPlugin({
- * src: path.resolve(__dirname, 'templates/foo.js'),
+ * src: resolver.resolve('templates/foo.js'),
* filename: 'foo.server.js' // [optional] only include in server bundle
* })
* ```
diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json
index f33ef226d7..ea9939edf9 100644
--- a/packages/nuxt/package.json
+++ b/packages/nuxt/package.json
@@ -1,6 +1,6 @@
{
"name": "nuxt",
- "version": "3.12.1",
+ "version": "3.12.2",
"repository": {
"type": "git",
"url": "git+https://github.com/nuxt/nuxt.git",
diff --git a/packages/nuxt/src/app/composables/script-stubs.ts b/packages/nuxt/src/app/composables/script-stubs.ts
index 6fcaf114b2..469b1619ee 100644
--- a/packages/nuxt/src/app/composables/script-stubs.ts
+++ b/packages/nuxt/src/app/composables/script-stubs.ts
@@ -60,9 +60,15 @@ export function useScriptGoogleTagManager (...args: unknown[]) {
export function useScriptSegment (...args: unknown[]) {
renderStubMessage('useScriptSegment')
}
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
-export function useScriptFacebookPixel (...args: unknown[]) {
- renderStubMessage('useScriptFacebookPixel')
+export function useScriptClarity (...args: unknown[]) {
+ renderStubMessage('useScriptClarity')
+}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+export function useScriptMetaPixel (...args: unknown[]) {
+ renderStubMessage('useScriptMetaPixel')
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function useScriptXPixel (...args: unknown[]) {
@@ -100,3 +106,13 @@ export function useScriptGoogleMaps (...args: unknown[]) {
export function useScriptNpm (...args: unknown[]) {
renderStubMessage('useScriptNpm')
}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+export function useScriptGoogleAdsense (...args: unknown[]) {
+ renderStubMessage('useScriptGoogleAdsense')
+}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+export function useScriptYouTubePlayer (...args: unknown[]) {
+ renderStubMessage('useScriptYouTubePlayer')
+}
diff --git a/packages/nuxt/src/core/builder.ts b/packages/nuxt/src/core/builder.ts
index ca1b41dfd7..354829a28f 100644
--- a/packages/nuxt/src/core/builder.ts
+++ b/packages/nuxt/src/core/builder.ts
@@ -46,10 +46,12 @@ export async function build (nuxt: Nuxt) {
if (!nuxt.options._prepare) {
await Promise.all([checkForExternalConfigurationFiles(), bundle(nuxt)])
await nuxt.callHook('build:done')
- }
- if (!nuxt.options.dev) {
- await nuxt.callHook('close', nuxt)
+ if (!nuxt.options.dev) {
+ await nuxt.callHook('close', nuxt)
+ }
+ } else {
+ nuxt.hook('prepare:types', () => nuxt.close())
}
}
diff --git a/packages/nuxt/src/core/nitro.ts b/packages/nuxt/src/core/nitro.ts
index 4c96a48666..0628188db6 100644
--- a/packages/nuxt/src/core/nitro.ts
+++ b/packages/nuxt/src/core/nitro.ts
@@ -355,6 +355,7 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) {
nitroConfig.rollupConfig!.plugins!.push(
ImportProtectionPlugin.rollup({
rootDir: nuxt.options.rootDir,
+ modulesDir: nuxt.options.modulesDir,
patterns: nuxtImportProtections(nuxt, { isNitro: true }),
exclude: [/core[\\/]runtime[\\/]nitro[\\/]renderer/],
}),
@@ -497,7 +498,11 @@ export async function initNitro (nuxt: Nuxt & { _nitro?: Nitro }) {
for (const route of ['/200.html', '/404.html']) {
routes.add(route)
}
- if (!nuxt.options.ssr) {
+ if (nuxt.options.ssr) {
+ if (nitro.options.prerender.crawlLinks) {
+ routes.add('/')
+ }
+ } else {
routes.add('/index.html')
}
})
diff --git a/packages/nuxt/src/core/nuxt.ts b/packages/nuxt/src/core/nuxt.ts
index b054abb923..3f85809d50 100644
--- a/packages/nuxt/src/core/nuxt.ts
+++ b/packages/nuxt/src/core/nuxt.ts
@@ -49,14 +49,13 @@ export function createNuxt (options: NuxtOptions): Nuxt {
addHooks: hooks.addHooks,
hook: hooks.hook,
ready: () => initNuxt(nuxt),
- close: async () => {
- await hooks.callHook('close', nuxt)
- hooks.removeAllHooks()
- },
+ close: () => hooks.callHook('close', nuxt),
vfs: {},
apps: {},
}
+ hooks.hookOnce('close', () => { hooks.removeAllHooks() })
+
return nuxt
}
@@ -168,6 +167,7 @@ async function initNuxt (nuxt: Nuxt) {
// Exclude top-level resolutions by plugins
exclude: [join(nuxt.options.srcDir, 'index.html')],
patterns: nuxtImportProtections(nuxt),
+ modulesDir: nuxt.options.modulesDir,
}
addVitePlugin(() => ImportProtectionPlugin.vite(config))
addWebpackPlugin(() => ImportProtectionPlugin.webpack(config))
@@ -664,7 +664,9 @@ export async function loadNuxt (opts: LoadNuxtOptions): Promise {
const nuxt = createNuxt(options)
- await Promise.all(keyDependencies.map(dependency => checkDependencyVersion(dependency, nuxt._version)))
+ for (const dep of keyDependencies) {
+ checkDependencyVersion(dep, nuxt._version)
+ }
// We register hooks layer-by-layer so any overrides need to be registered separately
if (opts.overrides?.hooks) {
diff --git a/packages/nuxt/src/core/plugins/import-protection.ts b/packages/nuxt/src/core/plugins/import-protection.ts
index 56f0a579f4..c0940a6954 100644
--- a/packages/nuxt/src/core/plugins/import-protection.ts
+++ b/packages/nuxt/src/core/plugins/import-protection.ts
@@ -1,14 +1,13 @@
-import { createRequire } from 'node:module'
import { createUnplugin } from 'unplugin'
import { logger } from '@nuxt/kit'
+import { resolvePath } from 'mlly'
import { isAbsolute, join, relative, resolve } from 'pathe'
import escapeRE from 'escape-string-regexp'
import type { NuxtOptions } from 'nuxt/schema'
-const _require = createRequire(import.meta.url)
-
interface ImportProtectionOptions {
rootDir: string
+ modulesDir: string[]
patterns: [importPattern: string | RegExp, warning?: string][]
exclude?: Array
}
@@ -58,6 +57,7 @@ export const nuxtImportProtections = (nuxt: { options: NuxtOptions }, options: {
export const ImportProtectionPlugin = createUnplugin(function (options: ImportProtectionOptions) {
const cache: Record> = {}
const importersToExclude = options?.exclude || []
+ const proxy = resolvePath('unenv/runtime/mock/proxy', { url: options.modulesDir })
return {
name: 'nuxt:import-protection',
enforce: 'pre',
@@ -85,7 +85,7 @@ export const ImportProtectionPlugin = createUnplugin(function (options: ImportPr
matched = true
}
if (matched) {
- return _require.resolve('unenv/runtime/mock/proxy')
+ return proxy
}
return null
},
diff --git a/packages/nuxt/src/core/runtime/nitro/renderer.ts b/packages/nuxt/src/core/runtime/nitro/renderer.ts
index 4321a2387a..8e43d58a7c 100644
--- a/packages/nuxt/src/core/runtime/nitro/renderer.ts
+++ b/packages/nuxt/src/core/runtime/nitro/renderer.ts
@@ -698,7 +698,7 @@ function replaceIslandTeleports (ssrContext: NuxtSSRContext, html: string) {
if (matchClientComp) {
const [, uid, clientId] = matchClientComp
if (!uid || !clientId) { continue }
- html = html.replace(new RegExp(` data-island-component="${clientId}"[^>]*>`), (full) => {
+ html = html.replace(new RegExp(` data-island-uid="${uid}" data-island-component="${clientId}"[^>]*>`), (full) => {
return full + teleports[key]
})
continue
diff --git a/packages/nuxt/src/pages/module.ts b/packages/nuxt/src/pages/module.ts
index 4121e0dd84..3e5982ea3b 100644
--- a/packages/nuxt/src/pages/module.ts
+++ b/packages/nuxt/src/pages/module.ts
@@ -275,20 +275,6 @@ export default defineNuxtModule({
}
})
- // TODO: inject routes in `200.html` in next nitro upgrade (2.9.7+) via https://github.com/unjs/nitro/pull/2517
- if (!nuxt.options.dev && !nuxt.options._prepare) {
- nuxt.hook('app:templatesGenerated', (app) => {
- const nitro = useNitro()
- if (nitro.options.prerender.crawlLinks) {
- for (const page of app.pages!) {
- if (page.path && !page.path.includes(':')) {
- nitro.options.prerender.routes.push(page.path)
- }
- }
- }
- })
- }
-
nuxt.hook('imports:extend', (imports) => {
imports.push(
{ name: 'definePageMeta', as: 'definePageMeta', from: resolve(runtimeDir, 'composables') },
diff --git a/packages/nuxt/test/auto-imports.test.ts b/packages/nuxt/test/auto-imports.test.ts
index b25587f195..9517a78119 100644
--- a/packages/nuxt/test/auto-imports.test.ts
+++ b/packages/nuxt/test/auto-imports.test.ts
@@ -1,7 +1,7 @@
import { readFileSync } from 'node:fs'
+import { fileURLToPath } from 'node:url'
import { describe, expect, it } from 'vitest'
-import { join } from 'pathe'
-import { createCommonJS, findExports } from 'mlly'
+import { findExports } from 'mlly'
import * as VueFunctions from 'vue'
import type { Import } from 'unimport'
import { createUnimport } from 'unimport'
@@ -59,8 +59,8 @@ const excludedNuxtHelpers = ['useHydration', 'useHead', 'useSeoMeta', 'useServer
describe('imports:nuxt', () => {
try {
- const { __dirname } = createCommonJS(import.meta.url)
- const entrypointContents = readFileSync(join(__dirname, '../src/app/composables/index.ts'), 'utf8')
+ const entrypointPath = fileURLToPath(new URL('../src/app/composables/index.ts', import.meta.url))
+ const entrypointContents = readFileSync(entrypointPath, 'utf8')
const names = findExports(entrypointContents).flatMap(i => i.names || i.name)
for (let name of names) {
diff --git a/packages/nuxt/test/import-protection.test.ts b/packages/nuxt/test/import-protection.test.ts
index b716c733bd..d0ac2a0ccb 100644
--- a/packages/nuxt/test/import-protection.test.ts
+++ b/packages/nuxt/test/import-protection.test.ts
@@ -1,3 +1,4 @@
+import { fileURLToPath } from 'node:url'
import { normalize } from 'pathe'
import { describe, expect, it } from 'vitest'
import { ImportProtectionPlugin, nuxtImportProtections } from '../src/core/plugins/import-protection'
@@ -40,6 +41,7 @@ describe('import protection', () => {
const transformWithImportProtection = (id: string, importer: string) => {
const plugin = ImportProtectionPlugin.rollup({
rootDir: '/root',
+ modulesDir: [fileURLToPath(new URL('..', import.meta.url))],
patterns: nuxtImportProtections({
options: {
modules: ['some-nuxt-module'],
diff --git a/packages/nuxt/test/scan-components.test.ts b/packages/nuxt/test/scan-components.test.ts
index a4e8f172da..17d26f03dd 100644
--- a/packages/nuxt/test/scan-components.test.ts
+++ b/packages/nuxt/test/scan-components.test.ts
@@ -1,10 +1,11 @@
+import { fileURLToPath } from 'node:url'
import { resolve } from 'pathe'
import { expect, it, vi } from 'vitest'
import type { ComponentsDir } from 'nuxt/schema'
import { scanComponents } from '../src/components/scan'
-const fixtureDir = resolve(__dirname, 'fixture')
+const fixtureDir = fileURLToPath(new URL('fixture', import.meta.url))
const rFixture = (...p: string[]) => resolve(fixtureDir, ...p)
vi.mock('@nuxt/kit', () => ({
diff --git a/packages/nuxt/test/utils.ts b/packages/nuxt/test/utils.ts
index 9d295ac1ec..a8ea696f22 100644
--- a/packages/nuxt/test/utils.ts
+++ b/packages/nuxt/test/utils.ts
@@ -1,6 +1,6 @@
-import { resolve } from 'pathe'
+import { fileURLToPath } from 'node:url'
-export const fixtureDir = resolve(__dirname, 'fixture')
+export const fixtureDir = fileURLToPath(new URL('fixture', import.meta.url))
export function normalizeLineEndings (str: string, normalized = '\n') {
return str.replace(/\r?\n/g, normalized)
diff --git a/packages/schema/package.json b/packages/schema/package.json
index fcf1372d9d..110e97dfaf 100644
--- a/packages/schema/package.json
+++ b/packages/schema/package.json
@@ -1,6 +1,6 @@
{
"name": "@nuxt/schema",
- "version": "3.12.1",
+ "version": "3.12.2",
"repository": {
"type": "git",
"url": "git+https://github.com/nuxt/nuxt.git",
diff --git a/packages/schema/src/config/vite.ts b/packages/schema/src/config/vite.ts
index 663f6d9b8b..a8da7e0cd4 100644
--- a/packages/schema/src/config/vite.ts
+++ b/packages/schema/src/config/vite.ts
@@ -1,4 +1,5 @@
import { consola } from 'consola'
+import { resolve } from 'pathe'
import { isTest } from 'std-env'
import { withoutLeadingSlash } from 'ufo'
import { defineUntypedSchema } from 'untyped'
@@ -109,5 +110,8 @@ export default defineUntypedSchema({
},
},
},
+ cacheDir: {
+ $resolve: async (val, get) => val ?? resolve(await get('rootDir') as string, 'node_modules/.cache/vite'),
+ },
},
})
diff --git a/packages/ui-templates/lib/dev.ts b/packages/ui-templates/lib/dev.ts
index 00a307c2fc..75e431f66c 100644
--- a/packages/ui-templates/lib/dev.ts
+++ b/packages/ui-templates/lib/dev.ts
@@ -1,10 +1,13 @@
import { join, resolve } from 'node:path'
+import { fileURLToPath } from 'node:url'
import { promises as fsp } from 'node:fs'
import type { Plugin } from 'vite'
import { template } from 'lodash-es'
import genericMessages from '../templates/messages.json'
-const r = (...path: string[]) => resolve(join(__dirname, '..', ...path))
+const templatesRoot = fileURLToPath(new URL('..', import.meta.url))
+
+const r = (...path: string[]) => resolve(join(templatesRoot, ...path))
export const DevRenderingPlugin = () => {
return {
diff --git a/packages/ui-templates/lib/prerender.ts b/packages/ui-templates/lib/prerender.ts
index 9aa79961ad..2d1c4660c5 100644
--- a/packages/ui-templates/lib/prerender.ts
+++ b/packages/ui-templates/lib/prerender.ts
@@ -1,8 +1,11 @@
import { join, resolve } from 'node:path'
+import { fileURLToPath } from 'node:url'
import { promises as fsp } from 'node:fs'
import { globby } from 'globby'
-const r = (...path: string[]) => resolve(join(__dirname, '..', ...path))
+const templatesRoot = fileURLToPath(new URL('..', import.meta.url))
+
+const r = (...path: string[]) => resolve(join(templatesRoot, ...path))
async function main () {
const templates = await globby(r('dist/templates/*.js'))
diff --git a/packages/ui-templates/vite.config.ts b/packages/ui-templates/vite.config.ts
index c3d6435485..ce21c85df8 100644
--- a/packages/ui-templates/vite.config.ts
+++ b/packages/ui-templates/vite.config.ts
@@ -1,5 +1,5 @@
import { fileURLToPath } from 'node:url'
-import { join } from 'node:path'
+import { resolve } from 'node:path'
import { readdirSync } from 'node:fs'
import { defineConfig } from 'vite'
@@ -8,7 +8,8 @@ import UnoCSS from 'unocss/vite'
import { DevRenderingPlugin } from './lib/dev'
import { RenderPlugin } from './lib/render'
-const r = (...path: string[]) => fileURLToPath(new URL(join(...path), import.meta.url))
+const rootDir = fileURLToPath(new URL('.', import.meta.url))
+const r = (...path: string[]) => resolve(rootDir, ...path)
export default defineConfig({
build: {
@@ -32,7 +33,7 @@ export default defineConfig({
],
server: {
fs: {
- allow: ['./templates', __dirname],
+ allow: ['./templates', rootDir],
},
},
})
diff --git a/packages/vite/package.json b/packages/vite/package.json
index c4eb997071..8f29743898 100644
--- a/packages/vite/package.json
+++ b/packages/vite/package.json
@@ -1,6 +1,6 @@
{
"name": "@nuxt/vite-builder",
- "version": "3.12.1",
+ "version": "3.12.2",
"repository": {
"type": "git",
"url": "git+https://github.com/nuxt/nuxt.git",
diff --git a/packages/vite/src/client.ts b/packages/vite/src/client.ts
index 607666f933..5ff1679549 100644
--- a/packages/vite/src/client.ts
+++ b/packages/vite/src/client.ts
@@ -118,7 +118,7 @@ export async function buildClient (ctx: ViteBuildContext) {
'vue',
],
},
- cacheDir: resolve(ctx.nuxt.options.rootDir, 'node_modules/.cache/vite', 'client'),
+ cacheDir: resolve(ctx.nuxt.options.rootDir, ctx.config.cacheDir ?? 'node_modules/.cache/vite', 'client'),
build: {
sourcemap: ctx.nuxt.options.sourcemap.client ? ctx.config.build?.sourcemap ?? ctx.nuxt.options.sourcemap.client : false,
manifest: 'manifest.json',
diff --git a/packages/vite/src/css.ts b/packages/vite/src/css.ts
index e99b323fa4..b5c4131140 100644
--- a/packages/vite/src/css.ts
+++ b/packages/vite/src/css.ts
@@ -19,6 +19,7 @@ export function resolveCSSOptions (nuxt: Nuxt): ViteConfig['css'] {
for (const [name, opts] of plugins) {
if (opts) {
+ // TODO: remove use of requireModule in favour of ESM import
const plugin = requireModule(name, {
paths: [
...nuxt.options.modulesDir,
diff --git a/packages/vite/src/server.ts b/packages/vite/src/server.ts
index 67919c8b2f..af87239aa2 100644
--- a/packages/vite/src/server.ts
+++ b/packages/vite/src/server.ts
@@ -71,7 +71,7 @@ export async function buildServer (ctx: ViteBuildContext) {
/(nuxt|nuxt3|nuxt-nightly)\/(dist|src|app)/,
],
},
- cacheDir: resolve(ctx.nuxt.options.rootDir, 'node_modules/.cache/vite', 'server'),
+ cacheDir: resolve(ctx.nuxt.options.rootDir, ctx.config.cacheDir ?? 'node_modules/.cache/vite', 'server'),
build: {
// we'll display this in nitro build output
reportCompressedSize: false,
diff --git a/packages/webpack/package.json b/packages/webpack/package.json
index 2421dc7c02..93b42e377e 100644
--- a/packages/webpack/package.json
+++ b/packages/webpack/package.json
@@ -1,6 +1,6 @@
{
"name": "@nuxt/webpack-builder",
- "version": "3.12.1",
+ "version": "3.12.2",
"repository": {
"type": "git",
"url": "git+https://github.com/nuxt/nuxt.git",
@@ -42,7 +42,7 @@
"hash-sum": "^2.0.0",
"lodash-es": "4.17.21",
"magic-string": "^0.30.10",
- "memfs": "^4.9.2",
+ "memfs": "^4.9.3",
"mini-css-extract-plugin": "^2.9.0",
"mlly": "^1.7.1",
"ohash": "^1.1.3",
diff --git a/packages/webpack/src/utils/postcss.ts b/packages/webpack/src/utils/postcss.ts
index 89d089f071..58af9f7c63 100644
--- a/packages/webpack/src/utils/postcss.ts
+++ b/packages/webpack/src/utils/postcss.ts
@@ -1,5 +1,5 @@
+import { fileURLToPath } from 'node:url'
import createResolver from 'postcss-import-resolver'
-import { createCommonJS } from 'mlly'
import { requireModule } from '@nuxt/kit'
import type { Nuxt } from '@nuxt/schema'
import { defu } from 'defu'
@@ -61,9 +61,10 @@ export const getPostcssConfig = (nuxt: Nuxt) => {
// Keep the order of default plugins
if (!Array.isArray(postcssOptions.plugins) && isPureObject(postcssOptions.plugins)) {
// Map postcss plugins into instances on object mode once
- const cjs = createCommonJS(import.meta.url)
+ const cwd = fileURLToPath(new URL('.', import.meta.url))
postcssOptions.plugins = sortPlugins(postcssOptions).map((pluginName: string) => {
- const pluginFn = requireModule(pluginName, { paths: [cjs.__dirname] })
+ // TODO: remove use of requireModule in favour of ESM import
+ const pluginFn = requireModule(pluginName, { paths: [cwd] })
const pluginOptions = postcssOptions.plugins[pluginName]
if (!pluginOptions || typeof pluginFn !== 'function') { return null }
return pluginFn(pluginOptions)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e46b7a6782..9563319de1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -21,11 +21,11 @@ importers:
.:
devDependencies:
'@eslint/js':
- specifier: 9.4.0
- version: 9.4.0
+ specifier: 9.5.0
+ version: 9.5.0
'@nuxt/eslint-config':
specifier: 0.3.13
- version: 0.3.13(eslint@9.4.0)(typescript@5.4.5)
+ version: 0.3.13(eslint@9.5.0)(typescript@5.4.5)
'@nuxt/kit':
specifier: workspace:*
version: link:packages/kit
@@ -75,17 +75,17 @@ importers:
specifier: 5.0.0
version: 5.0.0
eslint:
- specifier: 9.4.0
- version: 9.4.0
+ specifier: 9.5.0
+ version: 9.5.0
eslint-plugin-no-only-tests:
specifier: 3.1.0
version: 3.1.0
eslint-plugin-perfectionist:
specifier: 2.11.0
- version: 2.11.0(eslint@9.4.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.4.0))
+ version: 2.11.0(eslint@9.5.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.5.0))
eslint-typegen:
specifier: 0.2.4
- version: 0.2.4(eslint@9.4.0)
+ version: 0.2.4(eslint@9.5.0)
execa:
specifier: 9.2.0
version: 9.2.0
@@ -727,7 +727,7 @@ importers:
version: 1.6.0(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0)
vite-plugin-checker:
specifier: ^0.6.4
- version: 0.6.4(eslint@9.4.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.21(typescript@5.4.5))
+ version: 0.6.4(eslint@9.5.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.21(typescript@5.4.5))
vue-bundle-renderer:
specifier: ^2.1.0
version: 2.1.0
@@ -808,8 +808,8 @@ importers:
specifier: ^0.30.10
version: 0.30.10
memfs:
- specifier: ^4.9.2
- version: 4.9.2
+ specifier: ^4.9.3
+ version: 4.9.3
mini-css-extract-plugin:
specifier: ^2.9.0
version: 2.9.0(webpack@5.92.0)
@@ -1830,20 +1830,20 @@ packages:
resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/config-array@0.15.1':
- resolution: {integrity: sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==}
+ '@eslint/config-array@0.16.0':
+ resolution: {integrity: sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/eslintrc@3.1.0':
resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@9.4.0':
- resolution: {integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==}
+ '@eslint/js@9.5.0':
+ resolution: {integrity: sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/object-schema@2.1.3':
- resolution: {integrity: sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==}
+ '@eslint/object-schema@2.1.4':
+ resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@fastify/busboy@2.0.0':
@@ -4210,8 +4210,8 @@ packages:
resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@9.4.0:
- resolution: {integrity: sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==}
+ eslint@9.5.0:
+ resolution: {integrity: sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
@@ -5306,6 +5306,10 @@ packages:
resolution: {integrity: sha512-f16coDZlTG1jskq3mxarwB+fGRrd0uXWt+o1WIhRfOwbXQZqUDsTVxQBFK9JjRQHblg8eAG2JSbprDXKjc7ijQ==}
engines: {node: '>= 4.0.0'}
+ memfs@4.9.3:
+ resolution: {integrity: sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==}
+ engines: {node: '>= 4.0.0'}
+
memory-fs@0.5.0:
resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==}
engines: {node: '>=4.3.0 <5.0.0 || >=5.10'}
@@ -6922,6 +6926,12 @@ packages:
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+ tree-dump@1.0.1:
+ resolution: {integrity: sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA==}
+ engines: {node: '>=10.0'}
+ peerDependencies:
+ tslib: '2'
+
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
@@ -8197,16 +8207,16 @@ snapshots:
'@esbuild/win32-x64@0.21.5':
optional: true
- '@eslint-community/eslint-utils@4.4.0(eslint@9.4.0)':
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.5.0)':
dependencies:
- eslint: 9.4.0
+ eslint: 9.5.0
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.10.0': {}
- '@eslint/config-array@0.15.1':
+ '@eslint/config-array@0.16.0':
dependencies:
- '@eslint/object-schema': 2.1.3
+ '@eslint/object-schema': 2.1.4
debug: 4.3.4
minimatch: 3.1.2
transitivePeerDependencies:
@@ -8226,9 +8236,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@9.4.0': {}
+ '@eslint/js@9.5.0': {}
- '@eslint/object-schema@2.1.3': {}
+ '@eslint/object-schema@2.1.4': {}
'@fastify/busboy@2.0.0': {}
@@ -8587,35 +8597,35 @@ snapshots:
- utf-8-validate
- vue
- '@nuxt/eslint-config@0.3.13(eslint@9.4.0)(typescript@5.4.5)':
+ '@nuxt/eslint-config@0.3.13(eslint@9.5.0)(typescript@5.4.5)':
dependencies:
- '@eslint/js': 9.4.0
- '@nuxt/eslint-plugin': 0.3.13(eslint@9.4.0)(typescript@5.4.5)
+ '@eslint/js': 9.5.0
+ '@nuxt/eslint-plugin': 0.3.13(eslint@9.5.0)(typescript@5.4.5)
'@rushstack/eslint-patch': 1.10.3
- '@stylistic/eslint-plugin': 2.1.0(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/eslint-plugin': 7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/parser': 7.9.0(eslint@9.4.0)(typescript@5.4.5)
- eslint: 9.4.0
+ '@stylistic/eslint-plugin': 2.1.0(eslint@9.5.0)(typescript@5.4.5)
+ '@typescript-eslint/eslint-plugin': 7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5)
+ '@typescript-eslint/parser': 7.9.0(eslint@9.5.0)(typescript@5.4.5)
+ eslint: 9.5.0
eslint-config-flat-gitignore: 0.1.5
eslint-flat-config-utils: 0.2.5
- eslint-plugin-import-x: 0.5.0(eslint@9.4.0)(typescript@5.4.5)
- eslint-plugin-jsdoc: 48.2.5(eslint@9.4.0)
- eslint-plugin-regexp: 2.5.0(eslint@9.4.0)
- eslint-plugin-unicorn: 53.0.0(eslint@9.4.0)
- eslint-plugin-vue: 9.26.0(eslint@9.4.0)
+ eslint-plugin-import-x: 0.5.0(eslint@9.5.0)(typescript@5.4.5)
+ eslint-plugin-jsdoc: 48.2.5(eslint@9.5.0)
+ eslint-plugin-regexp: 2.5.0(eslint@9.5.0)
+ eslint-plugin-unicorn: 53.0.0(eslint@9.5.0)
+ eslint-plugin-vue: 9.26.0(eslint@9.5.0)
globals: 15.2.0
pathe: 1.1.2
tslib: 2.6.2
- vue-eslint-parser: 9.4.2(eslint@9.4.0)
+ vue-eslint-parser: 9.4.2(eslint@9.5.0)
transitivePeerDependencies:
- supports-color
- typescript
- '@nuxt/eslint-plugin@0.3.13(eslint@9.4.0)(typescript@5.4.5)':
+ '@nuxt/eslint-plugin@0.3.13(eslint@9.5.0)(typescript@5.4.5)':
dependencies:
'@typescript-eslint/types': 7.9.0
- '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5)
- eslint: 9.4.0
+ '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5)
+ eslint: 9.5.0
transitivePeerDependencies:
- supports-color
- typescript
@@ -9066,49 +9076,49 @@ snapshots:
'@sindresorhus/merge-streams@4.0.0': {}
- '@stylistic/eslint-plugin-js@2.1.0(eslint@9.4.0)':
+ '@stylistic/eslint-plugin-js@2.1.0(eslint@9.5.0)':
dependencies:
'@types/eslint': 8.56.10
acorn: 8.12.0
- eslint: 9.4.0
+ eslint: 9.5.0
eslint-visitor-keys: 4.0.0
espree: 10.0.1
- '@stylistic/eslint-plugin-jsx@2.1.0(eslint@9.4.0)':
+ '@stylistic/eslint-plugin-jsx@2.1.0(eslint@9.5.0)':
dependencies:
- '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.4.0)
+ '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.5.0)
'@types/eslint': 8.56.10
- eslint: 9.4.0
+ eslint: 9.5.0
estraverse: 5.3.0
picomatch: 4.0.2
- '@stylistic/eslint-plugin-plus@2.1.0(eslint@9.4.0)(typescript@5.4.5)':
+ '@stylistic/eslint-plugin-plus@2.1.0(eslint@9.5.0)(typescript@5.4.5)':
dependencies:
'@types/eslint': 8.56.10
- '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5)
- eslint: 9.4.0
+ '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5)
+ eslint: 9.5.0
transitivePeerDependencies:
- supports-color
- typescript
- '@stylistic/eslint-plugin-ts@2.1.0(eslint@9.4.0)(typescript@5.4.5)':
+ '@stylistic/eslint-plugin-ts@2.1.0(eslint@9.5.0)(typescript@5.4.5)':
dependencies:
- '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.4.0)
+ '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.5.0)
'@types/eslint': 8.56.10
- '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5)
- eslint: 9.4.0
+ '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5)
+ eslint: 9.5.0
transitivePeerDependencies:
- supports-color
- typescript
- '@stylistic/eslint-plugin@2.1.0(eslint@9.4.0)(typescript@5.4.5)':
+ '@stylistic/eslint-plugin@2.1.0(eslint@9.5.0)(typescript@5.4.5)':
dependencies:
- '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.4.0)
- '@stylistic/eslint-plugin-jsx': 2.1.0(eslint@9.4.0)
- '@stylistic/eslint-plugin-plus': 2.1.0(eslint@9.4.0)(typescript@5.4.5)
- '@stylistic/eslint-plugin-ts': 2.1.0(eslint@9.4.0)(typescript@5.4.5)
+ '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.5.0)
+ '@stylistic/eslint-plugin-jsx': 2.1.0(eslint@9.5.0)
+ '@stylistic/eslint-plugin-plus': 2.1.0(eslint@9.5.0)(typescript@5.4.5)
+ '@stylistic/eslint-plugin-ts': 2.1.0(eslint@9.5.0)(typescript@5.4.5)
'@types/eslint': 8.56.10
- eslint: 9.4.0
+ eslint: 9.5.0
transitivePeerDependencies:
- supports-color
- typescript
@@ -9320,15 +9330,15 @@ snapshots:
'@types/youtube@0.0.50': {}
- '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)':
+ '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5)':
dependencies:
'@eslint-community/regexpp': 4.10.0
- '@typescript-eslint/parser': 7.9.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/parser': 7.9.0(eslint@9.5.0)(typescript@5.4.5)
'@typescript-eslint/scope-manager': 7.9.0
- '@typescript-eslint/type-utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/type-utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5)
'@typescript-eslint/visitor-keys': 7.9.0
- eslint: 9.4.0
+ eslint: 9.5.0
graphemer: 1.4.0
ignore: 5.3.1
natural-compare: 1.4.0
@@ -9338,14 +9348,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@7.9.0(eslint@9.4.0)(typescript@5.4.5)':
+ '@typescript-eslint/parser@7.9.0(eslint@9.5.0)(typescript@5.4.5)':
dependencies:
'@typescript-eslint/scope-manager': 7.9.0
'@typescript-eslint/types': 7.9.0
'@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5)
'@typescript-eslint/visitor-keys': 7.9.0
debug: 4.3.4
- eslint: 9.4.0
+ eslint: 9.5.0
optionalDependencies:
typescript: 5.4.5
transitivePeerDependencies:
@@ -9356,12 +9366,12 @@ snapshots:
'@typescript-eslint/types': 7.9.0
'@typescript-eslint/visitor-keys': 7.9.0
- '@typescript-eslint/type-utils@7.9.0(eslint@9.4.0)(typescript@5.4.5)':
+ '@typescript-eslint/type-utils@7.9.0(eslint@9.5.0)(typescript@5.4.5)':
dependencies:
'@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5)
- '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5)
debug: 4.3.4
- eslint: 9.4.0
+ eslint: 9.5.0
ts-api-utils: 1.3.0(typescript@5.4.5)
optionalDependencies:
typescript: 5.4.5
@@ -9385,13 +9395,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@7.9.0(eslint@9.4.0)(typescript@5.4.5)':
+ '@typescript-eslint/utils@7.9.0(eslint@9.5.0)(typescript@5.4.5)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0)
'@typescript-eslint/scope-manager': 7.9.0
'@typescript-eslint/types': 7.9.0
'@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5)
- eslint: 9.4.0
+ eslint: 9.5.0
transitivePeerDependencies:
- supports-color
- typescript
@@ -11294,12 +11304,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import-x@0.5.0(eslint@9.4.0)(typescript@5.4.5):
+ eslint-plugin-import-x@0.5.0(eslint@9.5.0)(typescript@5.4.5):
dependencies:
- '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5)
debug: 4.3.4
doctrine: 3.0.0
- eslint: 9.4.0
+ eslint: 9.5.0
eslint-import-resolver-node: 0.3.9
get-tsconfig: 4.7.3
is-glob: 4.0.3
@@ -11309,14 +11319,14 @@ snapshots:
- supports-color
- typescript
- eslint-plugin-jsdoc@48.2.5(eslint@9.4.0):
+ eslint-plugin-jsdoc@48.2.5(eslint@9.5.0):
dependencies:
'@es-joy/jsdoccomment': 0.43.0
are-docs-informative: 0.0.2
comment-parser: 1.4.1
debug: 4.3.4
escape-string-regexp: 4.0.0
- eslint: 9.4.0
+ eslint: 9.5.0
esquery: 1.5.0
is-builtin-module: 3.2.1
semver: 7.6.2
@@ -11326,38 +11336,38 @@ snapshots:
eslint-plugin-no-only-tests@3.1.0: {}
- eslint-plugin-perfectionist@2.11.0(eslint@9.4.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.4.0)):
+ eslint-plugin-perfectionist@2.11.0(eslint@9.5.0)(typescript@5.4.5)(vue-eslint-parser@9.4.2(eslint@9.5.0)):
dependencies:
- '@typescript-eslint/utils': 7.9.0(eslint@9.4.0)(typescript@5.4.5)
- eslint: 9.4.0
+ '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.4.5)
+ eslint: 9.5.0
minimatch: 9.0.4
natural-compare-lite: 1.4.0
optionalDependencies:
- vue-eslint-parser: 9.4.2(eslint@9.4.0)
+ vue-eslint-parser: 9.4.2(eslint@9.5.0)
transitivePeerDependencies:
- supports-color
- typescript
- eslint-plugin-regexp@2.5.0(eslint@9.4.0):
+ eslint-plugin-regexp@2.5.0(eslint@9.5.0):
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0)
'@eslint-community/regexpp': 4.10.0
comment-parser: 1.4.1
- eslint: 9.4.0
+ eslint: 9.5.0
jsdoc-type-pratt-parser: 4.0.0
refa: 0.12.1
regexp-ast-analysis: 0.7.1
scslre: 0.3.0
- eslint-plugin-unicorn@53.0.0(eslint@9.4.0):
+ eslint-plugin-unicorn@53.0.0(eslint@9.5.0):
dependencies:
'@babel/helper-validator-identifier': 7.24.7
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0)
'@eslint/eslintrc': 3.1.0
ci-info: 4.0.0
clean-regexp: 1.0.0
core-js-compat: 3.37.1
- eslint: 9.4.0
+ eslint: 9.5.0
esquery: 1.5.0
indent-string: 4.0.0
is-builtin-module: 3.2.1
@@ -11371,16 +11381,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-vue@9.26.0(eslint@9.4.0):
+ eslint-plugin-vue@9.26.0(eslint@9.5.0):
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
- eslint: 9.4.0
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0)
+ eslint: 9.5.0
globals: 13.24.0
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 6.1.0
semver: 7.6.2
- vue-eslint-parser: 9.4.2(eslint@9.4.0)
+ vue-eslint-parser: 9.4.2(eslint@9.5.0)
xml-name-validator: 4.0.0
transitivePeerDependencies:
- supports-color
@@ -11400,10 +11410,10 @@ snapshots:
esrecurse: 4.3.0
estraverse: 5.3.0
- eslint-typegen@0.2.4(eslint@9.4.0):
+ eslint-typegen@0.2.4(eslint@9.5.0):
dependencies:
'@types/eslint': 8.56.10
- eslint: 9.4.0
+ eslint: 9.5.0
json-schema-to-typescript-lite: 14.0.1
ohash: 1.1.3
@@ -11411,13 +11421,13 @@ snapshots:
eslint-visitor-keys@4.0.0: {}
- eslint@9.4.0:
+ eslint@9.5.0:
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0)
'@eslint-community/regexpp': 4.10.0
- '@eslint/config-array': 0.15.1
+ '@eslint/config-array': 0.16.0
'@eslint/eslintrc': 3.1.0
- '@eslint/js': 9.4.0
+ '@eslint/js': 9.5.0
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.3.0
'@nodelib/fs.walk': 1.2.8
@@ -12714,6 +12724,13 @@ snapshots:
sonic-forest: 1.0.0(tslib@2.6.2)
tslib: 2.6.2
+ memfs@4.9.3:
+ dependencies:
+ '@jsonjoy.com/json-pack': 1.0.3(tslib@2.6.2)
+ '@jsonjoy.com/util': 1.1.2(tslib@2.6.2)
+ tree-dump: 1.0.1(tslib@2.6.2)
+ tslib: 2.6.2
+
memory-fs@0.5.0:
dependencies:
errno: 0.1.8
@@ -14617,6 +14634,10 @@ snapshots:
tr46@0.0.3: {}
+ tree-dump@1.0.1(tslib@2.6.2):
+ dependencies:
+ tslib: 2.6.2
+
trim-lines@3.0.1: {}
trough@2.2.0: {}
@@ -15030,7 +15051,7 @@ snapshots:
- supports-color
- terser
- vite-plugin-checker@0.6.4(eslint@9.4.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.21(typescript@5.4.5)):
+ vite-plugin-checker@0.6.4(eslint@9.5.0)(optionator@0.9.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.2)(sass@1.69.4)(terser@5.27.0))(vue-tsc@2.0.21(typescript@5.4.5)):
dependencies:
'@babel/code-frame': 7.24.7
ansi-escapes: 4.3.2
@@ -15049,7 +15070,7 @@ snapshots:
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
optionalDependencies:
- eslint: 9.4.0
+ eslint: 9.5.0
optionator: 0.9.3
typescript: 5.4.5
vue-tsc: 2.0.21(typescript@5.4.5)
@@ -15190,10 +15211,10 @@ snapshots:
vue-devtools-stub@0.1.0: {}
- vue-eslint-parser@9.4.2(eslint@9.4.0):
+ vue-eslint-parser@9.4.2(eslint@9.5.0):
dependencies:
debug: 4.3.4
- eslint: 9.4.0
+ eslint: 9.5.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
diff --git a/scripts/release-edge.sh b/scripts/release-edge.sh
index 0ce9491a61..eb04601bbc 100755
--- a/scripts/release-edge.sh
+++ b/scripts/release-edge.sh
@@ -18,6 +18,9 @@ if [[ ! -z ${NODE_AUTH_TOKEN} ]] ; then
npm whoami
fi
+# use absolute urls for better rendering on npm
+sed -i '' 's/\.\/\.github\/assets/https:\/\/github.com\/nuxt\/nuxt\/tree\/main\/\.github\/assets/g' README.md
+
# Release packages
for p in packages/* ; do
if [[ $p == "packages/nuxi" ]] ; then
diff --git a/scripts/release-rc.sh b/scripts/release-rc.sh
index f2623c1e61..88e04e5d30 100755
--- a/scripts/release-rc.sh
+++ b/scripts/release-rc.sh
@@ -8,6 +8,9 @@ git restore -s@ -SW -- packages examples
# Build all once to ensure things are nice
pnpm build
+# use absolute urls for better rendering on npm
+sed -i '' 's/\.\/\.github\/assets/https:\/\/github.com\/nuxt\/nuxt\/tree\/main\/\.github\/assets/g' README.md
+
# Release packages
for PKG in packages/* ; do
if [[ $PKG == "packages/nuxi" ]] ; then
diff --git a/scripts/release.sh b/scripts/release.sh
index f8fc5bd819..40c18c87cc 100755
--- a/scripts/release.sh
+++ b/scripts/release.sh
@@ -8,6 +8,9 @@ git restore -s@ -SW -- packages examples
# Build all once to ensure things are nice
pnpm build
+# use absolute urls for better rendering on npm
+sed -i '' 's/\.\/\.github\/assets/https:\/\/github.com\/nuxt\/nuxt\/tree\/main\/\.github\/assets/g' README.md
+
# Release packages
for PKG in packages/* ; do
if [[ $PKG == "packages/nuxi" ]] ; then