Vigia

将 postcss 从 7.x 升级到 8.x

根据 TypeScript 类型自动比较 postcss 7.0.39 与 8.5.33 的公开 API。签名变化表示可能存在不兼容变更,并非确定结论。

概要

已删除的导入路径0
已删除的导出31
已修改的签名23
已删除的类或接口成员9
已修改的类或接口成员149
新增弃用0
要求变化(engines、peer 依赖)1
新增导出25

已删除的导出

importexportkind之前
postcsspluginfunction<T>(name: string, initializer: PluginInitializer<T>): Plugin<T>
postcssvendornamespacenamespace
postcssJsonNodeinterfaceinterface
postcssJsonRootinterfaceinterface
postcssJsonRuleinterfaceinterface
postcssNodeBaseinterfaceinterface
postcssNodeRawsinterfaceinterface
postcssRuleRawsinterfaceinterface
postcssResultMapinterfaceinterface
postcssAtRuleRawsinterfaceinterface
postcssJsonAtRuleinterfaceinterface
postcssNodeSourceinterfaceinterface
postcssInputOrigininterfaceinterface
postcssJsonCommentinterfaceinterface
postcssParserInputtypestring | { toString(): string; }
postcssPreviousMapclassclass
postcssNodeNewPropsinterfaceinterface
postcssRootNewPropsinterfaceinterface
postcssRuleNewPropsinterfaceinterface
postcssContainerBaseinterfaceinterface
postcssContainerRawsinterfaceinterface
postcssJsonContainerinterfaceinterface
postcssResultMessageinterfaceinterface
postcssResultOptionsinterfaceinterface
postcssAtRuleNewPropsinterfaceinterface
postcssCommentNewPropsinterfaceinterface
postcssDeclarationRawsinterfaceinterface
postcssJsonDeclarationinterfaceinterface
postcssContainerNewPropsinterfaceinterface
postcssPluginInitializerinterfaceinterface
postcssDeclarationNewPropsinterfaceinterface

已修改的签名

export之前之后
postcss · NodeRoot | ChildNodeclass
postcss · Rootinterfaceclass
postcss · Ruleinterfaceclass
postcss · decl(defaults?: DeclarationNewProps | undefined): Declaration(defaults?: DeclarationProps | undefined): Declaration_
postcss · listnamespaceList
postcss · root(defaults?: object | undefined): Root(defaults?: RootProps | undefined): Root_
postcss · rule(defaults?: RuleNewProps | undefined): Rule(defaults?: RuleProps | undefined): Rule_
postcss · Inputinterfaceclass
postcss · parse(css: ParserInput, opts?: Pick<ProcessOptions, "map" | "from"> | undefined): Root(css: string | { toString(): string; }, opts?: Pick<ProcessOptions<Root_ | Document_>, "document" | "from" | "map" | "unsafeMap"> | undefined): Root_
postcss · AtRuleinterfaceclass
postcss · Resultinterfaceclass
postcss · atRule(defaults?: AtRuleNewProps | undefined): AtRule(defaults?: AtRuleProps | undefined): AtRule_
postcss · Commentinterfaceclass
postcss · Warninginterfaceclass
postcss · comment(defaults?: CommentNewProps | undefined): Comment(defaults?: CommentProps | undefined): Comment_
postcss · ChildNodeComment | AtRule | Declaration | RuleComment_ | AtRule_ | Declaration_ | Rule_
postcss · ContainerAtRule | Rule | Rootclass
postcss · Processorinterfaceclass
postcss · stringify(node: Node, builder: Builder): void(node: AnyNode, builder: Builder): void
postcss · LazyResultinterfaceclass
postcss · Declarationinterfaceclass
postcss · AcceptedPluginPlugin<any> | Transformer | { postcss: TransformCallback | Processor; } | ProcessorProcessor_ | { postcss: Processor_ | TransformCallback; } | OldPlugin<any> | Plugin | PluginCreator<any> | TransformCallback
postcss · CssSyntaxErrorinterfaceclass

