MCPcopy
hub / github.com/vitejs/vite / rolldownDepPlugin

Function rolldownDepPlugin

packages/vite/src/node/optimizer/rolldownDepPlugin.ts:62–370  ·  view source on GitHub ↗
(
  environment: Environment,
  qualified: Record<string, string>,
  external: string[],
)

Source from the content-addressed store, hash-verified

60const browserExternalNamespace = 'browser-external:'
61
62export function rolldownDepPlugin(
63 environment: Environment,
64 qualified: Record<string, string>,
65 external: string[],
66): RolldownPlugin[] {
67 const { isProduction } = environment.config
68 const { extensions } = environment.config.optimizeDeps
69
70 // remove optimizable extensions from `externalTypes` list
71 const allExternalTypes = extensions
72 ? externalTypes.filter((type) => !extensions.includes('.' + type))
73 : externalTypes
74
75 // use separate package cache for optimizer as it caches paths around node_modules
76 // and it's unlikely for the core Vite process to traverse into node_modules again
77 const esmPackageCache: PackageCache = new Map()
78 const cjsPackageCache: PackageCache = new Map()
79
80 const resolveAssets = (resolved: string, kind: ImportKind) => {
81 if (kind === 'require-call') {
82 // here it is not set to `external: true` to convert `require` to `import`
83 return {
84 id: externalWithConversionNamespace + resolved,
85 }
86 }
87 return {
88 id: resolved,
89 external: 'absolute' as const,
90 }
91 }
92
93 // default resolver which prefers ESM
94 const _resolve = createBackCompatIdResolver(environment.getTopLevelConfig(), {
95 asSrc: false,
96 scan: true,
97 packageCache: esmPackageCache,
98 })
99
100 // cjs resolver that prefers Node
101 const _resolveRequire = createBackCompatIdResolver(
102 environment.getTopLevelConfig(),
103 {
104 asSrc: false,
105 isRequire: true,
106 scan: true,
107 packageCache: cjsPackageCache,
108 },
109 )
110
111 const resolve = (
112 id: string,
113 importer: string | undefined,
114 kind: ImportKind,
115 ): Promise<string | undefined> => {
116 // map importer ids to file paths for correct resolution
117 const _importer =
118 importer && importer in qualified ? qualified[importer] : importer
119 const resolver = kind.startsWith('require') ? _resolveRequire : _resolve

Callers 2

Calls 2

getTopLevelConfigMethod · 0.80

Tested by 1