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

Function isExternalizable

packages/vite/src/node/external.ts:56–90  ·  view source on GitHub ↗
(
    id: string,
    importer: string | undefined,
    configuredAsExternal: boolean,
  )

Source from the content-addressed store, hash-verified

54 }
55
56 const isExternalizable = (
57 id: string,
58 importer: string | undefined,
59 configuredAsExternal: boolean,
60 ): boolean => {
61 if (!bareImportRE.test(id) || id.includes('\0')) {
62 return false
63 }
64 try {
65 const resolved = tryNodeResolve(
66 id,
67 // Skip passing importer in build to avoid externalizing non-hoisted dependencies
68 // unresolvable from root (which would be unresolvable from output bundles also)
69 config.command === 'build' ? undefined : importer,
70 resolveOptions,
71 undefined,
72 false,
73 )
74 if (!resolved) {
75 return false
76 }
77 // Only allow linked packages to be externalized
78 // if they are explicitly configured as external
79 if (!configuredAsExternal && !isInNodeModules(resolved.id)) {
80 return false
81 }
82 return canExternalizeFile(resolved.id)
83 } catch {
84 debug?.(
85 `Failed to node resolve "${id}". Skipping externalizing it by default.`,
86 )
87 // may be an invalid import that's resolved by a plugin
88 return false
89 }
90 }
91
92 // Returns true if it is configured as external, false if it is filtered
93 // by noExternal and undefined if it isn't affected by the explicit config

Callers 1

Calls 3

tryNodeResolveFunction · 0.90
isInNodeModulesFunction · 0.90
canExternalizeFileFunction · 0.85

Tested by

no test coverage detected