Home / Function/ migratePostCSSJsonConfig() — tailwindcss Function Reference

migratePostCSSJsonConfig() — tailwindcss Function Reference

Architecture documentation for the migratePostCSSJsonConfig() function in migrate-postcss.ts from the tailwindcss codebase.

Entity Profile

Dependency Diagram

graph TD
  a91ee9d1_7968_6801_1de5_9ce7a305be96["migratePostCSSJsonConfig()"]
  9434c276_afef_dc51_650b_a8b408f077fc["migrate-postcss.ts"]
  a91ee9d1_7968_6801_1de5_9ce7a305be96 -->|defined in| 9434c276_afef_dc51_650b_a8b408f077fc
  0cb85618_1b33_b9dc_ae2b_1bc3e6bd6069["migratePostCSSConfig()"]
  0cb85618_1b33_b9dc_ae2b_1bc3e6bd6069 -->|calls| a91ee9d1_7968_6801_1de5_9ce7a305be96
  e7fc34a2_5d17_88b0_1f65_15dcb35df788["isEmptyObject()"]
  a91ee9d1_7968_6801_1de5_9ce7a305be96 -->|calls| e7fc34a2_5d17_88b0_1f65_15dcb35df788
  style a91ee9d1_7968_6801_1de5_9ce7a305be96 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/@tailwindcss-upgrade/src/codemods/config/migrate-postcss.ts lines 214–290

async function migratePostCSSJsonConfig(json: any): Promise<{
  json: any
  didAddPostcssClient: boolean
  didRemoveAutoprefixer: boolean
  didRemovePostCSSImport: boolean
} | null> {
  function isTailwindCSSPlugin(plugin: string, options: any) {
    return plugin === 'tailwindcss' && isEmptyObject(options)
  }
  function isPostCSSImportPlugin(plugin: string, options: any) {
    return plugin === 'postcss-import' && isEmptyObject(options)
  }
  function isAutoprefixerPlugin(plugin: string, options: any) {
    return plugin === 'autoprefixer' && isEmptyObject(options)
  }
  function isTailwindCSSNestingPlugin(plugin: string, options: any) {
    return (
      plugin === 'tailwindcss/nesting' && (options === 'postcss-nesting' || isEmptyObject(options))
    )
  }

  let didAddPostcssClient = false
  let didRemoveAutoprefixer = false
  let didRemovePostCSSImport = false

  let plugins = Object.entries(json.plugins || {})

  let newPlugins: [string, any][] = []
  for (let i = 0; i < plugins.length; i++) {
    let [plugin, options] = plugins[i]

    if (isTailwindCSSPlugin(plugin, options)) {
      didAddPostcssClient = true
      newPlugins.push(['@tailwindcss/postcss', options])
    } else if (isAutoprefixerPlugin(plugin, options)) {
      didRemoveAutoprefixer = true
    } else if (isPostCSSImportPlugin(plugin, options)) {
      // Check that there are no unknown plugins before the tailwindcss plugin
      let hasUnknownPluginsBeforeTailwindCSS = false
      for (let j = i + 1; j < plugins.length; j++) {
        let [nextPlugin, nextOptions] = plugins[j]
        if (isTailwindCSSPlugin(nextPlugin, nextOptions)) {
          break
        }
        if (isTailwindCSSNestingPlugin(nextPlugin, nextOptions)) {
          continue
        }
        hasUnknownPluginsBeforeTailwindCSS = true
        break
      }

      if (!hasUnknownPluginsBeforeTailwindCSS) {
        didRemovePostCSSImport = true
      } else {
        newPlugins.push([plugin, options])
      }
    } else if (isTailwindCSSNestingPlugin(plugin, options)) {
      // Check if the following rule is the tailwindcss plugin
      let [nextPlugin, nextOptions] = plugins[i + 1]
      if (isTailwindCSSPlugin(nextPlugin, nextOptions)) {
        // Since this plugin is bundled with `tailwindcss`, we don't need to
        // clean up a package when deleting this line.
      } else {
        newPlugins.push([plugin, options])
      }
    } else {
      newPlugins.push([plugin, options])
    }
  }

  return {
    json: { ...json, plugins: Object.fromEntries(newPlugins) },
    didAddPostcssClient,
    didRemoveAutoprefixer,
    didRemovePostCSSImport,
  }
}

Subdomains

Frequently Asked Questions

What does migratePostCSSJsonConfig() do?
migratePostCSSJsonConfig() is a function in the tailwindcss codebase, defined in packages/@tailwindcss-upgrade/src/codemods/config/migrate-postcss.ts.
Where is migratePostCSSJsonConfig() defined?
migratePostCSSJsonConfig() is defined in packages/@tailwindcss-upgrade/src/codemods/config/migrate-postcss.ts at line 214.
What does migratePostCSSJsonConfig() call?
migratePostCSSJsonConfig() calls 1 function(s): isEmptyObject.
What calls migratePostCSSJsonConfig()?
migratePostCSSJsonConfig() is called by 1 function(s): migratePostCSSConfig.

Analyze Your Own Codebase

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

Try Supermodel Free