@nuxt/webpack-builder-nightly 4.5.1-29752449.30d24817 → 4.5.2-2610052030-052d82e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -3,8 +3,6 @@ import webpack from "webpack";
3
3
  import MiniCssExtractPlugin from "mini-css-extract-plugin";
4
4
  import TsCheckerPlugin from "fork-ts-checker-webpack-plugin";
5
5
  import { NuxtBuilder } from "@nuxt/schema";
6
-
7
6
  //#region src/webpack.d.ts
8
- declare const bundle: NuxtBuilder["bundle"];
9
- //#endregion
10
- export { bundle };
7
+ export declare const bundle: NuxtBuilder["bundle"];
8
+ //#endregion
package/dist/index.mjs CHANGED
@@ -6,11 +6,12 @@ import webpack from "webpack";
6
6
  import MiniCssExtractPlugin from "mini-css-extract-plugin";
7
7
  import WebpackBarPlugin from "webpackbar";
8
8
  import TsCheckerPlugin from "fork-ts-checker-webpack-plugin";
9
- import pify from "pify";
9
+ import { promisify } from "node:util";
10
10
  import { defu } from "defu";
11
11
  import { basename, dirname, isAbsolute, join, normalize, relative, resolve } from "pathe";
12
12
  import { joinURL, withTrailingSlash } from "ufo";
13
- import { DEFAULT_JS_FILE_EXTENSIONS, bundlerDiagnostics, configDiagnostics, directoryToURL, logger, resolveAlias, setBuildOutput, useNitro, useNuxt } from "@nuxt/kit";
13
+ import { directoryToURL, getAddDependencyCommand, logger, resolveAlias, setBuildOutput, tryImportModule, useNitro, useNuxt } from "@nuxt/kit";
14
+ import { DEFAULT_JS_FILE_EXTENSIONS, bundlerDiagnostics, configDiagnostics, parseNodeModulePath } from "@nuxt/kit/internal";
14
15
  import { createUnplugin } from "unplugin";
15
16
  import { generateTransform, rolldownString } from "rolldown-string";
16
17
  import { existsSync, readFileSync } from "node:fs";
@@ -22,14 +23,12 @@ import querystring from "node:querystring";
22
23
  import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
23
24
  import { defineEnv } from "unenv";
24
25
  import { fileURLToPath } from "node:url";
25
- import { parseNodeModulePath } from "mlly";
26
26
  import TimeFixPlugin from "time-fix-plugin";
27
27
  import FriendlyErrorsWebpackPlugin from "@nuxt/friendly-errors-webpack-plugin";
28
28
  import escapeRegExp from "escape-string-regexp";
29
29
  import { EsbuildPlugin } from "esbuild-loader";
30
30
  import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
31
31
  import createResolver from "postcss-import-resolver";
32
- import { createJiti } from "jiti";
33
32
  import { mkdir, writeFile } from "node:fs/promises";
34
33
  import { normalizeWebpackManifest, precomputeDependencies } from "vue-bundle-renderer";
35
34
  import { hash } from "ohash";
@@ -137,10 +136,11 @@ function parseModuleId(id) {
137
136
  search: id.slice(qIndex)
138
137
  };
139
138
  }
139
+ /** Matches module IDs for Vue files (ignoring query strings). */
140
+ const VUE_ID_RE = /\.vue(?:\?|$)/;
140
141
  //#endregion
141
142
  //#region src/plugins/ssr-styles.ts
