Home / Function/ manifestPlugin() — vite Function Reference

manifestPlugin() — vite Function Reference

Architecture documentation for the manifestPlugin() function in manifest.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  b888666d_ce54_f0bf_184f_48d09f6a9ee8["manifestPlugin()"]
  7dd0ce14_b7e1_7049_f318_2603b5403c04["manifest.ts"]
  b888666d_ce54_f0bf_184f_48d09f6a9ee8 -->|defined in| 7dd0ce14_b7e1_7049_f318_2603b5403c04
  8c4db194_5dfd_4391_cc9a_833655009196["resolveBuildPlugins()"]
  8c4db194_5dfd_4391_cc9a_833655009196 -->|calls| b888666d_ce54_f0bf_184f_48d09f6a9ee8
  16a00926_f0e9_60f1_3006_9132a6d78745["perEnvironmentState()"]
  b888666d_ce54_f0bf_184f_48d09f6a9ee8 -->|calls| 16a00926_f0e9_60f1_3006_9132a6d78745
  dfa3f5a8_b519_cb65_4b7e_9d4824406fd4["perEnvironmentPlugin()"]
  b888666d_ce54_f0bf_184f_48d09f6a9ee8 -->|calls| dfa3f5a8_b519_cb65_4b7e_9d4824406fd4
  22dced1f_3d60_0600_3ed0_f47f540d1305["getChunkOriginalFileName()"]
  b888666d_ce54_f0bf_184f_48d09f6a9ee8 -->|calls| 22dced1f_3d60_0600_3ed0_f47f540d1305
  b8325ee3_313b_4bc2_ecfd_3e3b5441a5f3["sortObjectKeys()"]
  b888666d_ce54_f0bf_184f_48d09f6a9ee8 -->|calls| b8325ee3_313b_4bc2_ecfd_3e3b5441a5f3
  style b888666d_ce54_f0bf_184f_48d09f6a9ee8 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/plugins/manifest.ts lines 60–334

export function manifestPlugin(config: ResolvedConfig): Plugin {
  const getState = perEnvironmentState(() => {
    return {
      manifest: {} as Manifest,
      outputCount: 0,
      reset() {
        this.manifest = {}
        this.outputCount = 0
      },
    }
  })
  if (config.build.manifest && config.nativePluginEnabledLevel >= 1) {
    return perEnvironmentPlugin('native:manifest', (environment) => {
      if (!environment.config.build.manifest) return false

      const root = environment.config.root
      const outPath =
        environment.config.build.manifest === true
          ? '.vite/manifest.json'
          : environment.config.build.manifest

      const envs: Record<string, Environment> = {}
      function getChunkName(chunk: OutputChunk) {
        return (
          getChunkOriginalFileName(chunk, root, false) ??
          `_${path.basename(chunk.fileName)}`
        )
      }

      return [
        {
          name: 'native:manifest-envs',
          buildStart() {
            envs[environment.name] = this.environment
          },
        },
        nativeManifestPlugin({
          root,
          outPath,
          isOutputOptionsForLegacyChunks:
            environment.config.isOutputOptionsForLegacyChunks,
          cssEntries() {
            return Object.fromEntries(
              cssEntriesMap.get(envs[environment.name])!.entries(),
            )
          },
        }),
        {
          name: 'native:manifest-compatible',
          generateBundle(_, bundle) {
            const asset = bundle[outPath]
            if (asset.type === 'asset') {
              let manifest: Manifest | undefined
              for (const output of Object.values(bundle)) {
                const importedCss = output.viteMetadata?.importedCss
                const importedAssets = output.viteMetadata?.importedAssets
                if (!importedCss?.size && !importedAssets?.size) continue
                manifest ??= JSON.parse(asset.source.toString()) as Manifest
                if (output.type === 'chunk') {
                  const item = manifest[getChunkName(output)]
                  if (!item) continue
                  if (importedCss?.size) {
                    item.css = [...importedCss]
                  }
                  if (importedAssets?.size) {
                    item.assets = [...importedAssets]
                  }
                } else if (output.type === 'asset' && output.names.length > 0) {
                  // Add every unique asset to the manifest, keyed by its original name
                  const keys =
                    output.originalFileNames.length > 0
                      ? output.originalFileNames
                      : [`_${path.basename(output.fileName)}`]

                  for (const key of keys) {
                    const item = manifest[key]
                    if (!item) continue
                    if (!(item.file && endsWithJSRE.test(item.file))) {
                      if (importedCss?.size) {
                        item.css = [...importedCss]
                      }

Domain

Subdomains

Frequently Asked Questions

What does manifestPlugin() do?
manifestPlugin() is a function in the vite codebase, defined in packages/vite/src/node/plugins/manifest.ts.
Where is manifestPlugin() defined?
manifestPlugin() is defined in packages/vite/src/node/plugins/manifest.ts at line 60.
What does manifestPlugin() call?
manifestPlugin() calls 4 function(s): getChunkOriginalFileName, perEnvironmentPlugin, perEnvironmentState, sortObjectKeys.
What calls manifestPlugin()?
manifestPlugin() is called by 1 function(s): resolveBuildPlugins.

Analyze Your Own Codebase

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

Try Supermodel Free