已删除的类或接口成员

memberimport之前
Plugin.postcsspostcss(root: Root, result: Result): any
Plugin.processpostcss(css: string | Result | { toString(): string; }, processOpts?: ProcessOptions | undefined, pluginOpts?: T | undefined): LazyResult
Plugin.postcssVersionpostcssstring | undefined
WarningOptions.topostcssstring | undefined
WarningOptions.mappostcssboolean | SourceMapOptions | undefined
WarningOptions.frompostcssstring | undefined
WarningOptions.parserpostcssParser | undefined
WarningOptions.syntaxpostcssSyntax | undefined
WarningOptions.stringifierpostcssStringifier | undefined

已修改的类或接口成员

member之前之后
Root.each(callback: (node: ChildNode, index: number) => void): void | (callback: (node: ChildNode, index: number) => boolean): boolean(callback: (node: ChildNode, index: number) => false | void): false | undefined
Root.rawsNodeRawsRootRaws
Root.root(): Root(): Root_
Root.some(callback: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean(condition: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean
Root.walk(callback: (node: ChildNode, index: number) => void): void | (callback: (node: ChildNode, index: number) => boolean): boolean(callback: (node: ChildNode, index: number) => false | void): false | undefined
Root.warn(result: Result, text: string, opts?: WarningOptions | undefined): void(result: Result_<Root_ | Document_>, message: string, options?: WarningOptions | undefined): Warning_
Root.after(newNode: string | object | Node | Node[]): Root(newNode: string | Node | ChildProps | readonly Node[] | undefined): Root_
Root.clone(overrides?: object | undefined): Root(overrides?: Partial<RootProps> | undefined): Root_
Root.error(message: string, options?: NodeErrorOptions | undefined): CssSyntaxError(message: string, options?: NodeErrorOptions | undefined): CssSyntaxError_
Root.every(callback: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean(condition: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean
Root.nodesChildNode[] | undefinedChildNode[]
Root.append(...nodes: (string | object | Node)[]): Root(...nodes: NewChild[]): Root_
Root.before(newNode: string | object | Node | Node[]): Root(newNode: string | Node | ChildProps | readonly Node[] | undefined): Root_
Root.parentvoidDocument_ | undefined
Root.remove(): Root(): Root_
Root.sourceNodeSource | undefinedSource | undefined
Root.prepend(...nodes: (string | object | Node)[]): Root(...nodes: NewChild[]): Root_
Root.toResult(options?: { to?: string | undefined; map?: SourceMapOptions | undefined; } | undefined): Result(options?: ProcessOptions<Root_ | Document_> | undefined): Result_<Root_ | Document_>
Root.toString(stringifier?: Stringifier | Syntax | undefined): string(stringifier?: Stringifier | Syntax<Root_ | Document_> | undefined): string
Root.removeAll(): Root(): Root_
Root.walkDecls(propFilter: string | RegExp, callback: (decl: Declaration, index: number) => void): void | (callback: (decl: Declaration, index: number) => void): void | (propFilter: string | RegExp, callback: (decl: Declaration, index: number) => boolean): boolean | (callback: (decl: Declaration, index: number) =…(propFilter: string | RegExp, callback: (decl: Declaration_, index: number) => false | void): false | undefined | (callback: (decl: Declaration_, index: number) => false | void): false | undefined
Root.walkRules(selectorFilter: string | RegExp, callback: (atRule: Rule, index: number) => void): void | (callback: (atRule: Rule, index: number) => void): void | (selectorFilter: string | RegExp, callback: (atRule: Rule, index: number) => boolean): boolean | (callback: (atRule: Rule, index: number) => boolean): …(selectorFilter: string | RegExp, callback: (rule: Rule_, index: number) => false | void): false | undefined | (callback: (rule: Rule_, index: number) => false | void): false | undefined
Root.cloneAfter(overrides?: object | undefined): Root(overrides?: Partial<RootProps> | undefined): Root_
Root.cloneBefore(overrides?: object | undefined): Root(overrides?: Partial<RootProps> | undefined): Root_
Root.insertAfter(oldNode: number | ChildNode, newNode: string | object | ChildNode): Root(oldNode: number | ChildNode, newNode: NewChild): Root_
Root.removeChild(child: number | ChildNode): Root(child: number | ChildNode): Root_
Root.replaceWith(...nodes: (object | Node)[]): Root(...nodes: NewChild[]): Root_
Root.walkAtRules(nameFilter: string | RegExp, callback: (atRule: AtRule, index: number) => void): void | (callback: (atRule: AtRule, index: number) => void): void | (nameFilter: string | RegExp, callback: (atRule: AtRule, index: number) => boolean): boolean | (callback: (atRule: AtRule, index: number) => boolean): …(nameFilter: string | RegExp, callback: (atRule: AtRule_, index: number) => false | void): false | undefined | (callback: (atRule: AtRule_, index: number) => false | void): false | undefined
Root.insertBefore(oldNode: number | ChildNode, newNode: string | object | ChildNode): Root(oldNode: number | ChildNode, newNode: NewChild): Root_
Root.walkComments(callback: (comment: Comment, indexed: number) => void): void | (callback: (comment: Comment, indexed: number) => boolean): boolean(callback: (comment: Comment_, indexed: number) => false | void): false | undefined
Root.replaceValues(pattern: string | RegExp, options: { props?: string[] | undefined; fast?: string | undefined; }, callbackOrReplaceValue: string | ((substring: string, ...args: any[]) => string)): Root | (pattern: string | RegExp, callbackOrReplaceValue: string | ((substring: string, ...args: any[]) => string)): Ro…(pattern: string | RegExp, replaced: string | ((substring: string, ...args: any[]) => string)): Root_ | (pattern: string | RegExp, options: ValueOptions, replaced: string | ((substring: string, ...args: any[]) => string)): Root_
Rule.each(callback: (node: ChildNode, index: number) => void): void | (callback: (node: ChildNode, index: number) => boolean): boolean(callback: (node: ChildNode, index: number) => false | void): false | undefined
Rule.rawsNodeRawsRuleRaws
Rule.root(): Root(): Root_
Rule.some(callback: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean(condition: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean
Rule.walk(callback: (node: ChildNode, index: number) => void): void | (callback: (node: ChildNode, index: number) => boolean): boolean(callback: (node: ChildNode, index: number) => false | void): false | undefined
Rule.warn(result: Result, text: string, opts?: WarningOptions | undefined): void(result: Result_<Root_ | Document_>, message: string, options?: WarningOptions | undefined): Warning_
Rule.after(newNode: string | object | Node | Node[]): Rule(newNode: string | Node | ChildProps | readonly Node[] | undefined): Rule_
Rule.clone(overrides?: object | undefined): Rule(overrides?: Partial<RuleProps> | undefined): Rule_
Rule.error(message: string, options?: NodeErrorOptions | undefined): CssSyntaxError(message: string, options?: NodeErrorOptions | undefined): CssSyntaxError_
Rule.every(callback: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean(condition: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean
Rule.nodesChildNode[] | undefinedChildNode[]
Rule.append(...nodes: (string | object | Node)[]): Rule(...nodes: NewChild[]): Rule_
Rule.before(newNode: string | object | Node | Node[]): Rule(newNode: string | Node | ChildProps | readonly Node[] | undefined): Rule_
Rule.parentContainerContainerWithChildren | undefined
Rule.remove(): Rule(): Rule_
Rule.sourceNodeSource | undefinedSource | undefined
Rule.prepend(...nodes: (string | object | Node)[]): Rule(...nodes: NewChild[]): Rule_
Rule.toString(stringifier?: Stringifier | Syntax | undefined): string(stringifier?: Stringifier | Syntax<Root_ | Document_> | undefined): string
Rule.removeAll(): Rule(): Rule_
Rule.walkDecls(propFilter: string | RegExp, callback: (decl: Declaration, index: number) => void): void | (callback: (decl: Declaration, index: number) => void): void | (propFilter: string | RegExp, callback: (decl: Declaration, index: number) => boolean): boolean | (callback: (decl: Declaration, index: number) =…(propFilter: string | RegExp, callback: (decl: Declaration_, index: number) => false | void): false | undefined | (callback: (decl: Declaration_, index: number) => false | void): false | undefined
Rule.walkRules(selectorFilter: string | RegExp, callback: (atRule: Rule, index: number) => void): void | (callback: (atRule: Rule, index: number) => void): void | (selectorFilter: string | RegExp, callback: (atRule: Rule, index: number) => boolean): boolean | (callback: (atRule: Rule, index: number) => boolean): …(selectorFilter: string | RegExp, callback: (rule: Rule_, index: number) => false | void): false | undefined | (callback: (rule: Rule_, index: number) => false | void): false | undefined
Rule.cloneAfter(overrides?: object | undefined): Rule(overrides?: Partial<RuleProps> | undefined): Rule_
Rule.cloneBefore(overrides?: object | undefined): Rule(overrides?: Partial<RuleProps> | undefined): Rule_
Rule.insertAfter(oldNode: number | ChildNode, newNode: string | object | ChildNode): Rule(oldNode: number | ChildNode, newNode: NewChild): Rule_
Rule.removeChild(child: number | ChildNode): Rule(child: number | ChildNode): Rule_
Rule.replaceWith(...nodes: (object | Node)[]): Rule(...nodes: NewChild[]): Rule_
Rule.walkAtRules(nameFilter: string | RegExp, callback: (atRule: AtRule, index: number) => void): void | (callback: (atRule: AtRule, index: number) => void): void | (nameFilter: string | RegExp, callback: (atRule: AtRule, index: number) => boolean): boolean | (callback: (atRule: AtRule, index: number) => boolean): …(nameFilter: string | RegExp, callback: (atRule: AtRule_, index: number) => false | void): false | undefined | (callback: (atRule: AtRule_, index: number) => false | void): false | undefined
Rule.insertBefore(oldNode: number | ChildNode, newNode: string | object | ChildNode): Rule(oldNode: number | ChildNode, newNode: NewChild): Rule_
Rule.walkComments(callback: (comment: Comment, indexed: number) => void): void | (callback: (comment: Comment, indexed: number) => boolean): boolean(callback: (comment: Comment_, indexed: number) => false | void): false | undefined
Rule.replaceValues(pattern: string | RegExp, options: { props?: string[] | undefined; fast?: string | undefined; }, callbackOrReplaceValue: string | ((substring: string, ...args: any[]) => string)): Rule | (pattern: string | RegExp, callbackOrReplaceValue: string | ((substring: string, ...args: any[]) => string)): Ru…(pattern: string | RegExp, replaced: string | ((substring: string, ...args: any[]) => string)): Rule_ | (pattern: string | RegExp, options: ValueOptions, replaced: string | ((substring: string, ...args: any[]) => string)): Rule_
Input.mapPreviousMapPreviousMap_
Input.origin(line: number, column: number): false | InputOrigin(line: number, column: number, endLine?: number | undefined, endColumn?: number | undefined): false | FilePosition
AtRule.each(callback: (node: ChildNode, index: number) => void): void | (callback: (node: ChildNode, index: number) => boolean): boolean(callback: (node: ChildNode, index: number) => false | void): false | undefined
AtRule.rawsNodeRawsAtRuleRaws
AtRule.root(): Root(): Root_
AtRule.some(callback: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean(condition: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean
AtRule.walk(callback: (node: ChildNode, index: number) => void): void | (callback: (node: ChildNode, index: number) => boolean): boolean(callback: (node: ChildNode, index: number) => false | void): false | undefined
AtRule.warn(result: Result, text: string, opts?: WarningOptions | undefined): void(result: Result_<Root_ | Document_>, message: string, options?: WarningOptions | undefined): Warning_
AtRule.after(newNode: string | object | Node | Node[]): AtRule(newNode: string | Node | ChildProps | readonly Node[] | undefined): AtRule_
AtRule.clone(overrides?: object | undefined): AtRule(overrides?: Partial<AtRuleProps> | undefined): AtRule_
AtRule.error(message: string, options?: NodeErrorOptions | undefined): CssSyntaxError(message: string, options?: NodeErrorOptions | undefined): CssSyntaxError_
AtRule.every(callback: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean(condition: (node: ChildNode, index: number, nodes: ChildNode[]) => boolean): boolean
AtRule.append(...nodes: (string | object | Node)[]): AtRule(...nodes: NewChild[]): AtRule_
AtRule.before(newNode: string | object | Node | Node[]): AtRule(newNode: string | Node | ChildProps | readonly Node[] | undefined): AtRule_
AtRule.parentContainerContainerWithChildren | undefined
AtRule.remove(): AtRule(): AtRule_
AtRule.sourceNodeSource | undefinedSource | undefined
AtRule.prepend(...nodes: (string | object | Node)[]): AtRule(...nodes: NewChild[]): AtRule_
AtRule.toString(stringifier?: Stringifier | Syntax | undefined): string(stringifier?: Stringifier | Syntax<Root_ | Document_> | undefined): string
AtRule.removeAll(): AtRule(): AtRule_
AtRule.walkDecls(propFilter: string | RegExp, callback: (decl: Declaration, index: number) => void): void | (callback: (decl: Declaration, index: number) => void): void | (propFilter: string | RegExp, callback: (decl: Declaration, index: number) => boolean): boolean | (callback: (decl: Declaration, index: number) =…(propFilter: string | RegExp, callback: (decl: Declaration_, index: number) => false | void): false | undefined | (callback: (decl: Declaration_, index: number) => false | void): false | undefined
AtRule.walkRules(selectorFilter: string | RegExp, callback: (atRule: Rule, index: number) => void): void | (callback: (atRule: Rule, index: number) => void): void | (selectorFilter: string | RegExp, callback: (atRule: Rule, index: number) => boolean): boolean | (callback: (atRule: Rule, index: number) => boolean): …(selectorFilter: string | RegExp, callback: (rule: Rule_, index: number) => false | void): false | undefined | (callback: (rule: Rule_, index: number) => false | void): false | undefined
AtRule.cloneAfter(overrides?: object | undefined): AtRule(overrides?: Partial<AtRuleProps> | undefined): AtRule_
AtRule.cloneBefore(overrides?: object | undefined): AtRule(overrides?: Partial<AtRuleProps> | undefined): AtRule_
AtRule.insertAfter(oldNode: number | ChildNode, newNode: string | object | ChildNode): AtRule(oldNode: number | ChildNode, newNode: NewChild): AtRule_
AtRule.removeChild(child: number | ChildNode): AtRule(child: number | ChildNode): AtRule_
AtRule.replaceWith(...nodes: (object | Node)[]): AtRule(...nodes: NewChild[]): AtRule_
AtRule.walkAtRules(nameFilter: string | RegExp, callback: (atRule: AtRule, index: number) => void): void | (callback: (atRule: AtRule, index: number) => void): void | (nameFilter: string | RegExp, callback: (atRule: AtRule, index: number) => boolean): boolean | (callback: (atRule: AtRule, index: number) => boolean): …(nameFilter: string | RegExp, callback: (atRule: AtRule_, index: number) => false | void): false | undefined | (callback: (atRule: AtRule_, index: number) => false | void): false | undefined
AtRule.insertBefore(oldNode: number | ChildNode, newNode: string | object | ChildNode): AtRule(oldNode: number | ChildNode, newNode: NewChild): AtRule_
AtRule.walkComments(callback: (comment: Comment, indexed: number) => void): void | (callback: (comment: Comment, indexed: number) => boolean): boolean(callback: (comment: Comment_, indexed: number) => false | void): false | undefined
AtRule.replaceValues(pattern: string | RegExp, options: { props?: string[] | undefined; fast?: string | undefined; }, callbackOrReplaceValue: string | ((substring: string, ...args: any[]) => string)): AtRule | (pattern: string | RegExp, callbackOrReplaceValue: string | ((substring: string, ...args: any[]) => string)): …(pattern: string | RegExp, replaced: string | ((substring: string, ...args: any[]) => string)): AtRule_ | (pattern: string | RegExp, options: ValueOptions, replaced: string | ((substring: string, ...args: any[]) => string)): AtRule_
Plugin.postcssPluginstring | undefinedstring
Result.mapResultMapany
Result.optsResultOptions | undefinedResultOptions
Result.rootRoot | undefinedRootNode
Result.warn(message: string, options?: WarningOptions | undefined): void(message: string, options?: WarningOptions | undefined): Warning_
Result.messagesResultMessage[]Message[]
Result.warnings(): Warning[](): Warning_[]
Result.processorProcessor | undefinedProcessor_
Syntax.parseParser | undefinedParser<RootNode> | undefined
Comment.rawsNodeRawsCommentRaws
Comment.root(): Root(): Root_
Comment.warn(result: Result, text: string, opts?: WarningOptions | undefined): void(result: Result_<Root_ | Document_>, message: string, options?: WarningOptions | undefined): Warning_
Comment.after(newNode: string | object | Node | Node[]): Comment(newNode: string | Node | ChildProps | readonly Node[] | undefined): Comment_
Comment.clone(overrides?: object | undefined): Comment(overrides?: Partial<CommentProps> | undefined): Comment_
Comment.error(message: string, options?: NodeErrorOptions | undefined): CssSyntaxError(message: string, options?: NodeErrorOptions | undefined): CssSyntaxError_
Comment.before(newNode: string | object | Node | Node[]): Comment(newNode: string | Node | ChildProps | readonly Node[] | undefined): Comment_
Comment.parentContainerContainer_<ChildNode> | undefined
Comment.remove(): Comment(): Comment_
Comment.sourceNodeSource | undefinedSource | undefined
Comment.toString(stringifier?: Stringifier | Syntax | undefined): string(stringifier?: Stringifier | Syntax<Root_ | Document_> | undefined): string
Comment.cloneAfter(overrides?: object | undefined): Comment(overrides?: Partial<CommentProps> | undefined): Comment_
Comment.cloneBefore(overrides?: object | undefined): Comment(overrides?: Partial<CommentProps> | undefined): Comment_
Comment.replaceWith(...nodes: (object | Node)[]): Comment(...nodes: NewChild[]): Comment_
Processor.use(plugin: AcceptedPlugin): Processor(plugin: AcceptedPlugin): Processor_
Processor.pluginsPlugin<any>[](Plugin | TransformCallback | Transformer)[]
Processor.process(css: Root | Result | LazyResult | ParserInput, options?: ProcessOptions | undefined): LazyResult(css: string | Root_ | Result_<Root_ | Document_> | { toString(): string; } | LazyResult_<Root_ | Document_>): LazyResult_<Root_ | Document_> | NoWorkResult_ | <RootNode extends Document | Root = Root_>(css: string | Root_ | Result_<Root_ | Document_> | LazyResult_<Root_ | Document_> | { toString():…
LazyResult.mapResultMapany
LazyResult.rootRootRootNode
LazyResult.then<TResult1 = Result, TResult2 = never>(onfulfilled?: ((value: Result) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null | undefined): Promise<TResult1 | TResult2><TResult1 = Result_<RootNode>, TResult2 = never>(onfulfilled?: ((value: Result_<RootNode>) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null | undefined): Promise<TResult1 | TResult2>
LazyResult.catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<Result | TResult><TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<Result_<RootNode> | TResult>
LazyResult.messagesResultMessage[]Message[]
LazyResult.warnings(): Warning[](): Warning_[]
LazyResult.processorProcessorProcessor_
Declaration.rawsNodeRawsDeclarationRaws
Declaration.root(): Root(): Root_
Declaration.warn(result: Result, text: string, opts?: WarningOptions | undefined): void(result: Result_<Root_ | Document_>, message: string, options?: WarningOptions | undefined): Warning_
Declaration.after(newNode: string | object | Node | Node[]): Declaration(newNode: string | Node | ChildProps | readonly Node[] | undefined): Declaration_
Declaration.clone(overrides?: object | undefined): Declaration(overrides?: Partial<DeclarationProps> | undefined): Declaration_
Declaration.error(message: string, options?: NodeErrorOptions | undefined): CssSyntaxError(message: string, options?: NodeErrorOptions | undefined): CssSyntaxError_
Declaration.before(newNode: string | object | Node | Node[]): Declaration(newNode: string | Node | ChildProps | readonly Node[] | undefined): Declaration_
Declaration.parentContainerContainerWithChildren | undefined
Declaration.remove(): Declaration(): Declaration_
Declaration.sourceNodeSource | undefinedSource | undefined
Declaration.toString(stringifier?: Stringifier | Syntax | undefined): string(stringifier?: Stringifier | Syntax<Root_ | Document_> | undefined): string
Declaration.importantbooleanboolean | undefined
Declaration.cloneAfter(overrides?: object | undefined): Declaration(overrides?: Partial<DeclarationProps> | undefined): Declaration_
Declaration.cloneBefore(overrides?: object | undefined): Declaration(overrides?: Partial<DeclarationProps> | undefined): Declaration_
Declaration.replaceWith(...nodes: (object | Node)[]): Declaration(...nodes: NewChild[]): Declaration_
Transformer.postcssPluginstring | undefinedstring
Transformer.postcssVersionstring | undefinedstring
CssSyntaxError.namestring"CssSyntaxError"
CssSyntaxError.inputInputOrigin | undefinedFilePosition | undefined
ProcessOptions.parserParser | undefinedParser<RootNode> | Syntax<RootNode> | undefined
ProcessOptions.syntaxSyntax | undefinedSyntax<RootNode> | undefined
ProcessOptions.stringifierStringifier | undefinedStringifier | Syntax<RootNode> | undefined
SourceMapOptions.prevanystring | boolean | object | ((file: string) => string) | undefined
SourceMapOptions.annotationstring | boolean | undefinedstring | boolean | ((file: string, root: Root_) => string) | undefined

新增弃用

未发现。

要求变化(engines、peer 依赖)

之前之后
engines.node>=6.0.0^10 || ^12 || >=14
新增导出 (25)
importexportkind
postcssSourceinterface
postcssAnyNodetype
postcssHelperstype
postcssMessageinterface
postcssPostcsstype
postcssdefaultfunction
postcssDocumentclass
postcssNewChildtype
postcssPositioninterface
postcssdocumentfunction
postcssfromJSONvariable
postcssNodePropsinterface
postcssOldPlugininterface
postcssRootPropsinterface
postcssRulePropstype
postcssSourceMaptype
postcssChildPropstype
postcssAtRulePropsinterface
postcssCommentPropsinterface
postcssFilePositioninterface
postcssJSONHydratorinterface
postcssDocumentPropsinterface
postcssPluginCreatorinterface
postcssContainerPropsinterface
postcssDeclarationPropsinterface

把这些数据交给你的 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

常见问题

将 postcss 从 7 升级到 8 有哪些不兼容变更?

在 postcss 7.0.39 与 8.5.33 之间,Vigia 发现 31 个已删除的导出、23 个已修改的签名,以及 158 个已删除或修改的类或接口成员。

postcss 8 中弃用了哪些内容?

postcss 8.5.33 中有 0 个导出或成员新被标记为弃用。

供智能体使用

GET https://vigia.coredls.cloud/v1/packages/npm/postcss/upgrade?from=7.0.39&to=8.5.33