vite 5.2.12 → 5.3.0-beta.0

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.
@@ -1,4 +1,4 @@
1
- import { B as getDefaultExportFromCjs } from './dep-BKbDVx1T.js';
1
+ import { B as getDefaultExportFromCjs } from './dep-BBErwUJM.js';
2
2
  import require$$0 from 'path';
3
3
  import require$$0__default from 'fs';
4
4
  import { l as lib } from './dep-IQS-Za7F.js';
@@ -1,4 +1,4 @@
1
- import { C as commonjsGlobal, B as getDefaultExportFromCjs } from './dep-BKbDVx1T.js';
1
+ import { C as commonjsGlobal, B as getDefaultExportFromCjs } from './dep-BBErwUJM.js';
2
2
  import require$$0__default from 'fs';
3
3
  import require$$0 from 'postcss';
4
4
  import require$$0$1 from 'path';
package/dist/node/cli.js CHANGED
@@ -2,7 +2,7 @@ import path from 'node:path';
2
2
  import fs from 'node:fs';
3
3
  import { performance } from 'node:perf_hooks';
4
4
  import { EventEmitter } from 'events';
5
- import { A as colors, v as createLogger, r as resolveConfig } from './chunks/dep-BKbDVx1T.js';
5
+ import { A as colors, v as createLogger, r as resolveConfig } from './chunks/dep-BBErwUJM.js';
6
6
  import { VERSION } from './constants.js';
7
7
  import 'node:fs/promises';
8
8
  import 'node:url';
@@ -32,8 +32,8 @@ import 'node:assert';
32
32
  import 'node:v8';
33
33
  import 'node:worker_threads';
34
34
  import 'node:buffer';
35
- import 'node:events';
36
35
  import 'rollup/parseAst';
36
+ import 'node:events';
37
37
  import 'querystring';
38
38
  import 'node:readline';
39
39
  import 'zlib';
@@ -757,7 +757,7 @@ cli
757
757
  filterDuplicateOptions(options);
758
758
  // output structure is preserved even after bundling so require()
759
759
  // is ok here
