Home / File/ prepare-config.ts — tailwindcss Source File

prepare-config.ts — tailwindcss Source File

Architecture documentation for prepare-config.ts, a typescript file in the tailwindcss codebase. 18 imports, 2 dependents.

File typescript CommandLineInterface Codemods 18 imports 2 dependents 4 functions

Entity Profile

Dependency Diagram

graph LR
  d58c78f4_5856_72aa_9dca_c418a7d7f31e["prepare-config.ts"]
  86cbca6b_bfa0_804c_ee2e_2cc7a7aef7fe["compile.ts"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> 86cbca6b_bfa0_804c_ee2e_2cc7a7aef7fe
  2a6a0b85_eed3_a09b_8c8d_c2a585078dac["loadModule"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> 2a6a0b85_eed3_a09b_8c8d_c2a585078dac
  cad44155_17aa_e1d6_081a_8f3b4f06bcde["resolve-config.ts"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> cad44155_17aa_e1d6_081a_8f3b4f06bcde
  bc7b25d3_d5ad_3609_d595_c9755dfadcbb["resolveConfig"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> bc7b25d3_d5ad_3609_d595_c9755dfadcbb
  da5d1116_ab2a_437a_6b13_c1429fd546fa["plugin-api.ts"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> da5d1116_ab2a_437a_6b13_c1429fd546fa
  0255ffc0_a3d5_e883_5143_99660766448f["Config"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> 0255ffc0_a3d5_e883_5143_99660766448f
  bdedd2f6_da4b_69dc_e990_0814b59fbe6e["design-system.ts"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> bdedd2f6_da4b_69dc_e990_0814b59fbe6e
  665aa4ed_d86e_30e5_80d5_cd56b8ca8b62["DesignSystem"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> 665aa4ed_d86e_30e5_80d5_cd56b8ca8b62
  2329d36e_5aa2_4fa5_cf9f_a9c6cc4e1277["renderer.ts"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> 2329d36e_5aa2_4fa5_cf9f_a9c6cc4e1277
  6c5b3bb2_4069_e0af_8887_216e1c995446["error"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> 6c5b3bb2_4069_e0af_8887_216e1c995446
  d3ccc5ce_e370_63df_a97d_a2f004fd83ca["highlight"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> d3ccc5ce_e370_63df_a97d_a2f004fd83ca
  1c806fef_a933_285c_65d9_c10998b12c7d["relative"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> 1c806fef_a933_285c_65d9_c10998b12c7d
  e4e5ac2c_0d58_689d_0ad6_7086823787f1["migrate-prefix.ts"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> e4e5ac2c_0d58_689d_0ad6_7086823787f1
  137edc0b_e9b1_6852_6d97_d3956c8deba4["migratePrefixValue"]
  d58c78f4_5856_72aa_9dca_c418a7d7f31e --> 137edc0b_e9b1_6852_6d97_d3956c8deba4
  style d58c78f4_5856_72aa_9dca_c418a7d7f31e fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { __unstable__loadDesignSystem, compile } from '@tailwindcss/node'
import fs from 'node:fs/promises'
import path, { dirname } from 'node:path'
import { fileURLToPath } from 'node:url'
import { loadModule } from '../../../../@tailwindcss-node/src/compile'
import { resolveConfig } from '../../../../tailwindcss/src/compat/config/resolve-config'
import type { Config } from '../../../../tailwindcss/src/compat/plugin-api'
import type { DesignSystem } from '../../../../tailwindcss/src/design-system'
import { error, highlight, relative } from '../../utils/renderer'
import { migratePrefixValue } from './migrate-prefix'

const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)

const css = String.raw

export async function prepareConfig(
  configFilePath: string | null,
  options: { base: string },
): Promise<{
  designSystem: DesignSystem
  sources: { base: string; pattern: string }[]
  userConfig: Config
  configFilePath: string

  newPrefix: string | null
}> {
  try {
    if (configFilePath === null) {
      configFilePath = await detectConfigPath(options.base)
    } else if (!path.isAbsolute(configFilePath)) {
      configFilePath = path.resolve(options.base, configFilePath)
    }

    // We create a relative path from the current file to the config file. This is
    // required so that the base for Tailwind CSS can bet inside the
    // @tailwindcss-upgrade package and we can require `tailwindcss` properly.
    let relative = path.relative(__dirname, configFilePath)

    // If the path points to a file in the same directory, `path.relative` will
    // remove the leading `./` and we need to add it back in order to still
    // consider the path relative
    if (!relative.startsWith('.') && !path.isAbsolute(relative)) {
      relative = './' + relative
    }

    let userConfig = await createResolvedUserConfig(configFilePath)

    let newPrefix = userConfig.prefix ? migratePrefixValue(userConfig.prefix) : null
    let input = css`
      @import 'tailwindcss' ${newPrefix ? `prefix(${newPrefix})` : ''};
      @config '${relative}';
    `

    let [compiler, designSystem] = await Promise.all([
      compile(input, { base: __dirname, onDependency: () => {} }),
      __unstable__loadDesignSystem(input, { base: __dirname }),
    ])

    return {
// ... (74 more lines)

Subdomains

Frequently Asked Questions

What does prepare-config.ts do?
prepare-config.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the CommandLineInterface domain, Codemods subdomain.
What functions are defined in prepare-config.ts?
prepare-config.ts defines 4 function(s): createResolvedUserConfig, detectConfigPath, parentPaths, prepareConfig.
What does prepare-config.ts depend on?
prepare-config.ts imports 18 module(s): Config, DesignSystem, compile.ts, design-system.ts, error, highlight, loadModule, migrate-prefix.ts, and 10 more.
What files import prepare-config.ts?
prepare-config.ts is imported by 2 file(s): index.ts, link.ts.
Where is prepare-config.ts in the architecture?
prepare-config.ts is located at packages/@tailwindcss-upgrade/src/codemods/template/prepare-config.ts (domain: CommandLineInterface, subdomain: Codemods, directory: packages/@tailwindcss-upgrade/src/codemods/template).

Analyze Your Own Codebase

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

Try Supermodel Free