version.ts — tailwindcss Source File
Architecture documentation for version.ts, a typescript file in the tailwindcss codebase. 6 imports, 23 dependents.
Entity Profile
Dependency Diagram
graph LR fff09679_e13c_392d_23bb_cebc04ddb008["version.ts"] c056448b_f7a2_9149_54e8_f0f8470fe3aa["default-map.ts"] fff09679_e13c_392d_23bb_cebc04ddb008 --> c056448b_f7a2_9149_54e8_f0f8470fe3aa bf2992f6_4a37_8536_70f8_94b13631027d["DefaultMap"] fff09679_e13c_392d_23bb_cebc04ddb008 --> bf2992f6_4a37_8536_70f8_94b13631027d 0f4b2aca_6ae5_ec90_f7db_7b345b730686["package-version.ts"] fff09679_e13c_392d_23bb_cebc04ddb008 --> 0f4b2aca_6ae5_ec90_f7db_7b345b730686 a9a3f876_1870_b56c_a1a1_adc3de661d5a["getPackageVersionSync"] fff09679_e13c_392d_23bb_cebc04ddb008 --> a9a3f876_1870_b56c_a1a1_adc3de661d5a 8d4c06fc_a152_c497_9c1b_b60c5c91b817["node:child_process"] fff09679_e13c_392d_23bb_cebc04ddb008 --> 8d4c06fc_a152_c497_9c1b_b60c5c91b817 ceb9c460_c8df_eea5_d0c9_fb401dc6bdf3["semver"] fff09679_e13c_392d_23bb_cebc04ddb008 --> ceb9c460_c8df_eea5_d0c9_fb401dc6bdf3 412091df_9a6e_6a86_01bf_19968d3ae586["migrate-at-apply.test.ts"] 412091df_9a6e_6a86_01bf_19968d3ae586 --> fff09679_e13c_392d_23bb_cebc04ddb008 bf639994_959a_cded_6f3a_163595545a18["migrate-at-layer-utilities.test.ts"] bf639994_959a_cded_6f3a_163595545a18 --> fff09679_e13c_392d_23bb_cebc04ddb008 9e4e8a58_fb9b_d663_2880_954972aac787["migrate-at-layer-utilities.ts"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> fff09679_e13c_392d_23bb_cebc04ddb008 48369d9b_74af_14f1_33c7_7d263509d02f["migrate-preflight.test.ts"] 48369d9b_74af_14f1_33c7_7d263509d02f --> fff09679_e13c_392d_23bb_cebc04ddb008 4ccbfbad_b80c_422a_38fe_dc35ee118e8d["migrate-preflight.ts"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> fff09679_e13c_392d_23bb_cebc04ddb008 af634e72_8f21_9695_7ac2_bb89b92a31b2["is-safe-migration.test.ts"] af634e72_8f21_9695_7ac2_bb89b92a31b2 --> fff09679_e13c_392d_23bb_cebc04ddb008 0e3e8c5a_e3ef_6c0d_8a31_e358e2206f79["is-safe-migration.ts"] 0e3e8c5a_e3ef_6c0d_8a31_e358e2206f79 --> fff09679_e13c_392d_23bb_cebc04ddb008 e295a71c_3b67_dd42_3cf7_c583c04aa2ee["migrate-camelcase-in-named-value.test.ts"] e295a71c_3b67_dd42_3cf7_c583c04aa2ee --> fff09679_e13c_392d_23bb_cebc04ddb008 style fff09679_e13c_392d_23bb_cebc04ddb008 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { execSync } from 'node:child_process'
import semver from 'semver'
import { DefaultMap } from '../../../tailwindcss/src/utils/default-map'
import { getPackageVersionSync } from './package-version'
/**
* Must be of major version.
*
* E.g.: `isMajor(3)`
*/
export function isMajor(version: number) {
return semver.satisfies(installedTailwindVersion(), `>=${version}.0.0 <${version + 1}.0.0`)
}
/**
* Must be of greater than the current major version including minor and patch.
*
* E.g.: `isGreaterThan(3)`
*/
export function isGreaterThan(version: number) {
return semver.gte(installedTailwindVersion(), `${version + 1}.0.0`)
}
let cache = new DefaultMap((base) => {
let tailwindVersion = getPackageVersionSync('tailwindcss', base)
if (!tailwindVersion) throw new Error('Tailwind CSS is not installed')
return tailwindVersion
})
export function installedTailwindVersion(base = process.cwd()): string {
return cache.get(base)
}
let expectedCache = new DefaultMap((base) => {
try {
// This will report a problem if the package.json/package-lock.json
// mismatches with the installed version in node_modules.
//
// Also tested this with Bun and PNPM, both seem to work fine.
execSync('npm ls tailwindcss --json', { cwd: base, stdio: 'pipe' })
return installedTailwindVersion(base)
} catch (_e) {
try {
let e = _e as { stdout: Buffer }
let data = JSON.parse(e.stdout.toString())
return (
// Could be a sub-dependency issue, but we are only interested in
// the top-level version mismatch.
/"(.*?)" from the root project/.exec(data.dependencies.tailwindcss.invalid)?.[1] ??
// Fallback to the installed version
installedTailwindVersion(base)
)
} catch {
// We don't know how to verify, so let's just return the installed
// version to not block the user.
return installedTailwindVersion(base)
}
}
})
export function expectedTailwindVersion(base = process.cwd()): string {
return expectedCache.get(base)
}
Domain
Subdomains
Functions
Dependencies
- DefaultMap
- default-map.ts
- getPackageVersionSync
- node:child_process
- package-version.ts
- semver
Imported By
- packages/@tailwindcss-upgrade/src/index.test.ts
- packages/@tailwindcss-upgrade/src/index.ts
- packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.ts
- packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-apply.test.ts
- packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-layer-utilities.test.ts
- packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-layer-utilities.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-camelcase-in-named-value.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-camelcase-in-named-value.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-canonicalize-candidate.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-handle-empty-arbitrary-values.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-legacy-classes.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-legacy-classes.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-modernize-arbitrary-values.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-prefix.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-prefix.ts
- packages/@tailwindcss-upgrade/src/codemods/css/migrate-preflight.test.ts
- packages/@tailwindcss-upgrade/src/codemods/css/migrate-preflight.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-simple-legacy-classes.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-simple-legacy-classes.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-variant-order.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-variant-order.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate.test.ts
Source
Frequently Asked Questions
What does version.ts do?
version.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the UpgradeToolkit domain, TemplateAnalysis subdomain.
What functions are defined in version.ts?
version.ts defines 6 function(s): cache, expectedCache, expectedTailwindVersion, installedTailwindVersion, isGreaterThan, isMajor.
What does version.ts depend on?
version.ts imports 6 module(s): DefaultMap, default-map.ts, getPackageVersionSync, node:child_process, package-version.ts, semver.
What files import version.ts?
version.ts is imported by 23 file(s): index.test.ts, index.ts, is-safe-migration.test.ts, is-safe-migration.ts, migrate-at-apply.test.ts, migrate-at-layer-utilities.test.ts, migrate-at-layer-utilities.ts, migrate-camelcase-in-named-value.test.ts, and 15 more.
Where is version.ts in the architecture?
version.ts is located at packages/@tailwindcss-upgrade/src/utils/version.ts (domain: UpgradeToolkit, subdomain: TemplateAnalysis, directory: packages/@tailwindcss-upgrade/src/utils).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free