760
- const { createServer } = await import('./chunks/dep-BKbDVx1T.js').then(function (n) { return n.E; });
760
+ const { createServer } = await import('./chunks/dep-BBErwUJM.js').then(function (n) { return n.E; });
761
761
  try {
762
762
  const server = await createServer({
763
763
  root,
@@ -836,7 +836,7 @@ cli
836
836
  .option('-w, --watch', `[boolean] rebuilds when modules have changed on disk`)
837
837
  .action(async (root, options) => {
838
838
  filterDuplicateOptions(options);
839
- const { build } = await import('./chunks/dep-BKbDVx1T.js').then(function (n) { return n.F; });
839
+ const { build } = await import('./chunks/dep-BBErwUJM.js').then(function (n) { return n.F; });
840
840
  const buildOptions = cleanOptions(options);
841
841
  try {
842
842
  await build({
@@ -863,7 +863,7 @@ cli
863
863
  .option('--force', `[boolean] force the optimizer to ignore the cache and re-bundle`)
864
864
  .action(async (root, options) => {
865
865
  filterDuplicateOptions(options);
866
- const { optimizeDeps } = await import('./chunks/dep-BKbDVx1T.js').then(function (n) { return n.D; });
866
+ const { optimizeDeps } = await import('./chunks/dep-BBErwUJM.js').then(function (n) { return n.D; });
867
867
  try {
868
868
  const config = await resolveConfig({
869
869
  root,
@@ -889,7 +889,7 @@ cli
889
889
  .option('--outDir <dir>', `[string] output directory (default: dist)`)
890
890
  .action(async (root, options) => {
891
891
  filterDuplicateOptions(options);
892
- const { preview } = await import('./chunks/dep-BKbDVx1T.js').then(function (n) { return n.G; });
892
+ const { preview } = await import('./chunks/dep-BBErwUJM.js').then(function (n) { return n.G; });
893
893
  try {
894
894
  const server = await preview({
895
895
  root,
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { PluginHooks, RollupError, SourceMap, ModuleInfo, PartialResolvedId, InputOptions, CustomPluginOptions, SourceDescription, LoadResult, RollupOptions, WatcherOptions, InputOption, ModuleFormat, RollupOutput, RollupWatcher, SourceMapInput, ExistingRawSourceMap, OutputBundle, OutputChunk, ObjectHook, PluginContext, ResolveIdResult, TransformPluginContext, GetManualChunk } from 'rollup';
2
+ import { PluginHooks, RollupError, SourceMap, ModuleInfo, PartialResolvedId, MinimalPluginContext, InputOptions, CustomPluginOptions, LoadResult, SourceDescription, RollupOptions, WatcherOptions, InputOption, ModuleFormat, RollupOutput, RollupWatcher, SourceMapInput, ExistingRawSourceMap, OutputBundle, OutputChunk, ObjectHook, PluginContext, ResolveIdResult, TransformPluginContext, GetManualChunk } from 'rollup';
3
3
  import * as rollup from 'rollup';
4
4
  export { rollup as Rollup };
5
5
  export { parseAst, parseAstAsync } from 'rollup/parseAst';
@@ -873,29 +873,50 @@ declare class ModuleGraph {
873
873
  * https://github.com/preactjs/wmr/blob/main/packages/wmr/src/lib/rollup-plugin-container.js
874
874
  */
875
875
 
876
- interface PluginContainer {
877
- options: InputOptions;
876
+ declare class PluginContainer {
877
+ config: ResolvedConfig;
878
+ moduleGraph?: ModuleGraph | undefined;
879
+ watcher?: FSWatcher | undefined;
880
+ plugins: readonly Plugin<any>[];
881
+ private _pluginContextMap;
882
+ private _pluginContextMapSsr;
883
+ private _resolvedRollupOptions?;
884
+ private _processesing;
885
+ private _seenResolves;
886
+ private _closed;
887
+ private _moduleNodeToLoadAddedImports;
888
+ getSortedPluginHooks: PluginHookUtils['getSortedPluginHooks'];
889
+ getSortedPlugins: PluginHookUtils['getSortedPlugins'];
890
+ watchFiles: Set<string>;
891
+ minimalContext: MinimalPluginContext;
892
+ private _updateModuleLoadAddedImports;
893
+ private _getAddedImports;
878
894
  getModuleInfo(id: string): ModuleInfo | null;
879
- buildStart(options: InputOptions): Promise<void>;
880
- resolveId(id: string, importer?: string, options?: {
895
+ private handleHookPromise;
896
+ get options(): InputOptions;
897
+ resolveRollupOptions(): Promise<InputOptions>;
898
+ private _getPluginContext;
899
+ private hookParallel;
900
+ buildStart(_options?: InputOptions): Promise<void>;
901
+ resolveId(rawId: string, importer?: string | undefined, options?: {
881
902
  attributes?: Record<string, string>;
882
903
  custom?: CustomPluginOptions;
883
904
  skip?: Set<Plugin>;
884
905
  ssr?: boolean;
885
906
  isEntry?: boolean;
886
907
  }): Promise<PartialResolvedId | null>;
908
+ load(id: string, options?: {
909
+ ssr?: boolean;
910
+ }): Promise<LoadResult | null>;
887
911
  transform(code: string, id: string, options?: {
888
- inMap?: SourceDescription['map'];
889
912
  ssr?: boolean;
913
+ inMap?: SourceDescription['map'];
890
914
  }): Promise<{
891
915
  code: string;
892
916
  map: SourceMap | {
893
917
  mappings: '';
894
918
  } | null;
895
919
  }>;
896
- load(id: string, options?: {
897
- ssr?: boolean;
898
- }): Promise<LoadResult | null>;
899
920
  watchChange(id: string, change: {
900
921
  event: 'create' | 'update' | 'delete';
901
922
  }): Promise<void>;
@@ -1560,6 +1581,11 @@ interface ServerOptions extends CommonServerOptions {
1560
1581
  * Configure HMR-specific options (port, host, path & protocol)
1561
1582
  */
1562
1583
  hmr?: HmrOptions | boolean;
1584
+ /**
1585
+ * Do not start the websocket connection.
1586
+ * @experimental
1587
+ */
1588
+ ws?: false;
1563
1589
  /**
1564
1590
  * Warm-up files to transform and cache the results in advance. This improves the
1565
1591
  * initial page load during server starts and prevents transform waterfalls.
@@ -2493,7 +2519,7 @@ interface LibraryOptions {
2493
2519
  */
2494
2520
  fileName?: string | ((format: ModuleFormat, entryName: string) => string);
2495
2521
  }
2496
- type LibraryFormats = 'es' | 'cjs' | 'umd' | 'iife';
2522
+ type LibraryFormats = 'es' | 'cjs' | 'umd' | 'iife' | 'system';
2497
2523
  interface ModulePreloadOptions {
2498
2524
  /**
2499
2525
  * Whether to inject a module preload polyfill.
@@ -3535,4 +3561,4 @@ declare class ServerHMRConnector implements HMRRuntimeConnection {
3535
3561
  onUpdate(handler: (payload: HMRPayload) => void): void;
3536
3562
  }
3537
3563
 
3538
- export { type Alias, type AliasOptions, type AnymatchFn, type AnymatchPattern, type AppType, type AwaitWriteFinishOptions, type BindCLIShortcutsOptions, type BuildOptions, type CLIShortcut, type CSSModulesOptions, type CSSOptions, type CommonServerOptions, type ConfigEnv, Connect, type CorsOptions, type CorsOrigin, type DepOptimizationConfig, type DepOptimizationMetadata, type DepOptimizationOptions, type ESBuildOptions, type ESBuildTransformResult, type ExperimentalOptions, type ExportsData, FSWatcher, type FetchModuleOptions, type FileSystemServeOptions, type FilterPattern, type HMRBroadcaster, type HMRBroadcasterClient, type HMRChannel, type HTMLOptions, type HmrContext, type HmrOptions, type HookHandler, type HtmlTagDescriptor, HttpProxy, type IndexHtmlTransform, type IndexHtmlTransformContext, type IndexHtmlTransformHook, type IndexHtmlTransformResult, type InlineConfig, type InternalResolveOptions, type JsonOptions, type LegacyOptions, type LibraryFormats, type LibraryOptions, type LightningCSSOptions, type LogErrorOptions, type LogLevel, type LogOptions, type LogType, type Logger, type LoggerOptions, type MainThreadRuntimeOptions, type Manifest, type ManifestChunk, type MapToFunction, type AnymatchMatcher as Matcher, ModuleGraph, ModuleNode, type ModulePreloadOptions, type OptimizedDepInfo, type Plugin, type PluginContainer, type PluginHookUtils, type PluginOption, type PreprocessCSSResult, type PreviewOptions, type PreviewServer, type PreviewServerHook, type ProxyOptions, type RenderBuiltAssetUrl, type ResolveFn, type ResolveModulePreloadDependenciesFn, type ResolveOptions, type ResolvedBuildOptions, type ResolvedCSSOptions, type ResolvedConfig, type ResolvedModulePreloadOptions, type ResolvedPreviewOptions, type ResolvedSSROptions, type ResolvedServerOptions, type ResolvedServerUrls, type ResolvedUrl, type ResolvedWorkerOptions, type ResolverFunction, type ResolverObject, type RollupCommonJSOptions, type RollupDynamicImportVarsOptions, type SSROptions, type SSRTarget, type SendOptions, type ServerHMRChannel, ServerHMRConnector, type ServerHook, type ServerOptions, SplitVendorChunkCache, type SsrDepOptimizationOptions, Terser, type TerserOptions, type TransformOptions, type TransformResult, type UserConfig, type UserConfigExport, type UserConfigFn, type UserConfigFnObject, type UserConfigFnPromise, type ViteDevServer, type WatchOptions, WebSocket, WebSocketAlias, type WebSocketClient, type WebSocketCustomListener, WebSocketServer, build, buildErrorMessage, createFilter, createLogger, createServer, createViteRuntime, defineConfig, fetchModule, formatPostcssSourceMap, isCSSRequest, isFileServingAllowed, loadConfigFromFile, loadEnv, mergeAlias, mergeConfig, normalizePath, optimizeDeps, preprocessCSS, preview, resolveConfig, resolveEnvPrefix, rollupVersion, searchForWorkspaceRoot, send, sortUserPlugins, splitVendorChunk, splitVendorChunkPlugin, transformWithEsbuild, VERSION as version };
3564
+ export { type Alias, type AliasOptions, type AnymatchFn, type AnymatchPattern, type AppType, type AwaitWriteFinishOptions, type BindCLIShortcutsOptions, type BuildOptions, type CLIShortcut, type CSSModulesOptions, type CSSOptions, type CommonServerOptions, type ConfigEnv, Connect, type CorsOptions, type CorsOrigin, type DepOptimizationConfig, type DepOptimizationMetadata, type DepOptimizationOptions, type ESBuildOptions, type ESBuildTransformResult, type ExperimentalOptions, type ExportsData, FSWatcher, type FetchModuleOptions, type FileSystemServeOptions, type FilterPattern, type HMRBroadcaster, type HMRBroadcasterClient, type HMRChannel, type HTMLOptions, type HmrContext, type HmrOptions, type HookHandler, type HtmlTagDescriptor, HttpProxy, type IndexHtmlTransform, type IndexHtmlTransformContext, type IndexHtmlTransformHook, type IndexHtmlTransformResult, type InlineConfig, type InternalResolveOptions, type JsonOptions, type LegacyOptions, type LibraryFormats, type LibraryOptions, type LightningCSSOptions, type LogErrorOptions, type LogLevel, type LogOptions, type LogType, type Logger, type LoggerOptions, type MainThreadRuntimeOptions, type Manifest, type ManifestChunk, type MapToFunction, type AnymatchMatcher as Matcher, ModuleGraph, ModuleNode, type ModulePreloadOptions, type OptimizedDepInfo, type Plugin, PluginContainer, type PluginHookUtils, type PluginOption, type PreprocessCSSResult, type PreviewOptions, type PreviewServer, type PreviewServerHook, type ProxyOptions, type RenderBuiltAssetUrl, type ResolveFn, type ResolveModulePreloadDependenciesFn, type ResolveOptions, type ResolvedBuildOptions, type ResolvedCSSOptions, type ResolvedConfig, type ResolvedModulePreloadOptions, type ResolvedPreviewOptions, type ResolvedSSROptions, type ResolvedServerOptions, type ResolvedServerUrls, type ResolvedUrl, type ResolvedWorkerOptions, type ResolverFunction, type ResolverObject, type RollupCommonJSOptions, type RollupDynamicImportVarsOptions, type SSROptions, type SSRTarget, type SendOptions, type ServerHMRChannel, ServerHMRConnector, type ServerHook, type ServerOptions, SplitVendorChunkCache, type SsrDepOptimizationOptions, Terser, type TerserOptions, type TransformOptions, type TransformResult, type UserConfig, type UserConfigExport, type UserConfigFn, type UserConfigFnObject, type UserConfigFnPromise, type ViteDevServer, type WatchOptions, WebSocket, WebSocketAlias, type WebSocketClient, type WebSocketCustomListener, WebSocketServer, build, buildErrorMessage, createFilter, createLogger, createServer, createViteRuntime, defineConfig, fetchModule, formatPostcssSourceMap, isCSSRequest, isFileServingAllowed, loadConfigFromFile, loadEnv, mergeAlias, mergeConfig, normalizePath, optimizeDeps, preprocessCSS, preview, resolveConfig, resolveEnvPrefix, rollupVersion, searchForWorkspaceRoot, send, sortUserPlugins, splitVendorChunk, splitVendorChunkPlugin, transformWithEsbuild, VERSION as version };
@@ -1,6 +1,6 @@
1
1
  export { parseAst, parseAstAsync } from 'rollup/parseAst';
2
- import { i as isInNodeModules, a as arraify } from './chunks/dep-BKbDVx1T.js';
3
- export { b as build, g as buildErrorMessage, k as createFilter, v as createLogger, c as createServer, d as defineConfig, h as fetchModule, f as formatPostcssSourceMap, x as isFileServingAllowed, l as loadConfigFromFile, y as loadEnv, j as mergeAlias, m as mergeConfig, n as normalizePath, o as optimizeDeps, e as preprocessCSS, p as preview, r as resolveConfig, z as resolveEnvPrefix, q as rollupVersion, w as searchForWorkspaceRoot, u as send, s as sortUserPlugins, t as transformWithEsbuild } from './chunks/dep-BKbDVx1T.js';
2
+ import { i as isInNodeModules, a as arraify } from './chunks/dep-BBErwUJM.js';
3
+ export { b as build, g as buildErrorMessage, k as createFilter, v as createLogger, c as createServer, d as defineConfig, h as fetchModule, f as formatPostcssSourceMap, x as isFileServingAllowed, l as loadConfigFromFile, y as loadEnv, j as mergeAlias, m as mergeConfig, n as normalizePath, o as optimizeDeps, e as preprocessCSS, p as preview, r as resolveConfig, z as resolveEnvPrefix, q as rollupVersion, w as searchForWorkspaceRoot, u as send, s as sortUserPlugins, t as transformWithEsbuild } from './chunks/dep-BBErwUJM.js';
4
4
  export { VERSION as version } from './constants.js';
5
5
  export { version as esbuildVersion } from 'esbuild';
6
6
  import { existsSync, readFileSync } from 'node:fs';
@@ -51,24 +51,22 @@ function normalizeString(path, allowAboveRoot) {
51
51
  char = "/";
52
52
  }
53
53
  if (char === "/") {
54
- if (!(lastSlash === index - 1 || dots === 1))
55
- if (dots === 2) {
56
- if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
57
- if (res.length > 2) {
58
- const lastSlashIndex = res.lastIndexOf("/");
59
- lastSlashIndex === -1 ? (res = "", lastSegmentLength = 0) : (res = res.slice(0, lastSlashIndex), lastSegmentLength = res.length - 1 - res.lastIndexOf("/")), lastSlash = index, dots = 0;
60
- continue;
61
- } else if (res.length > 0) {
62
- res = "", lastSegmentLength = 0, lastSlash = index, dots = 0;
63
- continue;
64
- }
54
+ if (!(lastSlash === index - 1 || dots === 1)) if (dots === 2) {
55
+ if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
56
+ if (res.length > 2) {
57
+ const lastSlashIndex = res.lastIndexOf("/");
58
+ lastSlashIndex === -1 ? (res = "", lastSegmentLength = 0) : (res = res.slice(0, lastSlashIndex), lastSegmentLength = res.length - 1 - res.lastIndexOf("/")), lastSlash = index, dots = 0;
59
+ continue;
60
+ } else if (res.length > 0) {
61
+ res = "", lastSegmentLength = 0, lastSlash = index, dots = 0;
62
+ continue;
65
63
  }
66
- allowAboveRoot && (res += res.length > 0 ? "/.." : "..", lastSegmentLength = 2);
67
- } else
68
- res.length > 0 ? res += `/${path.slice(lastSlash + 1, index)}` : res = path.slice(lastSlash + 1, index), lastSegmentLength = index - lastSlash - 1;
64
+ }
65
+ allowAboveRoot && (res += res.length > 0 ? "/.." : "..", lastSegmentLength = 2);
66
+ } else
67
+ res.length > 0 ? res += `/${path.slice(lastSlash + 1, index)}` : res = path.slice(lastSlash + 1, index), lastSegmentLength = index - lastSlash - 1;
69
68
  lastSlash = index, dots = 0;
70
- } else
71
- char === "." && dots !== -1 ? ++dots : dots = -1;
69
+ } else char === "." && dots !== -1 ? ++dots : dots = -1;
72
70
  }
73
71
  return res;
74
72
  }
@@ -507,11 +505,11 @@ class HMRClient {
507
505
  }
508
506
  }
509
507
  function analyzeImportedModDifference(mod, rawId, moduleType, metadata) {
510
- if (!metadata?.isDynamicImport && moduleType !== "module" && metadata?.importedNames?.length) {
508
+ if (!metadata?.isDynamicImport && metadata?.importedNames?.length) {
511
509
  const missingBindings = metadata.importedNames.filter((s) => !(s in mod));
512
510
  if (missingBindings.length) {
513
511
  const lastBinding = missingBindings[missingBindings.length - 1];
514
- throw new SyntaxError(`[vite] Named export '${lastBinding}' not found. The requested module '${rawId}' is a CommonJS module, which may not support all module.exports as named exports.
512
+ throw moduleType === "module" ? new SyntaxError(`[vite] The requested module '${rawId}' does not provide an export named '${lastBinding}'`) : new SyntaxError(`[vite] Named export '${lastBinding}' not found. The requested module '${rawId}' is a CommonJS module, which may not support all module.exports as named exports.
515
513
  CommonJS modules can always be imported via the default export, for example using:
516
514
 
517
515
  import pkg from '${rawId}';
@@ -520,15 +518,6 @@ const {${missingBindings.join(", ")}} = pkg;
520
518
  }
521
519
  }
522
520
  }
523
- function proxyGuardOnlyEsm(mod, rawId, metadata) {
524
- return metadata?.importedNames?.length ? new Proxy(mod, {
525
- get(mod2, prop) {
526
- if (prop !== "then" && !(prop in mod2))
527
- throw new SyntaxError(`[vite] The requested module '${rawId}' does not provide an export named '${prop.toString()}'`);
528
- return mod2[prop];
529
- }
530
- }) : mod;
531
- }
532
521
  const ssrModuleExportsKey = "__vite_ssr_exports__", ssrImportKey = "__vite_ssr_import__", ssrDynamicImportKey = "__vite_ssr_dynamic_import__", ssrExportAllKey = "__vite_ssr_exportAll__", ssrImportMetaKey = "__vite_ssr_import_meta__", noop = () => {
533
522
  }, silentConsole = {
534
523
  debug: noop,
@@ -743,8 +732,7 @@ function CallSiteToString() {
743
732
  typeName === "[object Object]" && (typeName = "null");
744
733
  const methodName = this.getMethodName();
745
734
  functionName ? (typeName && functionName.indexOf(typeName) !== 0 && (line += `${typeName}.`), line += functionName, methodName && functionName.indexOf(`.${methodName}`) !== functionName.length - methodName.length - 1 && (line += ` [as ${methodName}]`)) : line += `${typeName}.${methodName || "<anonymous>"}`;
746
- } else
747
- isConstructor ? line += `new ${functionName || "<anonymous>"}` : functionName ? line += functionName : (line += fileLocation, addSuffix = !1);
735
+ } else isConstructor ? line += `new ${functionName || "<anonymous>"}` : functionName ? line += functionName : (line += fileLocation, addSuffix = !1);
748
736
  return addSuffix && (line += ` (${fileLocation})`), line;
749
737
  }
750
738
  function cloneCallSite(frame) {
@@ -891,7 +879,7 @@ class ViteRuntime {
891
879
  if (!("externalize" in fetchResult))
892
880
  return exports;
893
881
  const { id, type } = fetchResult;
894
- return type !== "module" && type !== "commonjs" ? exports : (analyzeImportedModDifference(exports, id, type, metadata), proxyGuardOnlyEsm(exports, id, metadata));
882
+ return type !== "module" && type !== "commonjs" || analyzeImportedModDifference(exports, id, type, metadata), exports;
895
883
  }
896
884
  async cachedRequest(id, fetchedModule, callstack = [], metadata) {
897
885
  const moduleId = fetchedModule.id;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite",
3
- "version": "5.2.12",
3
+ "version": "5.3.0-beta.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "author": "Evan You",
@@ -72,7 +72,7 @@
72
72
  "funding": "https://github.com/vitejs/vite?sponsor=1",
73
73
  "//": "READ CONTRIBUTING.md to understand what to put under deps vs. devDeps!",
74
74
  "dependencies": {
75
- "esbuild": "^0.20.1",
75
+ "esbuild": "^0.21.3",
76
76
  "postcss": "^8.4.38",
77
77
  "rollup": "^4.13.0"
78
78
  },
@@ -93,8 +93,6 @@
93
93
  "@rollup/pluginutils": "^5.1.0",
94
94
  "@types/escape-html": "^1.0.4",
95
95
  "@types/pnpapi": "^0.0.5",
96
- "acorn": "^8.11.3",
97
- "acorn-walk": "^8.3.2",
98
96
  "artichokie": "^0.2.1",
99
97
  "cac": "^6.7.14",
100
98
  "chokidar": "^3.6.0",