Home / Function/ createIsConfiguredAsExternal() — vite Function Reference

createIsConfiguredAsExternal() — vite Function Reference

Architecture documentation for the createIsConfiguredAsExternal() function in external.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b["createIsConfiguredAsExternal()"]
  b64390ad_e6bf_4b1e_f7f0_39d49791e7e0["external.ts"]
  b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b -->|defined in| b64390ad_e6bf_4b1e_f7f0_39d49791e7e0
  edf612e5_7fcd_cfe5_cc15_2e8f0b2387e1["createIsExternal()"]
  edf612e5_7fcd_cfe5_cc15_2e8f0b2387e1 -->|calls| b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b
  f46818a5_7e0a_9422_e33c_6ec2d095ddda["createIsExternal()"]
  f46818a5_7e0a_9422_e33c_6ec2d095ddda -->|calls| b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b
  310b19b4_2716_b45b_716d_edfca3064152["tryNodeResolve()"]
  b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b -->|calls| 310b19b4_2716_b45b_716d_edfca3064152
  50ac7e51_9f94_e985_bfec_ae95273b23b0["isInNodeModules()"]
  b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b -->|calls| 50ac7e51_9f94_e985_bfec_ae95273b23b0
  d85d2c88_bba8_7bb8_8124_cb7eb5324a02["canExternalizeFile()"]
  b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b -->|calls| d85d2c88_bba8_7bb8_8124_cb7eb5324a02
  cb293321_1174_554d_b5ce_f153b06a2fb4["getNpmPackageName()"]
  b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b -->|calls| cb293321_1174_554d_b5ce_f153b06a2fb4
  style b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/external.ts lines 35–125

export function createIsConfiguredAsExternal(
  environment: PartialEnvironment,
): (id: string, importer?: string) => boolean {
  const { config } = environment
  const { root, resolve } = config
  const { external, noExternal } = resolve
  const noExternalFilter =
    typeof noExternal !== 'boolean' &&
    !(Array.isArray(noExternal) && noExternal.length === 0) &&
    createFilter(undefined, noExternal, { resolve: false })

  const targetConditions = resolve.externalConditions

  const resolveOptions: InternalResolveOptions = {
    ...resolve,
    root,
    isProduction: false,
    isBuild: true,
    conditions: targetConditions,
  }

  const isExternalizable = (
    id: string,
    importer: string | undefined,
    configuredAsExternal: boolean,
  ): boolean => {
    if (!bareImportRE.test(id) || id.includes('\0')) {
      return false
    }
    try {
      const resolved = tryNodeResolve(
        id,
        // Skip passing importer in build to avoid externalizing non-hoisted dependencies
        // unresolvable from root (which would be unresolvable from output bundles also)
        config.command === 'build' ? undefined : importer,
        resolveOptions,
        undefined,
        false,
      )
      if (!resolved) {
        return false
      }
      // Only allow linked packages to be externalized
      // if they are explicitly configured as external
      if (!configuredAsExternal && !isInNodeModules(resolved.id)) {
        return false
      }
      return canExternalizeFile(resolved.id)
    } catch {
      debug?.(
        `Failed to node resolve "${id}". Skipping externalizing it by default.`,
      )
      // may be an invalid import that's resolved by a plugin
      return false
    }
  }

  // Returns true if it is configured as external, false if it is filtered
  // by noExternal and undefined if it isn't affected by the explicit config
  return (id: string, importer?: string) => {
    if (
      // If this id is defined as external, force it as external
      // Note that individual package entries are allowed in `external`
      external !== true &&
      external.includes(id)
    ) {
      return true
    }
    const pkgName = getNpmPackageName(id)
    if (!pkgName) {
      return isExternalizable(id, importer, false)
    }
    if (
      // A package name in ssr.external externalizes every
      // externalizable package entry
      external !== true &&
      external.includes(pkgName)
    ) {
      return isExternalizable(id, importer, true)
    }
    if (typeof noExternal === 'boolean') {

Domain

Subdomains

Frequently Asked Questions

What does createIsConfiguredAsExternal() do?
createIsConfiguredAsExternal() is a function in the vite codebase, defined in packages/vite/src/node/external.ts.
Where is createIsConfiguredAsExternal() defined?
createIsConfiguredAsExternal() is defined in packages/vite/src/node/external.ts at line 35.
What does createIsConfiguredAsExternal() call?
createIsConfiguredAsExternal() calls 4 function(s): canExternalizeFile, getNpmPackageName, isInNodeModules, tryNodeResolve.
What calls createIsConfiguredAsExternal()?
createIsConfiguredAsExternal() is called by 2 function(s): createIsExternal, createIsExternal.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free