Vigia

i18next을(를) 26.x에서 27.x로 업그레이드하기

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

요약

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

삭제된 export

importexportkind이전
i18next_IcuArgtypeA extends `${infer Name},${infer Type},${infer Cases}` ? _IcuTrim<Type> extends "plural" | "selectordinal" ? [_IcuTrim<Name>, _IcuFormatType<_IcuTrim<Type>>] | _IcuCases<Cases, never, never>[1] : _IcuTrim<Type> extends "select" ? _IcuCases<Cases, never, never> extends [infer Keys, infer E] ? E | [_IcuTrim<Name>, "other" extends Keys ? Exclude<Keys, "other"> | (string & {}) : Keys] : never : [_IcuTrim<Name>, _IcuFormatType<_IcuTrim<Type>>] : A extends `${infer Name},${infer Type}` ? [_IcuTrim<Name>, _IcuFormatType<_IcuTrim<Type>>] : [_IcuTrim<A>, string | number]
i18next_KeysOftype[Res] extends [unknown] ? keyof Res : never
i18next_IcuTrimtypeS extends ` ${infer R}` | ` ${infer R}` | `\t${infer R}` | `\r${infer R}` ? _IcuTrim<R> : S extends `${infer R} ` | `${infer R} ` | `${infer R}\t` | `${infer R}\r` ? _IcuTrim<R> : S
i18next_Mf2NametypeS extends `${infer N} ${string}` ? _Mf2Name<N> : S extends `${infer N}/${string}` ? N : S
i18next_Mf2VarstypeS extends `${string}$${infer R}` ? _Mf2Vars<R, Acc | [_Mf2Name<R>, string | number]> : Acc
i18next_ValueOftypeKey extends _KeysOf<Res> ? Res[Key] : _IsLiteral<Key & PropertyKey> extends true ? never : Res[Key & _KeysOf<Res>]
i18next_IcuBlocktypeS extends `${infer L}}${infer R}` ? L extends `${infer L2}{${infer R2}` ? _IcuBlock<`${R2}}${R}`, `${Acc}${L2}{`, [...Depth, 0]> : Depth extends [0, ...infer D extends 0[]] ? _IcuBlock<R, `${Acc}${L}}`, D> : [`${Acc}${L}`, R] : never
i18next_IcuCasestypeS extends `${infer L}{${infer R}` ? _IcuBlock<R, "", []> extends [infer Msg, infer Rest] ? _IcuCases<Rest, Keys | _IcuTrim<L>, Acc | _IcuEntries<Msg, never>> : [Keys, Acc] : [Keys, Acc]
i18next_Mf2SpacetypeS extends `${infer L}${C}${infer R}` ? _Mf2Space<`${L} ${R}`, C> : S
i18next_HasPluraltype0 extends 1 & R ? false : [Extract<R, PluralValue<string>>] extends [never] ? false : true
i18next_IsLiteraltype{} extends Record<S, unknown> ? false : true
i18next_Mf2LocalstypeS extends `${string}.local${infer R}` ? _Mf2Locals<R, Acc | (_IcuTrim<R> extends `$${infer N}=${string}` ? _IcuTrim<N> : never)> : Acc
i18next_Mf2Spacestype_Mf2Space<_Mf2Space<_Mf2Space<S, "\n">, "\t">, "\r"> extends ` ${infer R}` | ` ${infer R}` | `\t${infer R}` | `\r${infer R}` ? _IcuTrim<R> : _Mf2Space<_Mf2Space<_Mf2Space<S, "\n">, "\t">, "\r"> extends `${infer R} ` | `${infer R} ` | `${infer R}\t` | `${infer R}\r` ? _IcuTrim<R> : _Mf2Space<_Mf2Space<_Mf2Space<S, "\n">, "\t">, "\r">
i18next_Resourcestypeobject
i18next_IcuArgsMaptypeRet extends string ? string extends Ret ? never : _ArgsFromEntries<_IcuEntries<_IcuStripQuotes<Ret, "">, never>> : never
i18next_IcuEntriestypeS extends `${string}{${infer R}` ? _IcuBlock<R, "", []> extends [infer Arg, infer Rest] ? _IcuEntries<Rest, Acc | _IcuArg<Arg>> : Acc : Acc
i18next_Mf2ArgsMaptypeRet extends string ? string extends Ret ? never : _Mf2StripEscapes<Ret, ""> extends infer S ? _ArgsFromEntries<Exclude<_Mf2Entries<S, never>, [_IcuTrim<S> extends `.${string}` ? _Mf2Locals<S, never> : never, unknown]> | Exclude<_Mf2Selectors<S>, [_IcuTrim<S> extends `.${string}` ? _Mf2Locals<S, never> : never, unknown]>> : never : never
i18next_Mf2EntriestypeS extends `${string}{${infer R}` ? R extends `{${infer Pattern}` ? _Mf2Entries<Pattern, Acc> : _Mf2Expression<R, ""> extends [infer Body, infer Rest] ? _Mf2Entries<Rest, Acc | _Mf2ExprEntries<_IcuTrim<_Mf2Space<_Mf2Space<_Mf2Space<Body, "\n">, "\t">, "\r">>>> : Acc : Acc
i18next_ReturnNulltypefalse
i18next$PluralBrandvariabletypeof $PluralBrand
i18next_DefinedKeystype[T] extends [unknown] ? keyof { [P in keyof T as [T[P]] extends [undefined] ? never : P]: true; } : never
i18next_NsSeparatortype":"
i18next_ContextBasestype[T] extends [unknown] ? _ContextPrefixes<T>[1] : never
i18next_KeySeparatortype"."
i18next_Mf2SelectorstypeS extends `${string}.match${infer R}` ? _Mf2Vars<_IcuTrim<_Mf2Space<_Mf2Space<_Mf2Space<R extends `${infer Sel}{${string}` ? Sel : R, "\n">, "\t">, "\r">>, never> : never
i18next_NonNeverKeystype{ [K in keyof T]: [T[K]] extends [never] ? never : K; }[keyof T]
i18next_PerPropMergetype{ [K in keyof L | keyof R]: K extends keyof L ? K extends keyof R ? L[K] & R[K] : L[K] : K extends keyof R ? R[K] : never; }
i18next_PrimaryParsetype(ActualKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends …
i18next_CountIfPluraltype_HasPlural<R> extends true ? { count: number; } : {}
i18next_FallbackParsetype[FallbackResourcesOf<FallbackNS, $Dictionary<string>>] extends [never] ? never : ParseTReturnWithFallback<ActualKey, ActualKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithF…
i18next_HasDefinedKeytype[false extends (Pattern extends unknown ? _IsLiteral<Pattern> : never) ? keyof _DefinedContextKeys<T, Pattern> : Extract<Pattern, _DefinedKeys<T>>] extends [never] ? false : true
i18next_IcuFormatTypetype[F] extends [never] ? string | number : F extends never ? {}[F] : F extends "number" | "plural" | "selectordinal" ? number : F extends "date" | "time" ? Date : string | number
i18next_IcuSkipQuotedtypeS extends `${string}'${infer R}` ? R extends `'${infer R2}` ? _IcuSkipQuoted<R2> : R : ""
i18next_IcuWhitespacetype" " | "\n" | "\t" | "\r"
i18next_KeyAndOptionstype[key: Key | Key[], options?: Opts | undefined]
i18next_Mf2ExpressiontypeS extends `${infer B}}${infer Rest}` ? B extends `${infer Before}|${infer Lit}` ? `${Lit}}${Rest}` extends `${string}|${infer After}` ? _Mf2Expression<After, `${Acc}${Before} `> : never : [`${Acc}${B}`, Rest] : never
i18next_ReturnObjectstypefalse
i18next$FirstNamespacetypeNs extends readonly any[] ? Ns[0] : Ns
i18next_EnableSelectortypefalse
i18next_IcuStripQuotestypeS extends `${infer L}'${infer R}` ? R extends `'${infer R2}` ? _IcuStripQuotes<R2, `${Acc}${L}`> : R extends `{${string}` | `}${string}` | `<${string}` | `>${string}` | `#${string}` ? _IcuStripQuotes<_IcuSkipQuoted<R>, `${Acc}${L}`> : _IcuStripQuotes<R, `${Acc}${L}'`> : `${Acc}${S & string}`
i18next_Mf2ExprEntriestypeBody extends `$${infer R}` ? R extends `${infer Name} ${infer Tail}` ? [Name, _Mf2FunctionType<_IcuTrim<Tail> extends `:${infer F}` ? _Mf2Name<F> : never>] | _Mf2Vars<Tail, never> : [_Mf2Name<R>, string | number] : _Mf2Vars<Body, never>
i18next_UnescapePrefixtype"-"
i18next_UnescapeSuffixtype""
i18next_ArgsFromEntriestype_UnionToIntersection<E extends [infer Name extends string, infer Type] ? Name extends `${string}.${string}` ? $StringKeyPathToRecord<Name, Type> : { [K in Name]: Type; } : never> extends infer M ? [E] extends [never] ? never : { [K in keyof M]: M[K]; } : never
i18next_ContextPrefixestype[T] extends [unknown] ? _ContextPrefixesOf<_DefinedKeys<T> & string, "", never, never> : never
i18next_IsContextualKeytype_IsLiteral<K> extends true ? K extends _ContextBases<T> ? true : false : [Exclude<keyof _DefinedContextKeys<T, `${K}_${string}`>, `${K}_zero` | `${K}_one` | `${K}_two` | `${K}_few` | `${K}_many` | `${K}_other` | `${K}_ordinal_zero` | `${K}_ordinal_one` | `${K}_ordinal_two` | `${K}_ordinal_few` | `${K}_ordinal_many` | `${K}_ordinal_other`>] extends [never] ? false : true
i18next_LegacyResourcestypeobject
i18next_MergeNamespacestype{ [K in keyof L | keyof R]: K extends keyof L ? K extends keyof R ? _DropConflictKeys<_PerPropMerge<L[K], R[K]>> : L[K] : K extends keyof R ? R[K] : never; }
i18next_MergedResourcestypeobject
i18next_Mf2FunctionTypetype[F] extends [never] ? string | number : F extends never ? {}[F] : F extends "number" | "currency" | "integer" | "percent" | "offset" | "unit" | "math" ? number : F extends "datetime" | "date" | "time" ? Date : F extends "string" ? string : string | number
i18next_Mf2StripEscapestypeS extends `${infer L}\\${string}${infer R}` ? _Mf2StripEscapes<R, `${Acc}${L}`> : `${Acc}${S & string}`
i18next_PluralSeparatortype"_"
i18next_SelectorsReturntypeFns[number] extends (...args: any[]) => infer R ? R : never
i18next_StrictKeyCheckstypefalse
i18next$SelectorKeyBrandvariabletypeof $SelectorKeyBrand
i18next_ContextSeparatortype"_"
i18next_DefaultVariablestype{}
i18next_DropConflictKeystype{ [P in _NonNeverKeys<T>]: T[P]; }
i18next_NsResourceStricttypeNs extends readonly any[] ? PickNamespaces<$Dictionary<string>, Ns[number]> : PickNamespaces<$Dictionary<string>, Ns & (string | number)>
i18next_ResolveEntryTypetype[Format] extends [never] ? Name extends "count" ? number : string | number : Format extends never ? {}[Format] : _StripFormatOptions<Format> extends never ? never : Format extends keyof _BuiltInFormatTypeMap ? _BuiltInFormatTypeMap[Format] : _StripFormatOptions<Format> extends keyof _BuiltInFormatTypeMap ? _BuiltInFormatTypeMap[_StripFormatOptions<Format> & keyof _BuiltInFormatTypeMap] : string
i18next_CompatibilityJSONtype"v4"
i18next_ContextPrefixesOftypeP extends `${infer B}_${string}` ? P extends `${B}${infer FromSep}` ? FromSep extends `${infer C}${infer Rest}` ? _ContextPrefixesOf<Rest, `${Head}${B}${C}`, All | `${Head}${B}`, FromSep extends "_zero" | "_one" | "_two" | "_few" | "_many" | "_other" | "_ordinal_zero" | "_ordinal_one" | "_ordinal_two" | "_ordinal_few" | "_ordinal_many" | "_ordinal_other" ? Bases : Bases | `${Head}${B}`> : [All, Bases] : [All, Bases] : [All, Bases]
i18next_FallbackNamespacetypefalse
i18next_HasContextVarianttypestring extends Context ? _IsLiteral<K> extends true ? K extends _AllContextPrefixes<T> ? true : false : _HasDefinedKey<T, `${K}_${string}`> : _HasDefinedKey<T, `${K}_${Context & string}` | `${K}_${Context & string}_zero` | `${K}_${Context & string}_one` | `${K}_${Context & string}_two` | `${K}_${Context & string}_few` | `${K}_${Context & string}_many` | `${K}_${Context & string}_other`>
i18next_IfOptionalOptionstypeunknown
i18next_ReturnEmptyStringtypetrue
i18next$IsResourcesDefinedtypefalse
i18next_AllContextPrefixestype[T] extends [unknown] ? _ContextPrefixes<T>[0] : never
i18next_DefinedContextKeystype{ [P in keyof T as P extends Pattern ? [T[P]] extends [undefined] ? never : P : never]: true; }
i18next_ParseInterpolationtypetrue
i18next_SelectorOptionsArgtype[options?: Opts | undefined]
i18next_StripFormatOptionstypeF extends `${infer Name}(${string})` ? Name : F
i18next_InterpolationPrefixtype"{{"
i18next_InterpolationSuffixtype"}}"
i18next_ParsesMessageFormattypefalse
i18next_UnionToIntersectiontype(T extends unknown ? (k: T) => void : never) extends (k: infer I) => void ? I : never
i18next_BuiltInFormatTypeMaptype{ number: number; currency: number; datetime: Date; relativetime: number; list: readonly string[]; }
i18next_KeysWithoutVariablestypeKey extends string ? Key : never
i18next_WithDefaultVariablestypeMap
i18next_RequiresMessageOptionstypefalse
i18next$ValueIfResourcesDefinedtypeFallback
i18next_SelectorArrayOptionsArgtype_HasPlural<R> extends true ? [options: Opts & { count: number; } & $PreservedValue<_UnionToIntersection<(DeepUnwrapPlural<R> extends `${string}{{${infer Value}}}${infer Rest}` ? (Value extends `${infer ActualValue},${infer Format}` ? [ParseActualValue<ActualValue>, TrimSpaces<Format, "">] : [ParseActualValue<Value>, never]) | (Rest extends `${string}{{${infer Value}}}${infer Rest}` ? any : never) : never) extends [infer Name extends string, infer Format] ? $UnionToIntersection<$StringKeyPathToRecordUnion<Name, _ResolveEntryType<Name, Format>>> : never>, Record<string, unknown>>] : [options?: (…
i18next_IfOptionalDefaultOptionstypeunknown
i18next_StrictInterpolationCheckstypefalse
i18next_InterpolationFormatTypeMaptype{}
i18next_InterpolationMapFromEntriestype((E extends [infer Name extends string, infer Format] ? $StringKeyPathToRecord<Name, _ResolveEntryType<Name, Format>> : never) extends unknown ? (k: E extends [infer Name extends string, infer Format] ? $StringKeyPathToRecord<Name, _ResolveEntryType<Name, Format>> : never) => void : never) extends (k: infer I) => void ? I : never
i18next_InterpolationFormatSeparatortype","

변경된 시그니처

export이전이후
i18next · t<const Key extends ParseKeys<["translation", ...string[]], TOpt, EffectiveKPrefix<undefined, TOpt>> | TemplateStringsArray, const TOpt extends TOptions, Ret extends TOpt["returnObjects"] extends true ? $SpecialObject : string, const ActualOptions extends Omit<TOpt, "context"> & $PreservedValue<_UnionToIntersection<(Ret extends `${string}{{${infer Value}}}${infer Rest}` ? (Value extends `${infer ActualValue},${infer Format}` ? [ParseActualValue<ActualValue>, TrimSpaces<Format, "">] : [ParseActualValue<Value>, never]) | (Rest extends `${string}{{${infer Value}}}${infer Rest}` ? any : never) : ne…<const Key extends ParseKeys<["translation", ...string[]], TOpt, EffectiveKPrefix<undefined, TOpt>> | TemplateStringsArray, const TOpt extends TOptions, Ret extends TOpt["returnObjects"] extends true ? $SpecialObject : string, const ActualOptions extends Omit<TOpt, "context"> & $PreservedValue<_UnionToIntersection<($NoInfer<string extends Ret ? _CheckedValue<["translation", ...string[]], AppendKeyPrefix<Key, EffectiveKPrefix<undefined, TOpt>>, TOpt> : Ret> extends `${string}{{${infer Value}}}${infer Rest}` ? (Value extends `${infer ActualValue},${infer Format}` ? [ParseActualValue<ActualValue>…
i18next · TypeOptionsOmit<$MergeBy<{ returnNull: false; returnEmptyString: true; returnObjects: false; keySeparator: "."; nsSeparator: ":"; pluralSeparator: "_"; contextSeparator: "_"; defaultNS: "translation"; fallbackNS: false; compatibilityJSON: "v4"; resources: object; allowObjectInHTMLChildren: false; strictKeyChecks: false; strictInterpolationChecks: false; interpolationPrefix: "{{"; interpolationSuffix: "}}"; interpolationFormatSeparator: ","; unescapePrefix: "-"; unescapeSuffix: ""; parseInterpolation: true; enableSelector: false; interpolationFormatTypeMap: {}; defaultVariables: {}; }, CustomTypeOptions>,…Omit<$MergeBy<{ returnNull: false; returnEmptyString: false; returnObjects: false; keySeparator: "."; nsSeparator: ":"; pluralSeparator: "_"; contextSeparator: "_"; defaultNS: "translation"; fallbackNS: false; resources: object; allowObjectInHTMLChildren: false; strictKeyChecks: false; strictInterpolationChecks: true; interpolationPrefix: "{{"; interpolationSuffix: "}}"; interpolationFormatSeparator: ","; unescapePrefix: "-"; unescapeSuffix: ""; parseInterpolation: true; enableSelector: false; interpolationFormatTypeMap: {}; defaultVariables: {}; }, CustomTypeOptions>, "resources"> & { resourc…
i18next · ParseTReturnWithFallbackVal extends "" ? "" : Val extends null ? Key : ValVal extends "" ? Key : Val extends null ? Key : Val
i18next · ParseKeysWithoutVariablesstring{} extends $PreservedValue<_UnionToIntersection<(_CheckedValue<Ns, AppendKeyPrefix<string, KPrefix>, {}> extends `${string}{{${infer Value}}}${infer Rest}` ? (Value extends `${infer ActualValue},${infer Format}` ? [ParseActualValue<ActualValue>, TrimSpaces<Format, "">] : [ParseActualValue<Value>, never]) | (Rest extends `${string}{{${infer Value}}}${infer Rest}` ? any : never) : never) extends [infer Name extends string, infer Format] ? $UnionToIntersection<$StringKeyPathToRecordUnion<Name, _ResolveEntryType<Name, Format>>> : never>, Record<string, unknown>> ? string : never
i18next · KeysBuilderWithReturnObjectsKey extends _KeysOf<Res> ? Res[Key] extends $Dictionary | readonly unknown[] ? `${Key & string}.${(keyof $OmitArrayKeys<Res[Key]> extends `${infer KeyWithoutOrdinalPlural}_ordinal_zero` | `${infer KeyWithoutOrdinalPlural}_ordinal_one` | `${infer KeyWithoutOrdinalPlural}_ordinal_two` | `${infer KeyWithoutOrdinalPlural}_ordinal_few` | `${infer KeyWithoutOrdinalPlural}_ordinal_many` | `${infer KeyWithoutOrdinalPlural}_ordinal_other` ? KeyWithoutOrdinalPlural | ((`${KeyWithoutOrdinalPlural}_ordinal_zero` | `${KeyWithoutOrdinalPlural}_ordinal_one` | `${KeyWithoutOrdinalPlural}_ordinal_two` | `${Key…Key extends _KeysOf<Res> ? Res[Key] extends $Dictionary | readonly unknown[] ? `${Key & string}.${WithOrWithoutPlural<keyof $OmitArrayKeys<Res[Key]>> & string}` | `${Key & string}.${KeysBuilderWithReturnObjects<Res[Key], keyof Res[Key]> & string}` : never : never

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

memberimport이전
InitOptions.locizeLastUsedi18next{ projectId: string; apiKey?: string | undefined; referenceLng?: string | undefined; version?: string | undefined; debounceSubmit?: number | undefined; allowedHosts?: readonly string[] | undefined; } | undefined
InitOptions.compatibilityJSONi18next"v4" | undefined
CloneOptions.locizeLastUsedi18next{ projectId: string; apiKey?: string | undefined; referenceLng?: string | undefined; version?: string | undefined; debounceSubmit?: number | undefined; allowedHosts?: readonly string[] | undefined; } | undefined
CloneOptions.compatibilityJSONi18next"v4" | undefined
ReactOptions.nsModei18next"fallback" | "default" | undefined
ReactOptions.bindI18ni18nextstring | false | undefined
ReactOptions.unescapei18next((str: string) => string) | undefined
ReactOptions.keyPrefixi18nextstring | (($: any) => any) | undefined
ReactOptions.useSuspensei18nextboolean | undefined
ReactOptions.hashTransKeyi18next((defaultValue: unknown) => unknown) | undefined
ReactOptions.bindI18nStorei18nextstring | false | undefined
ReactOptions.transDefaultPropsi18next{ tOptions?: TOptions<$Dictionary> | undefined; values?: object | undefined; shouldUnescape?: boolean | undefined; components?: readonly unknown[] | { readonly [tagName: string]: unknown; } | undefined; } | undefined
ReactOptions.defaultTransParenti18nextstring | undefined
ReactOptions.transWrapTextNodesi18nextstring | undefined
ReactOptions.transEmptyNodeValuei18nextstring | undefined
ReactOptions.transKeepBasicHtmlNodesFori18nextreadonly string[] | undefined
ReactOptions.transSupportBasicHtmlNodesi18nextboolean | undefined
InterpolationOptions.prefixEscapedi18nextstring | undefined
InterpolationOptions.suffixEscapedi18nextstring | undefined
InterpolationOptions.nestingPrefixEscapedi18nextstring | undefined
InterpolationOptions.nestingSuffixEscapedi18nextstring | undefined

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

member이전이후
WithT.t<const Key extends ParseKeys<Ns, TOpt, EffectiveKPrefix<undefined, TOpt>> | TemplateStringsArray, const TOpt extends TOptions, Ret extends TOpt["returnObjects"] extends true ? $SpecialObject : string, const ActualOptions extends Omit<TOpt, "context"> & $PreservedValue<_UnionToIntersection<(Ret exten…<const Key extends ParseKeys<Ns, TOpt, EffectiveKPrefix<undefined, TOpt>> | TemplateStringsArray, const TOpt extends TOptions, Ret extends TOpt["returnObjects"] extends true ? $SpecialObject : string, const ActualOptions extends Omit<TOpt, "context"> & $PreservedValue<_UnionToIntersection<($NoInfer<…

새로 지원 중단됨

export@deprecated
i18next · InitOptions.cleanCodecanonical codes are the default since v27
i18next · CloneOptions.cleanCodecanonical codes are the default since v27

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

이전이후
engines.node—>=22

이 데이터를 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

자주 묻는 질문

i18next을(를) 26에서 27(으)로 업그레이드할 때 호환성이 깨지는 변경은 무엇인가요?

i18next 26.7.2과 27.0.0 사이에서 Vigia는 삭제된 export 87개, 변경된 시그니처 5개, 삭제되거나 변경된 클래스·인터페이스 멤버 22개를 찾았습니다.

i18next 27에서 지원 중단된 것은 무엇인가요?

i18next 27.0.0에서 export 또는 멤버 2개가 새로 지원 중단으로 표시되었습니다.

에이전트용

GET https://vigia.coredls.cloud/v1/packages/npm/i18next/upgrade?from=26.7.2&to=27.0.0