Vigia

tailwind-variants을(를) 3.x에서 4.x로 업그레이드하기

tailwind-variants 3.3.1과 4.0.0의 공개 API를 TypeScript 타입에서 자동으로 비교한 결과입니다. 시그니처 변경은 호환성이 깨질 가능성이 있다는 뜻이며 확정은 아닙니다.

요약

삭제된 import 경로0
삭제된 export0
변경된 시그니처35
삭제된 클래스·인터페이스 멤버0
변경된 클래스·인터페이스 멤버12
새로 지원 중단됨0
요구 사항 변경 (engines, peer 의존성)2
새 export32

삭제된 export

감지되지 않았습니다.

변경된 시그니처

export이전이후
tailwind-variants · TV<V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa…interface
tailwind-variants · cn<T extends CnOptions>(...classnames: T): CnReturn(...inputs: ClassValue[]): string
tailwind-variants · cx<T extends CnOptions>(...classnames: T): CnReturn<T extends CnOptions>(...classnames: T): string
tailwind-variants · tv<V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa…<V extends TVVariantsConstraint = {}, DV = {}, CV extends readonly object[] = [], B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> | TVExtendList | undefined = undefined, EV extends TVVariantsShape = VariantsOfExtend<E>, ES extends TVSlots = SlotsOfExtend<E>>(options: TVOptionsFields<V, DV, CV, B, S, EV, ES> & { extend?: E | undefined; compoundSlots?: TVCompoundSlots<NoInfer<V>, TVMergedSlots<NoInfer<S>, NoInfer<SlotsOfExtend<E>>>, NoInfer<B>, NoInfer<EV>> | undefined; }, config?: TVConfig | undefined): TVReturnType<V, S, B, EV, ES, E>
tailwind-variants · TVLite<V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa…interface
tailwind-variants · TVPropsEV extends undefined ? V extends undefined ? ClassProp<ClassNameValue> : { [K in keyof V]?: VariantValue<V, K> | undefined; } & ClassProp<ClassNameValue> : V extends undefined ? { [K in keyof EV]?: VariantValue<EV, K> | undefined; } & ClassProp<ClassNameValue> : { [K in keyof V | keyof EV]?: VariantValue<V, K> | VariantValue<EV, K> | undefined; } & ClassProp<ClassNameValue>[TVResolvedVariants<V, EV>] extends [undefined] ? ClassProp<ClassNameValue> : { [K in keyof ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: ClassNameValue; className?: undefined; })]: ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: ClassNameValue; className?: undefined; })[K]; } | { [K in keyof ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: undefined; className?: ClassNam…
tailwind-variants · cnMerge<T extends CnOptions>(...classnames: T): (config?: TWMConfig | undefined) => CnReturn<T extends CnOptions>(...classnames: T): (config?: TWMConfig | undefined) => string
tailwind-variants · CnReturnstring | undefinedstring
tailwind-variants · TVConfig{ twMerge?: boolean | undefined; twMergeConfig?: TWMergeConfig | undefined; }TWMConfig & { debug?: boolean | undefined; }
tailwind-variants · createTV(config: TWMConfig): TV(config: TVConfig): TV<TVConfig>
tailwind-variants · TWMConfig{ twMerge?: boolean | undefined; twMergeConfig?: TWMergeConfig | undefined; }{ twMerge?: boolean | TwMergeFn | undefined; }
tailwind-variants · TVVariantsEV extends undefined ? TVVariantsDefault<S, B> : TVVariantsDefault<S, B> | { [K in keyof EV]: { [K2 in keyof EV[K]]: S extends TVSlots ? ClassNameValue | SlotsClassValue<S, B> : ClassNameValue; }; }{ [x: string]: Record<string, VariantClassValue<TVMergedSlots<S, ES>, B>>; }
tailwind-variants · TVVariantKeysV extends undefined ? undefined : (keyof V)[][V] extends [undefined] ? undefined : Extract<keyof V, string>[]
tailwind-variants · defaultConfigTWMConfigTVConfig
tailwind-variants · StringToBooleanT extends "true" | "false" ? boolean : TT extends boolean | "true" | "false" ? boolean : T
tailwind-variants · TVCompoundSlots({ slots: TVSlotsWithBase<S, B>[]; } & ({ [K in keyof V]?: VariantValueWithBooleanUndefined<V, K> | VariantValueWithBooleanUndefined<V, K>[] | undefined; } & ClassProp<ClassNameValue>))[]({ slots: TVSlotsWithBase<S, B>[]; } & ({ [K in Exclude<keyof TVResolvedVariants<V, EV> & string, "slots" | "class" | "className">]?: VariantValueWithBooleanUndefined<TVResolvedVariants<V, EV>, K> | VariantValueWithBooleanUndefined<TVResolvedVariants<V, EV>, K>[] | undefined; } & ClassProp<ClassNameValue>))[]
tailwind-variants · TVDefaultVariants{ [K in keyof V | keyof EV]?: VariantValue<V, K> | VariantValue<EV, K> | undefined; }[TVResolvedVariants<V, EV>] extends [undefined] ? {} : { [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; }
tailwind-variants · TVCompoundVariants({ [K in keyof V | keyof EV]?: VariantValueWithBooleanUndefined<V, K> | VariantValueWithBooleanUndefined<EV, K> | (K extends keyof V ? VariantValueWithBooleanUndefined<V, K>[] : never) | undefined; } & ClassProp<ClassNameValue | SlotsClassValue<S, B>>)[]TVCompoundVariant<V, S, B, EV, ES>[]
tailwind-variants · TVScreenPropsValue{ initial?: StringToBoolean<keyof V[K]> | undefined; }{ initial?: StringToBoolean<keyof V[K] & string> | undefined; }
tailwind-variants/lite · TV<V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa…interface
tailwind-variants/lite · cn<T extends CnOptions>(...classnames: T): (config?: any) => CnReturn<T extends CnOptions>(...classnames: T): (config?: TVLiteConfig | undefined) => string
tailwind-variants/lite · cx<T extends CnOptions>(...classnames: T): CnReturn<T extends CnOptions>(...classnames: T): string
tailwind-variants/lite · tv<V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa…<V extends TVVariantsConstraint = {}, DV = {}, CV extends readonly object[] = [], B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> | TVExtendList | undefined = undefined, EV extends TVVariantsShape = VariantsOfExtend<E>, ES extends TVSlots = SlotsOfExtend<E>>(options: TVOptionsFields<V, DV, CV, B, S, EV, ES> & { extend?: E | undefined; compoundSlots?: TVCompoundSlots<NoInfer<V>, TVMergedSlots<NoInfer<S>, NoInfer<SlotsOfExtend<E>>>, NoInfer<B>, NoInfer<EV>> | undefined; }, config?: TVLiteConfig | undefined): TVReturnType<V, S, B, EV, ES, …
tailwind-variants/lite · TVLite<V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa…interface
tailwind-variants/lite · TVPropsEV extends undefined ? V extends undefined ? ClassProp<ClassNameValue> : { [K in keyof V]?: VariantValue<V, K> | undefined; } & ClassProp<ClassNameValue> : V extends undefined ? { [K in keyof EV]?: VariantValue<EV, K> | undefined; } & ClassProp<ClassNameValue> : { [K in keyof V | keyof EV]?: VariantValue<V, K> | VariantValue<EV, K> | undefined; } & ClassProp<ClassNameValue>[TVResolvedVariants<V, EV>] extends [undefined] ? ClassProp<ClassNameValue> : { [K in keyof ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: ClassNameValue; className?: undefined; })]: ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: ClassNameValue; className?: undefined; })[K]; } | { [K in keyof ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: undefined; className?: ClassNam…
tailwind-variants/lite · CnReturnstring | undefinedstring
tailwind-variants/lite · createTV(): TVLite(config?: TVLiteConfig | undefined): TVLite
tailwind-variants/lite · TVVariantsEV extends undefined ? TVVariantsDefault<S, B> : TVVariantsDefault<S, B> | { [K in keyof EV]: { [K2 in keyof EV[K]]: S extends TVSlots ? ClassNameValue | SlotsClassValue<S, B> : ClassNameValue; }; }{ [x: string]: Record<string, VariantClassValue<TVMergedSlots<S, ES>, B>>; }
tailwind-variants/lite · TVVariantKeysV extends undefined ? undefined : (keyof V)[][V] extends [undefined] ? undefined : Extract<keyof V, string>[]
tailwind-variants/lite · StringToBooleanT extends "true" | "false" ? boolean : TT extends boolean | "true" | "false" ? boolean : T
tailwind-variants/lite · TVCompoundSlots({ slots: TVSlotsWithBase<S, B>[]; } & ({ [K in keyof V]?: VariantValueWithBooleanUndefined<V, K> | VariantValueWithBooleanUndefined<V, K>[] | undefined; } & ClassProp<ClassNameValue>))[]({ slots: TVSlotsWithBase<S, B>[]; } & ({ [K in Exclude<keyof TVResolvedVariants<V, EV> & string, "slots" | "class" | "className">]?: VariantValueWithBooleanUndefined<TVResolvedVariants<V, EV>, K> | VariantValueWithBooleanUndefined<TVResolvedVariants<V, EV>, K>[] | undefined; } & ClassProp<ClassNameValue>))[]
tailwind-variants/lite · TVDefaultVariants{ [K in keyof V | keyof EV]?: VariantValue<V, K> | VariantValue<EV, K> | undefined; }[TVResolvedVariants<V, EV>] extends [undefined] ? {} : { [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; }
tailwind-variants/lite · TVCompoundVariants({ [K in keyof V | keyof EV]?: VariantValueWithBooleanUndefined<V, K> | VariantValueWithBooleanUndefined<EV, K> | (K extends keyof V ? VariantValueWithBooleanUndefined<V, K>[] : never) | undefined; } & ClassProp<ClassNameValue | SlotsClassValue<S, B>>)[]TVCompoundVariant<V, S, B, EV, ES>[]
tailwind-variants/lite · TVScreenPropsValue{ initial?: StringToBoolean<keyof V[K]> | undefined; }{ initial?: StringToBoolean<keyof V[K] & string> | undefined; }
tailwind-variants/utils · cx<T extends CnOptions>(...classnames: T): CnReturn<T extends CnOptions>(...classnames: T): string

삭제된 클래스·인터페이스 멤버

감지되지 않았습니다.

변경된 클래스·인터페이스 멤버

member이전이후
TVReturnType.variantsTVMergedVariants<V, EV>MergeVariantMaps<V, EV>
TVReturnType.variantKeysTVVariantKeys<TVMergedVariants<V, EV>, TVMergedSlots<S, ES>>TVVariantKeys<MergeVariantMaps<V, EV>, TVMergedSlots<S, ES>>
TVReturnType.compoundSlotsTVCompoundSlots<V, S, B>TVCompoundSlots<V, TVMergedSlots<S, ES>, B, EV>
TVReturnProps.variantsTVMergedVariants<V, EV>MergeVariantMaps<V, EV>
TVReturnProps.variantKeysTVVariantKeys<TVMergedVariants<V, EV>, TVMergedSlots<S, ES>>TVVariantKeys<MergeVariantMaps<V, EV>, TVMergedSlots<S, ES>>
TVReturnProps.compoundSlotsTVCompoundSlots<V, S, B>TVCompoundSlots<V, TVMergedSlots<S, ES>, B, EV>
TVReturnType.variantsTVMergedVariants<V, EV>MergeVariantMaps<V, EV>
TVReturnType.variantKeysTVVariantKeys<TVMergedVariants<V, EV>, TVMergedSlots<S, ES>>TVVariantKeys<MergeVariantMaps<V, EV>, TVMergedSlots<S, ES>>
TVReturnType.compoundSlotsTVCompoundSlots<V, S, B>TVCompoundSlots<V, TVMergedSlots<S, ES>, B, EV>
TVReturnProps.variantsTVMergedVariants<V, EV>MergeVariantMaps<V, EV>
TVReturnProps.variantKeysTVVariantKeys<TVMergedVariants<V, EV>, TVMergedSlots<S, ES>>TVVariantKeys<MergeVariantMaps<V, EV>, TVMergedSlots<S, ES>>
TVReturnProps.compoundSlotsTVCompoundSlots<V, S, B>TVCompoundSlots<V, TVMergedSlots<S, ES>, B, EV>

새로 지원 중단됨

감지되지 않았습니다.

요구 사항 변경 (engines, peer 의존성)

이전이후
peerDependencies.tailwindcss*—
peerDependencies.tailwind-merge>=3.0.0—
새 export (32)
importexportkind
tailwind-variantsclsxvariable
tailwind-variantstwJoinvariable
tailwind-variantsdefaultvariable
tailwind-variantstwMergevariable
tailwind-variantsTVExtendtype
tailwind-variantsTVFactorytype
tailwind-variantsTwMergeFntype
tailwind-variantsClassArraytype
tailwind-variantsCnFunctiontype
tailwind-variantsTVExtendListtype
tailwind-variantsTVLiteConfigtype
tailwind-variantsTVExtendInputtype
tailwind-variantsClassNameArraytype
tailwind-variantsClassNameValuetype
tailwind-variantsTVCustomConfigtype
tailwind-variantsClassDictionaryinterface
tailwind-variantsTWMCustomConfigtype
tailwind-variantsTVCompoundVarianttype
tailwind-variants/liteclsxvariable
tailwind-variants/litedefaultvariable
tailwind-variants/liteTVConfigtype
tailwind-variants/liteTVExtendtype
tailwind-variants/litecreateCNvariable
tailwind-variants/liteTVFactorytype
tailwind-variants/liteTWMConfigtype
tailwind-variants/liteTwMergeFntype
tailwind-variants/liteTVExtendListtype
tailwind-variants/liteTVLiteConfigtype
tailwind-variants/liteTVExtendInputtype
tailwind-variants/liteTWMergeConfigtype
tailwind-variants/liteTVCompoundVarianttype
tailwind-variants/utilsnormalizeClassStringvariable

이 데이터를 AI 에이전트에 제공하세요

Vigia는 무료 MCP 서버입니다. 코딩 에이전트가 코드를 작성하기 전에 버전, 호환성을 깨는 변경, 취약점을 확인합니다. 가입도 API 키도 필요 없습니다.

claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp

Cursor에 추가VS Code에 추가★ GitHub에서 스타 누르기

그 밖의 MCP 클라이언트
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

에이전트 스킬(SKILL.md): 에이전트에게 Vigia를 언제 쓸지 알려 줍니다 · 풀 리퀘스트용 GitHub Action

자주 묻는 질문

tailwind-variants을(를) 3에서 4(으)로 업그레이드할 때 호환성이 깨지는 변경은 무엇인가요?

tailwind-variants 3.3.1과 4.0.0 사이에서 Vigia는 삭제된 export 0개, 변경된 시그니처 35개, 삭제되거나 변경된 클래스·인터페이스 멤버 12개를 찾았습니다.

tailwind-variants 4에서 지원 중단된 것은 무엇인가요?

tailwind-variants 4.0.0에서 export 또는 멤버 0개가 새로 지원 중단으로 표시되었습니다.

에이전트용

GET https://vigia.coredls.cloud/v1/packages/npm/tailwind-variants/upgrade?from=3.3.1&to=4.0.0