migrate-import.ts — tailwindcss Source File
Architecture documentation for migrate-import.ts, a typescript file in the tailwindcss codebase. 8 imports, 2 dependents.
Entity Profile
Dependency Diagram
graph LR 4110edba_26d6_f493_077a_dd261e1ea456["migrate-import.ts"] 061a1d94_150d_9879_9075_9c457da6010d["at-import.ts"] 4110edba_26d6_f493_077a_dd261e1ea456 --> 061a1d94_150d_9879_9075_9c457da6010d 6037d149_2cd7_be02_40f7_bc552380ed53["parseImportParams"] 4110edba_26d6_f493_077a_dd261e1ea456 --> 6037d149_2cd7_be02_40f7_bc552380ed53 bb9924cc_8308_a1f9_0e30_76de45a64970["segment.ts"] 4110edba_26d6_f493_077a_dd261e1ea456 --> bb9924cc_8308_a1f9_0e30_76de45a64970 c58cbb33_f3cc_0b4f_844a_15bf66a1dc61["segment"] 4110edba_26d6_f493_077a_dd261e1ea456 --> c58cbb33_f3cc_0b4f_844a_15bf66a1dc61 d9175aea_5971_a6c1_773d_004ce3789372["value-parser.ts"] 4110edba_26d6_f493_077a_dd261e1ea456 --> d9175aea_5971_a6c1_773d_004ce3789372 b75e8457_6610_e7ce_eeaf_9a1dd10fc510["promises"] 4110edba_26d6_f493_077a_dd261e1ea456 --> b75e8457_6610_e7ce_eeaf_9a1dd10fc510 89aef3dd_1eed_c141_d425_b8949215a653["node:path"] 4110edba_26d6_f493_077a_dd261e1ea456 --> 89aef3dd_1eed_c141_d425_b8949215a653 7c3c22f8_be1a_4490_9f3e_622280887fe1["postcss"] 4110edba_26d6_f493_077a_dd261e1ea456 --> 7c3c22f8_be1a_4490_9f3e_622280887fe1 9154c34e_24ef_a780_8652_3f977f2ebea7["migrate-import.test.ts"] 9154c34e_24ef_a780_8652_3f977f2ebea7 --> 4110edba_26d6_f493_077a_dd261e1ea456 9e542b1f_db4d_cc7b_b37d_1324d5719263["migrate.ts"] 9e542b1f_db4d_cc7b_b37d_1324d5719263 --> 4110edba_26d6_f493_077a_dd261e1ea456 style 4110edba_26d6_f493_077a_dd261e1ea456 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,
}
}
Domain
Subdomains
Functions
Dependencies
- at-import.ts
- node:path
- parseImportParams
- postcss
- promises
- segment
- segment.ts
- value-parser.ts
Imported By
Source
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 CommandLineInterface 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: CommandLineInterface, 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