Home / Function/ apply() — vue Function Reference

apply() — vue Function Reference

Architecture documentation for the apply() function in client.ts from the vue codebase.

Entity Profile

Dependency Diagram

graph TD
  cfb31c39_d51c_a2b5_4da2_0c5d7c929287["apply()"]
  e71dc5e5_977d_fb3b_28ae_18c134c7b1ad["onEmit()"]
  cfb31c39_d51c_a2b5_4da2_0c5d7c929287 -->|calls| e71dc5e5_977d_fb3b_28ae_18c134c7b1ad
  1fb82a54_5351_35cf_787c_10e6691c2de1["getAssetName()"]
  cfb31c39_d51c_a2b5_4da2_0c5d7c929287 -->|calls| 1fb82a54_5351_35cf_787c_10e6691c2de1
  e2bc20cb_f578_928b_9bc7_e455a4609eed["stripModuleIdHash()"]
  cfb31c39_d51c_a2b5_4da2_0c5d7c929287 -->|calls| e2bc20cb_f578_928b_9bc7_e455a4609eed
  style cfb31c39_d51c_a2b5_4da2_0c5d7c929287 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/server-renderer/src/webpack-plugin/client.ts lines 16–75

  apply(compiler) {
    const stage = 'PROCESS_ASSETS_STAGE_ADDITIONAL'
    onEmit(compiler, 'vue-client-plugin', stage, (compilation, cb) => {
      const stats = compilation.getStats().toJson()

      const allFiles = uniq(stats.assets.map(a => a.name))

      const initialFiles = uniq(
        Object.keys(stats.entrypoints)
          .map(name => stats.entrypoints[name].assets)
          .reduce((assets, all) => all.concat(assets), [])
          .map(getAssetName)
          .filter(file => isJS(file) || isCSS(file))
      )

      const asyncFiles = allFiles
        .filter(file => isJS(file) || isCSS(file))
        .filter(file => initialFiles.indexOf(file) < 0)

      const manifest = {
        publicPath: stats.publicPath,
        all: allFiles,
        initial: initialFiles,
        async: asyncFiles,
        modules: {
          /* [identifier: string]: Array<index: number> */
        }
      }

      const assetModules = stats.modules.filter(m => m.assets.length)
      const fileToIndex = asset => manifest.all.indexOf(getAssetName(asset))
      stats.modules.forEach(m => {
        // ignore modules duplicated in multiple chunks
        if (m.chunks.length === 1) {
          const cid = m.chunks[0]
          const chunk = stats.chunks.find(c => c.id === cid)
          if (!chunk || !chunk.files) {
            return
          }
          const id = stripModuleIdHash(m.identifier)
          const files = (manifest.modules[hash(id)] =
            chunk.files.map(fileToIndex))
          // find all asset modules associated with the same chunk
          assetModules.forEach(m => {
            if (m.chunks.some(id => id === cid)) {
              files.push.apply(files, m.assets.map(fileToIndex))
            }
          })
        }
      })

      const json = JSON.stringify(manifest, null, 2)
      //@ts-expect-error no type on options
      compilation.assets[this.options.filename] = {
        source: () => json,
        size: () => json.length
      }
      cb()
    })
  }

Subdomains

Frequently Asked Questions

What does apply() do?
apply() is a function in the vue codebase.
What does apply() call?
apply() calls 3 function(s): getAssetName, onEmit, stripModuleIdHash.

Analyze Your Own Codebase

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

Try Supermodel Free