Home / File/ migrate-import.ts — tailwindcss Source File

migrate-import.ts — tailwindcss Source File

Architecture documentation for migrate-import.ts, a typescript file in the tailwindcss codebase. 8 imports, 2 dependents.

File typescript UpgradeToolkit Codemods 8 imports 2 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  7d223813_0df4_dfbe_850e_d5fd9ab81eef["migrate-import.ts"]
  bb501946_7944_1015_b5ff_34d10aace799["at-import.ts"]
  7d223813_0df4_dfbe_850e_d5fd9ab81eef --> bb501946_7944_1015_b5ff_34d10aace799
  080c2c82_1391_bd9d_3ee3_8b010c0f87ce["parseImportParams"]
  7d223813_0df4_dfbe_850e_d5fd9ab81eef --> 080c2c82_1391_bd9d_3ee3_8b010c0f87ce
  ef204000_8998_5a6c_5455_324b37624713["segment.ts"]
  7d223813_0df4_dfbe_850e_d5fd9ab81eef --> ef204000_8998_5a6c_5455_324b37624713
  f712ed47_45d4_4e5a_dd73_fdefa1da71da["segment"]
  7d223813_0df4_dfbe_850e_d5fd9ab81eef --> f712ed47_45d4_4e5a_dd73_fdefa1da71da
  1d3f1613_f144_938f_08f7_49039a46ad49["value-parser.ts"]
  7d223813_0df4_dfbe_850e_d5fd9ab81eef --> 1d3f1613_f144_938f_08f7_49039a46ad49
  8118fcf2_a51d_d1a1_93d3_c71d3a646692["promises"]
  7d223813_0df4_dfbe_850e_d5fd9ab81eef --> 8118fcf2_a51d_d1a1_93d3_c71d3a646692
  2a7660a5_3e09_bd74_37f0_e4e54bc64ce5["node:path"]
  7d223813_0df4_dfbe_850e_d5fd9ab81eef --> 2a7660a5_3e09_bd74_37f0_e4e54bc64ce5
  ba54c7c3_7b1e_9984_bfef_a693a3df2d84["postcss"]
  7d223813_0df4_dfbe_850e_d5fd9ab81eef --> ba54c7c3_7b1e_9984_bfef_a693a3df2d84
  743f1b27_c0aa_f678_fc53_9fc9a10fadf7["migrate-import.test.ts"]
  743f1b27_c0aa_f678_fc53_9fc9a10fadf7 --> 7d223813_0df4_dfbe_850e_d5fd9ab81eef
  67f80607_3a88_f275_79a1_b9557100d939["migrate.ts"]
  67f80607_3a88_f275_79a1_b9557100d939 --> 7d223813_0df4_dfbe_850e_d5fd9ab81eef
  style 7d223813_0df4_dfbe_850e_d5fd9ab81eef fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import fs from 'node:fs/promises'
import { dirname, resolve } from 'node:path'
import { type Plugin, type Root } from 'postcss'
import { parseImportParams } from '../../../../tailwindcss/src/at-import'
import { segment } from '../../../../tailwindcss/src/utils/segment'
import * as ValueParser from '../../../../tailwindcss/src/value-parser'

export function migrateImport(): Plugin {
  async function migrate(root: Root) {
    let file = root.source?.input.file
    if (!file) return

    let promises: Promise<void>[] = []
    root.walkAtRules('import', (rule) => {
      try {
        let [firstParam, ...rest] = segment(rule.params, ' ')

        let params = parseImportParams(ValueParser.parse(firstParam))
        if (!params) return

        let isRelative = params.uri[0] === '.'
        let hasCssExtension = params.uri.endsWith('.css')

        if (isRelative && hasCssExtension) {
          return
        }

        let fullPath = resolve(dirname(file), params.uri)
        if (!hasCssExtension) fullPath += '.css'

        promises.push(
          fs.stat(fullPath).then(() => {
            let ext = hasCssExtension ? '' : '.css'
            let path = isRelative ? params.uri : `./${params.uri}`
            rule.params = [`'${path}${ext}'`, ...rest].join(' ')
          }),
        )
      } catch {
        // When an error occurs while parsing the `@import` statement, we skip
        // the import. This will happen in cases where you import an external
        // URL.
      }
    })

    await Promise.allSettled(promises)
  }

  return {
    postcssPlugin: '@tailwindcss/upgrade/migrate-import',
    OnceExit: migrate,
  }
}

Subdomains

Functions

Frequently Asked Questions

What does migrate-import.ts do?
migrate-import.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the UpgradeToolkit domain, Codemods subdomain.
What functions are defined in migrate-import.ts?
migrate-import.ts defines 1 function(s): migrateImport.
What does migrate-import.ts depend on?
migrate-import.ts imports 8 module(s): at-import.ts, node:path, parseImportParams, postcss, promises, segment, segment.ts, value-parser.ts.
What files import migrate-import.ts?
migrate-import.ts is imported by 2 file(s): migrate-import.test.ts, migrate.ts.
Where is migrate-import.ts in the architecture?
migrate-import.ts is located at packages/@tailwindcss-upgrade/src/codemods/css/migrate-import.ts (domain: UpgradeToolkit, subdomain: Codemods, directory: packages/@tailwindcss-upgrade/src/codemods/css).

Analyze Your Own Codebase

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

Try Supermodel Free