142
143
  const CSS_URL_RE = /url\((['"]?)(\/[^)]+?)\1\)/g;
143
- const isVueFile = (id) => /\.vue(?:\?|$)/.test(id);
144
144
  const isCSSLike = (name) => /\.(?:css|scss|sass|less|styl(?:us)?|postcss|pcss)(?:\?|$)/.test(name);
145
145
  function normalizePath(nuxt, id) {
146
146
  if (!id) return null;
@@ -160,7 +160,9 @@ function normalizeCSSContent(css) {
160
160
  return css.trim().replace(/(--[^:]+):\s*'([^']*)'/g, "$1:\"$2\"").replace(/:\s+/g, ":").replace(/\s*\{\s*/g, "{").replace(/;\s*\}/g, "}").replace(/\s*\}\s*/g, "}");
161
161
  }
162
162
  function getVueLoaderScopeId(filePath, source, rootContext) {
163
- return getVueLoaderHash(`${normalize(relative(rootContext || process.cwd(), filePath).replace(/^(?:\.\.[/\\])+/, "")).replace(/\\/g, "/")}\n${source.replace(/\r\n/g, "\n")}`);
163
+ const rawShortFilePath = relative(rootContext || process.cwd(), filePath).replace(/^(?:\.\.[/\\])+/, "");
164
+ const shortFilePath = normalize(rawShortFilePath).replace(/\\/g, "/");
165
+ return getVueLoaderHash(`${shortFilePath}\n${source.replace(/\r\n/g, "\n")}`);
164
166
  }
165
167
  function extractVueStyles(filePath, rootContext) {
166
168
  try {
@@ -210,16 +212,17 @@ var SSRStylesPlugin = class {
210
212
  escapeTemplateLiteral(str) {
211
213
  return str.replace(/[`\\$]/g, (m) => m === "$" ? "\\$" : `\\${m}`);
212
214
  }
213
- isBuildAsset(url) {
215
+ buildAssetPath(url) {
214
216
  const buildDir = withTrailingSlash(this.nuxt.options.app.buildAssetsDir || "/_nuxt/");
215
- return url.startsWith(buildDir);
217
+ return url.startsWith(buildDir) ? url.slice(buildDir.length) : null;
216
218
  }
217
219
  isPublicAsset(url, nitro) {
218
220
  const cleaned = url.replace(/[?#].*$/, "");
219
221
  for (const dir of nitro.options.publicAssets) {
220
222
  const base = withTrailingSlash(dir.baseURL || "/");
221
223
  if (!url.startsWith(base)) continue;
222
- if (existsSync(cleaned.replace(base, withTrailingSlash(dir.dir)))) return true;
224
+ const path = cleaned.replace(base, withTrailingSlash(dir.dir));
225
+ if (existsSync(path)) return true;
223
226
  }
224
227
  return false;
225
228
  }
@@ -236,14 +239,16 @@ var SSRStylesPlugin = class {
236
239
  const full = match[0];
237
240
  const rawUrl = match[2] || "";
238
241
  const stripped = rawUrl.replace(/[?#].*$/, "");
239
- if (this.isPublicAsset(stripped, nitro)) {
240
- needsPublicAsset = true;
241
- changed = true;
242
- out += "${publicAssetsURL(" + JSON.stringify(rawUrl) + ")}";
243
- } else if (this.isBuildAsset(stripped)) {
242
+ const quote = match[1] || "";
243
+ const buildAssetPath = this.buildAssetPath(stripped);
244
+ if (buildAssetPath) {
244
245
  needsBuildAsset = true;
245
246
  changed = true;
246
- out += "${buildAssetsURL(" + JSON.stringify(rawUrl) + ")}";
247
+ out += `url(${quote}\${buildAssetsURL(${JSON.stringify(buildAssetPath + rawUrl.slice(stripped.length))})}${quote})`;
248
+ } else if (this.isPublicAsset(stripped, nitro)) {
249
+ needsPublicAsset = true;
250
+ changed = true;
251
+ out += `url(${quote}\${publicAssetsURL(${JSON.stringify(rawUrl)})}${quote})`;
247
252
  } else out += this.escapeTemplateLiteral(full);
248
253
  lastIndex = index + full.length;
249
254
  }
@@ -317,7 +322,7 @@ var SSRStylesPlugin = class {
317
322
  }
318
323
  for (const module of compilation.modules) {
319
324
  const resource = module.resource;
320
- if (!resource || !isVueFile(resource)) continue;
325
+ if (!resource || !VUE_ID_RE.test(resource)) continue;
321
326
  const rel = normalizePath(this.nuxt, resource);
322
327
  if (!rel) continue;
323
328
  if (collected.has(rel)) continue;
@@ -347,7 +352,7 @@ var SSRStylesPlugin = class {
347
352
  const stylesSource = ["const interopDefault = r => r.default || r || []", `export default ${genObjectFromRawEntries(Object.entries(emitted).map(([key, value]) => [key, `() => import('./${value}').then(interopDefault)`]))}`].join("\n");
348
353
  compilation.emitAsset("styles.mjs", new rawSource(stylesSource));
349
354
  const stylesPath = resolve(this.nuxt.options.buildDir, "dist/server/styles.mjs");
350
- setBuildOutput("ssrStyles", () => `export { default } from ${JSON.stringify(stylesPath)}`, this.nuxt);
355
+ setBuildOutput("ssrStyles", () => [`export { default } from ${JSON.stringify(stylesPath)}`, "export const inlinedCSS = {}"].join("\n"), this.nuxt);
351
356
  const entryIds = Array.from(this.chunksWithInlinedCSS).filter((id) => entryModules.has(id));
352
357
  setBuildOutput("entryIds", () => `export default ${JSON.stringify(entryIds)}`, this.nuxt);
353
358
  });
@@ -461,7 +466,7 @@ function createMFS() {
461
466
  const _fs = { ...createFsFromVolume(new Volume()) };
462
467
  _fs.join = join;
463
468
  _fs.exists = (p) => Promise.resolve(_fs.existsSync(p));
464
- _fs.readFile = pify(_fs.readFile);
469
+ _fs.readFile = promisify(_fs.readFile);
465
470
  return _fs;
466
471
  }
467
472
  //#endregion
@@ -789,10 +794,49 @@ function basePlugins(ctx) {
789
794
  ctx.config.plugins.push(new StripInvalidPureAnnotationsPlugin());
790
795
  }
791
796
  }
797
+ /**
798
+ * Pin the packages that hold global vue state (`currentInstance`, reactivity
799
+ * internals, injection keys) to a single resolved entry, mirroring vite's
800
+ * `resolve.dedupe: ['vue']`.
801
+ */
802
+ function vueAliases(ctx) {
803
+ const aliases = {};
804
+ const from = [
805
+ directoryToURL(ctx.nuxt.options.rootDir),
806
+ directoryToURL(ctx.nuxt.options.workspaceDir),
807
+ import.meta.url
808
+ ];
809
+ const conditions = ctx.isServer ? [
810
+ "node",
811
+ "import",
812
+ "default"
813
+ ] : [
814
+ "browser",
815
+ "import",
816
+ "default"
817
+ ];
818
+ for (const pkg of [
819
+ "@vue/runtime-core",
820
+ "@vue/runtime-dom",
821
+ "@vue/reactivity",
822
+ "@vue/shared",
823
+ "@vue/runtime-vapor",
824
+ "vue-router"
825
+ ]) {
826
+ const entry = resolveModulePath(pkg, {
827
+ from,
828
+ conditions,
829
+ try: true
830
+ });
831
+ if (entry) aliases[`${pkg}$`] = entry;
832
+ }
833
+ return aliases;
834
+ }
792
835
  function baseAlias(ctx) {
793
836
  ctx.alias = {
794
837
  "#app": ctx.options.appDir,
795
838
  [basename(ctx.nuxt.options.dir.assets)]: resolve(ctx.nuxt.options.srcDir, ctx.nuxt.options.dir.assets),
839
+ ...vueAliases(ctx),
796
840
  ...ctx.options.alias,
797
841
  ...ctx.alias
798
842
  };
@@ -842,10 +886,13 @@ function baseResolve(ctx) {
842
886
  ".json",
843
887
  ".vue"
844
888
  ],
845
- alias: ctx.alias,
846
889
  modules: resolveModules,
847
890
  fullySpecified: false,
848
- ...ctx.config.resolve
891
+ ...ctx.config.resolve,
892
+ alias: {
893
+ ...ctx.alias,
894
+ ...ctx.config.resolve?.alias
895
+ }
849
896
  };
850
897
  ctx.config.resolveLoader = {
851
898
  modules: resolveLoaderModules,
@@ -928,7 +975,7 @@ const statsMap = {
928
975
  //#region src/presets/esbuild.ts
929
976
  function esbuild(ctx) {
930
977
  const target = ctx.isServer ? "es2020" : "chrome85";
931
- ctx.config.optimization.minimizer.push(new EsbuildPlugin());
978
+ ctx.config.optimization.minimizer.push(new EsbuildPlugin({ minify: !!ctx.config.optimization.minimize }));
932
979
  ctx.config.module.rules.push({
933
980
  test: /\.m?[jt]s$/i,
934
981
  loader: "esbuild-loader",
@@ -993,32 +1040,31 @@ async function getPostcssConfig(nuxt) {
993
1040
  "postcss-url": {}
994
1041
  };
995
1042
  const postcssOptions = defu({}, nuxt.options.postcss, {
1043
+ config: false,
996
1044
  plugins: defaultPlugins,
997
1045
  sourceMap: nuxt.options.webpack.cssSourceMap
998
1046
  });
999
1047
  const defaultPluginNames = new Set(Object.keys(defaultPlugins));
1000
- const jiti = createJiti(nuxt.options.rootDir, { alias: nuxt.options.alias });
1001
1048
  if (!Array.isArray(postcssOptions.plugins) && isPureObject(postcssOptions.plugins)) {
1002
1049
  const plugins = [];
1003
1050
  for (const pluginName of sortPlugins(postcssOptions)) {
1004
1051
  const pluginOptions = postcssOptions.plugins[pluginName];
1005
1052
  if (!pluginOptions) continue;
1006
1053
  const isDefault = defaultPluginNames.has(pluginName);
1007
- const parentURLs = isDefault ? [import.meta.url] : nuxt.options.modulesDir;
1008
- let pluginFn;
1009
- for (const parentURL of parentURLs) {
1010
- pluginFn = await jiti.import(pluginName, {
1011
- parentURL: parentURL.replace(/\/node_modules\/?$/, ""),
1012
- try: true,
1013
- default: true
1054
+ const parentURLs = isDefault ? [new URL(import.meta.url)] : nuxt.options.modulesDir.map((dir) => directoryToURL(dir.replace(/\/node_modules\/?$/, "")));
1055
+ const pluginFn = await tryImportModule(pluginName, { url: parentURLs });
1056
+ if (typeof pluginFn === "function") plugins.push(pluginFn(pluginOptions));
1057
+ else {
1058
+ const installCommand = await getAddDependencyCommand(pluginName, nuxt.options.rootDir, { dev: true });
1059
+ if (isDefault) bundlerDiagnostics.NUXT_B7011({
1060
+ pluginName,
1061
+ installCommand
1062
+ });
1063
+ else bundlerDiagnostics.NUXT_B7007({
1064
+ pluginName,
1065
+ installCommand
1014
1066
  });
1015
- if (typeof pluginFn === "function") {
1016
- plugins.push(pluginFn(pluginOptions));
1017
- break;
1018
- }
1019
1067
  }
1020
- if (typeof pluginFn !== "function") if (isDefault) bundlerDiagnostics.NUXT_B7011({ pluginName });
1021
- else bundlerDiagnostics.NUXT_B7007({ pluginName });
1022
1068
  }
1023
1069
  postcssOptions.plugins = plugins;
1024
1070
  }
@@ -1337,7 +1383,7 @@ function clientDevtool(ctx) {
1337
1383
  }
1338
1384
  function clientPerformance(ctx) {
1339
1385
  ctx.config.performance = {
1340
- maxEntrypointSize: 1e3 * 1024,
1386
+ maxEntrypointSize: 1024e3,
1341
1387
  hints: ctx.isDev ? false : "warning",
1342
1388
  ...ctx.config.performance
1343
1389
  };
@@ -1376,7 +1422,8 @@ function clientHMR(ctx) {
1376
1422
  ctx.config.entry.app.unshift(`webpack-hot-middleware/client?${hotMiddlewareClientOptionsStr}`);
1377
1423
  }
1378
1424
  function clientOptimization(ctx) {
1379
- if (!ctx.nuxt.options.features.inlineStyles) return;
1425
+ const inlineStyles = ctx.nuxt.options.features.inlineStyles;
1426
+ if (!inlineStyles) return;
1380
1427
  const globalCSSPaths = /* @__PURE__ */ new Set();
1381
1428
  for (const css of ctx.options.css) if (typeof css === "string") {
1382
1429
  const resolved = resolveAlias(css, ctx.options.alias);
@@ -1393,7 +1440,7 @@ function clientOptimization(ctx) {
1393
1440
  test: (module) => {
1394
1441
  if (module.type !== "css/mini-extract") return false;
1395
1442
  const identifier = normalize(module.identifier());
1396
- for (const globalPath of globalCSSPaths) if (identifier.includes(globalPath)) return true;
1443
+ for (const globalPath of globalCSSPaths) if (identifier.includes(globalPath)) return typeof inlineStyles === "boolean" ? inlineStyles : inlineStyles(module.identifier());
1397
1444
  return false;
1398
1445
  }
1399
1446
  };
@@ -1521,8 +1568,10 @@ function serverStandalone(ctx) {
1521
1568
  }
1522
1569
  if (request[0] === "." || isAbsolute(request) || inline.find((prefix) => typeof prefix === "string" && request.startsWith(prefix)) || assetPattern.test(request)) return cb(void 0, false);
1523
1570
  if (context && request && !request.startsWith("node:") && (isAbsolute(context) || VIRTUAL_RE.test(context))) try {
1524
- const resolved = resolveModulePath(resolveAlias(normalize(request), ctx.nuxt.options.alias), {
1525
- from: [parseNodeModulePath(context).dir || ctx.nuxt.options.rootDir, ...ctx.nuxt.options.modulesDir].map((d) => directoryToURL(d)),
1571
+ const normalisedRequest = resolveAlias(normalize(request), ctx.nuxt.options.alias);
1572
+ const dir = parseNodeModulePath(context).dir || ctx.nuxt.options.rootDir;
1573
+ const resolved = resolveModulePath(normalisedRequest, {
1574
+ from: [dir, ...ctx.nuxt.options.modulesDir].map((d) => directoryToURL(d)),
1526
1575
  suffixes: ["", "index"],
1527
1576
  conditions,
1528
1577
  try: true
@@ -1597,10 +1646,11 @@ function createRsbuildInstance(configs, nuxt) {
1597
1646
  for (const config of configs) {
1598
1647
  const isServer = config.name === "server";
1599
1648
  if (nuxt.options.dev && !isServer) config.target ??= "web";
1649
+ const distPath = isServer && nuxt.options.dev ? resolve(nuxt.options.buildDir, "dist/.rsbuild-server") : config.output.path;
1600
1650
  environments[config.name] = {
1601
1651
  output: {
1602
1652
  target: isServer ? "node" : "web",
1603
- distPath: { root: config.output.path }
1653
+ distPath: { root: distPath }
1604
1654
  },
1605
1655
  tools: { rspack: () => config }
1606
1656
  };
@@ -1709,7 +1759,7 @@ async function createDevMiddleware(compiler) {
1709
1759
  stats: "none",
1710
1760
  ...nuxt.options.webpack.devMiddleware
1711
1761
  });
1712
- nuxt.hook("close", () => pify(devMiddleware.close.bind(devMiddleware))());
1762
+ nuxt.hook("close", () => promisify(devMiddleware.close.bind(devMiddleware))());
1713
1763
  const { client: _client, ...hotMiddlewareOptions } = nuxt.options.webpack.hotMiddleware || {};
1714
1764
  const hotMiddleware = webpackHotMiddleware(compiler, {
1715
1765
  log: false,
@@ -1767,7 +1817,7 @@ async function compile(compiler) {
1767
1817
  if (nuxt.options.dev) {
1768
1818
  const compilersWatching = [];
1769
1819
  nuxt.hook("close", async () => {
1770
- await Promise.all(compilersWatching.map((watching) => watching && pify(watching.close.bind(watching))()));
1820
+ await Promise.all(compilersWatching.map((watching) => watching && promisify(watching.close.bind(watching))()));
1771
1821
  });
1772
1822
  if (compiler.options.name === "client") return new Promise((resolve, reject) => {
1773
1823
  compiler.hooks.done.tap("nuxt-dev", () => {
@@ -1,5 +1,4 @@
1
1
  import { LoaderDefinitionFunction } from "webpack";
2
-
3
2
  //#region src/loaders/vue-module-identifier.d.ts
4
3
  interface LoaderOptions {
5
4
  srcDir?: string;
@@ -6,7 +6,8 @@ const vueModuleIdentifierLoader = function(source) {
6
6
  const resourcePath = this.resourcePath || this._module?.resource;
7
7
  if (!resourcePath || !source.includes("__exports__")) return source;
8
8
  const context = srcDir || this.rootContext || this.context || this._compiler?.options?.context;
9
- const moduleId = normalize(context ? relative(context, resourcePath) : resourcePath).replace(/^\.\//, "").replace(/\\/g, "/");
9
+ const relativePath = context ? relative(context, resourcePath) : resourcePath;
10
+ const moduleId = normalize(relativePath).replace(/^\.\//, "").replace(/\\/g, "/");
10
11
  return source + `\n;__exports__.__moduleIdentifier = ${JSON.stringify(moduleId)};`;
11
12
  };
12
13
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuxt/webpack-builder-nightly",
3
- "version": "4.5.1-29752449.30d24817",
3
+ "version": "4.5.2-2610052030-052d82e",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/nuxt/nuxt.git",
@@ -24,69 +24,65 @@
24
24
  ],
25
25
  "dependencies": {
26
26
  "@nuxt/friendly-errors-webpack-plugin": "^2.6.0",
27
- "@nuxt/kit": "npm:@nuxt/kit-nightly@4.5.1-29752449.30d24817",
28
- "@vue/compiler-sfc": "3.5.40",
29
- "autoprefixer": "^10.5.4",
30
- "css-loader": "^7.1.4",
27
+ "@nuxt/kit": "npm:@nuxt/kit-nightly@4.5.2-2610052030-052d82e",
28
+ "@vue/compiler-sfc": "3.5.43",
29
+ "autoprefixer": "^10.6.1",
30
+ "css-loader": "^7.1.5",
31
31
  "css-minimizer-webpack-plugin": "^8.0.0",
32
- "cssnano": "^8.0.2",
32
+ "cssnano": "^9.2.2",
33
33
  "defu": "^6.1.7",
34
34
  "esbuild-loader": "^4.5.0",
35
35
  "escape-string-regexp": "^5.0.0",
36
- "exsolve": "^1.1.0",
36
+ "exsolve": "^1.1.3",
37
37
  "file-loader": "^6.2.0",
38
38
  "fork-ts-checker-webpack-plugin": "^9.1.0",
39
39
  "hash-sum": "^2.0.0",
40
- "jiti": "^2.7.0",
41
40
  "knitwork": "^1.3.0",
42
- "memfs": "^4.64.0",
41
+ "memfs": "^4.80.0",
43
42
  "mini-css-extract-plugin": "^2.10.2",
44
- "mlly": "^1.8.2",
45
- "ohash": "^2.0.11",
43
+ "ohash": "^2.0.12",
46
44
  "pathe": "^2.0.3",
47
- "pify": "^6.1.0",
48
- "postcss": "^8.5.22",
49
- "postcss-import": "^16.1.1",
45
+ "postcss": "^8.5.28",
46
+ "postcss-import": "^17.0.0",
50
47
  "postcss-import-resolver": "^2.0.0",
51
48
  "postcss-loader": "^8.2.1",
52
49
  "postcss-url": "^10.1.4",
53
50
  "pug-plain-loader": "^1.1.0",
54
51
  "raw-loader": "^4.0.2",
55
52
  "rolldown-string": "^0.3.1",
56
- "seroval": "^1.5.6",
53
+ "seroval": "^1.6.8",
57
54
  "time-fix-plugin": "^2.0.7",
58
55
  "ufo": "^1.6.4",
59
56
  "unenv": "^2.0.0-rc.24",
60
- "unplugin": "^3.3.0",
57
+ "unplugin": "^3.4.0",
61
58
  "url-loader": "^4.1.1",
62
- "vue-bundle-renderer": "^2.3.1",
59
+ "vue-bundle-renderer": "^2.4.0",
63
60
  "vue-loader": "^17.4.2",
64
- "webpack": "^5.108.4",
65
- "webpack-bundle-analyzer": "^5.3.1",
66
- "webpack-dev-middleware": "^8.0.3",
61
+ "webpack": "^5.111.1",
62
+ "webpack-bundle-analyzer": "^5.4.0",
63
+ "webpack-dev-middleware": "^8.3.0",
67
64
  "webpack-hot-middleware": "^2.26.1",
68
65
  "webpackbar": "^7.0.0"
69
66
  },
70
67
  "devDependencies": {
71
- "@nuxt/schema": "npm:@nuxt/schema-nightly@4.5.1-29752449.30d24817",
72
- "@rspack/core": "2.1.5",
68
+ "@nuxt/schema": "npm:@nuxt/schema-nightly@4.5.2-2610052030-052d82e",
69
+ "@rspack/core": "2.2.8",
73
70
  "@types/hash-sum": "1.0.2",
74
71
  "@types/webpack-bundle-analyzer": "4.7.0",
75
72
  "@types/webpack-hot-middleware": "2.25.12",
76
73
  "h3": "1.15.11",
77
- "h3-next": "npm:h3@2.0.1-rc.25",
78
- "rollup": "4.62.2",
79
- "tsdown": "0.22.0",
80
- "vue": "^3.5.40"
74
+ "h3-next": "npm:h3@2.0.1-rc.32",
75
+ "rollup": "4.64.0",
76
+ "tsdown": "0.23.0",
77
+ "vue": "^3.5.43"
81
78
  },
82
79
  "peerDependencies": {
83
- "nuxt": "npm:nuxt-nightly@4.5.1-29752449.30d24817",
80
+ "nuxt": "npm:nuxt-nightly@4.5.2-2610052030-052d82e",
84
81
  "vue": "^3.3.4"
85
82
  },
86
83
  "engines": {
87
- "node": "^22.12.0 || ^24.11.0 || >=26.0.0"
84
+ "node": "^22.22.3 || ^24.15.0 || >=26.0.0"
88
85
  },
89
- "_name": "@nuxt/webpack-builder",
90
86
  "scripts": {
91
87
  "build": "tsdown",
92
88
  "test:attw": "node ../../scripts/test-attw.ts"