Home / Function/ cssPlugin() — vite Function Reference

cssPlugin() — vite Function Reference

Architecture documentation for the cssPlugin() function in css.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  157cb972_609e_022e_1ec5_3ed6f7e4f45c["cssPlugin()"]
  c3eb47df_971b_0616_6c9f_29b3ded72224["css.ts"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|defined in| c3eb47df_971b_0616_6c9f_29b3ded72224
  5264d5e7_3105_8e4d_45a1_d7d3af9915a8["createCssPluginTransform()"]
  5264d5e7_3105_8e4d_45a1_d7d3af9915a8 -->|calls| 157cb972_609e_022e_1ec5_3ed6f7e4f45c
  b1b40b5b_3e43_2197_dea0_d36389d312a1["resolvePlugins()"]
  b1b40b5b_3e43_2197_dea0_d36389d312a1 -->|calls| 157cb972_609e_022e_1ec5_3ed6f7e4f45c
  7ee86c21_2650_c869_2f5d_720909757e00["createBackCompatIdResolver()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| 7ee86c21_2650_c869_2f5d_720909757e00
  cef0333b_923a_6cea_cbaf_2d72f8dd2e53["resolvePostcssConfig()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| cef0333b_923a_6cea_cbaf_2d72f8dd2e53
  bbded320_f805_2b6e_3109_088d194024a2["build()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| bbded320_f805_2b6e_3109_088d194024a2
  1da538be_8fb3_3d85_2856_d9bfecfb04f5["createPreprocessorWorkerController()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| 1da538be_8fb3_3d85_2856_d9bfecfb04f5
  1422383b_13a1_fdfb_4f71_7158fc0fe60c["normalizeMaxWorkers()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| 1422383b_13a1_fdfb_4f71_7158fc0fe60c
  10e7daed_8b83_8119_ca52_eddfd906f7d4["isModuleCSSRequest()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| 10e7daed_8b83_8119_ca52_eddfd906f7d4
  1948f092_e5a5_076b_2f59_79ef22dec191["injectQuery()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| 1948f092_e5a5_076b_2f59_79ef22dec191
  3e98c2d6_886c_9673_6385_bb73ddab86cc["removeUrlQuery()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| 3e98c2d6_886c_9673_6385_bb73ddab86cc
  be351481_35b7_f392_a229_ac14e1fa7efb["checkPublicFile()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| be351481_35b7_f392_a229_ac14e1fa7efb
  7d773362_124a_60f9_277f_068d885568d3["encodePublicUrlsInCSS()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| 7d773362_124a_60f9_277f_068d885568d3
  0d5e9fd7_88bb_e8eb_37e0_dee52752ef34["publicFileToBuiltUrl()"]
  157cb972_609e_022e_1ec5_3ed6f7e4f45c -->|calls| 0d5e9fd7_88bb_e8eb_37e0_dee52752ef34
  style 157cb972_609e_022e_1ec5_3ed6f7e4f45c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/plugins/css.ts lines 296–453

export function cssPlugin(config: ResolvedConfig): Plugin {
  const isBuild = config.command === 'build'
  let moduleCache: Map<string, Record<string, string>>

  const idResolver = createBackCompatIdResolver(config, {
    preferRelative: true,
    tryIndex: false,
    extensions: [],
  })

  let preprocessorWorkerController: PreprocessorWorkerController | undefined

  // warm up cache for resolved postcss config
  if (config.css.transformer !== 'lightningcss') {
    resolvePostcssConfig(config).catch(() => {
      /* will be handled later */
    })
  }

  return {
    name: 'vite:css',

    buildStart() {
      // Ensure a new cache for every build (i.e. rebuilding in watch mode)
      moduleCache = new Map<string, Record<string, string>>()
      cssModulesCache.set(config, moduleCache)

      removedPureCssFilesCache.set(config, new Map<string, RenderedChunk>())

      preprocessorWorkerController = createPreprocessorWorkerController(
        normalizeMaxWorkers(config.css.preprocessorMaxWorkers),
      )
      preprocessorWorkerControllerCache.set(
        config,
        preprocessorWorkerController,
      )
    },

    buildEnd() {
      preprocessorWorkerController?.close()
    },

    load: {
      filter: {
        id: CSS_LANGS_RE,
      },
      async handler(id) {
        if (urlRE.test(id)) {
          if (isModuleCSSRequest(id)) {
            throw new Error(
              `?url is not supported with CSS modules. (tried to import ${JSON.stringify(
                id,
              )})`,
            )
          }

          // *.css?url
          // in dev, it's handled by assets plugin.
          if (isBuild) {
            id = injectQuery(removeUrlQuery(id), 'transform-only')
            return (
              `import ${JSON.stringify(id)};` +
              `export default "__VITE_CSS_URL__${Buffer.from(id).toString(
                'hex',
              )}__"`
            )
          }
        }
      },
    },
    transform: {
      filter: {
        id: {
          include: CSS_LANGS_RE,
          exclude: [commonjsProxyRE, SPECIAL_QUERY_RE],
        },
      },
      async handler(raw, id) {
        const { environment } = this
        const resolveUrl = (url: string, importer?: string) =>
          idResolver(environment, url, importer)

Domain

Subdomains

Frequently Asked Questions

What does cssPlugin() do?
cssPlugin() is a function in the vite codebase, defined in packages/vite/src/node/plugins/css.ts.
Where is cssPlugin() defined?
cssPlugin() is defined in packages/vite/src/node/plugins/css.ts at line 296.
What does cssPlugin() call?
cssPlugin() calls 22 function(s): addWatchFile, addWatchFile, build, buildStart, checkPublicFile, cleanUrl, close, compileCSS, and 14 more.
What calls cssPlugin()?
cssPlugin() is called by 2 function(s): createCssPluginTransform, resolvePlugins.

Analyze Your Own Codebase

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

Try Supermodel Free