Skip to content

插件API

类型为 hook 的都是钩子名称,用 tap(钩子名称, callback) 进行订阅。

WARNING

请先阅读插件设计

Transformer

源代码解析器,包含三个 hooks : beforeTransform, transforming, afterTransform

beforeTransform

  • type:
js
Notify<{
    transformCode: () => void;
    pluginLoaded: (plugins: Plugin[]) => void;
}>

源代码解析前

transformCode

  • type: hook

当执行 transformCode 函数时,在生成 AST 之前触发,可用来获取配置参数。

transforming

  • type:
js
Notify<{
    transformCode: (hook: ParseASTType.Hooks) => void;
}>

源代码解析中

transformCode

  • type: hook

当执行 transformCode 函数时,并且正在解析代码过程中触发,可在回调函数中获取到所有解析步骤中的 hooks

ts
transformer.transforming.tap('transformCode', (hooks) => {

});

afterTransform

  • type:
js
Notify<{
    transformCode: () => void;
}>

源代码解析后

transformCode

  • type: hook
  • callback: (code: string) => string

当执行 transformCode 函数后,已经生成了转化后代码, 可以用此钩子修改最终代码。

parseHTML

html 代码解析器。

parse

html代码解析前

parseCode

  • type: hook
  • callback: (ast: ParseRootNode) => void

当执行 parseCode 函数时, 开始提取语料前触发,可以在回调函数中获取到ast并对ast进行自定义处理。

ignoreLines

  • type: hook
  • callback: (lines: number[]) => number[]

处理代码中所有需要忽略的代码行,默认解析 tci18n-ignore-line 标记的代码,可以在此自定义解析需要忽略的代码行。

parsing.parseHTML

解析源代码中的html代码

parseNode

  • type: hook
  • callback: (node: ParseChildNode) => void

解析html节点触发,可以在此对AST节点进行处理。

parseAttrs

  • type: hook
  • callback: (node: ParseChildNode) => void

解析html节点所有属性触发,可以在此对AST属性节点进行处理。

parseAttr

  • type: hook
  • callback: (node: ParseChildNode, attr: string) => void

解析html节点单个属性触发,可以在此对AST属性单个节点进行处理。

parseInnerText

  • type: hook
  • callback: (node: ParseChildNode) => void

解析html节点 innerText 内容时候触发,可以在此对AST节点中的 innerText 进行处理。

parsing.parseJS

解析源代码中的js代码, 同 parseJS

parsed

html代码解析后

parseCode

  • type: hook
  • callback: (code: string) => string

解析html代码完成后触发,可以在此对解析后的代码做自定义处理。

parseJS

javascript 代码解析器。

parse

javascript 代码解析前

ignoreLines

  • type: hook
  • callback: (lines: number[]) => number[]

处理代码中所有需要忽略的代码行,默认解析 tci18n-ignore-line 标记的代码,可以在此自定义解析需要忽略的代码行。

parsing

javascript 代码解析中

TemplateLiteral

  • type: hook
  • callback: (path: babel.NodePath<babel.types.TemplateLiteral>) => HookReturn

解析AST模板字符串触发

StringLiteral

  • type: hook
  • callback: (path: babel.NodePath<babel.types.StringLiteral>) => HookReturn

解析AST普通字符串触发

ImportDeclaration

  • type: hook
  • callback: (path: babel.NodePath<babel.types.ImportDeclaration>) => HookReturn

解析AST import 依赖时触发

ExpressionStatement

  • type: hook
  • callback: (path: babel.NodePath<babel.types.ExpressionStatement>) => HookReturn

解析AST表达式语句时触发

Identifier

  • type: hook
  • callback: (path: babel.NodePath<babel.types.Identifier>) => HookReturn

解析AST标识符语句时触发

DirectiveLiteral

  • type: hook
  • callback: (path: babel.NodePath<babel.types.DirectiveLiteral>) => HookReturn

解析AST指令字符串语句时触发

ObjectExpression

  • type: hook
  • callback: (path: babel.NodePath<babel.types.ObjectExpression>) => HookReturn

解析AST对象表达式语句时触发

CallExpression

  • type: hook
  • callback: (path: babel.NodePath<babel.types.CallExpression>) => HookReturn

解析AST函数调用语句时触发

ArrowFunctionExpression

  • type: hook
  • callback: (path: babel.NodePath<babel.types.ArrowFunctionExpression>) => HookReturn

解析AST箭头函数语句时触发

ObjectMethod

  • type: hook
  • callback: (path: babel.NodePath<babel.types.ObjectMethod>) => HookReturn

解析AST对象函数语句时触发

FunctionDeclaration

  • type: hook
  • callback: (path: babel.NodePath<babel.types.FunctionDeclaration>) => HookReturn

解析AST函数声明语句时触发

JSXElement

  • type: hook
  • callback: (path: babel.NodePath<babel.types.JSXElement & { ignore?: boolean }>) => HookReturn

解析AST的JSX元素语句时触发

JSXText

  • type: hook
  • callback: (path: babel.NodePath<babel.types.JSXText>) => HookReturn

解析AST的JSX文本语句时触发

JSXAttribute

  • type: hook
  • callback: (path: babel.NodePath<babel.types.JSXAttribute>) => HookReturn

解析AST的JSX属性语句时触发

makeI18nFunction

  • type: hook
  • callback: (args: (babel.types.ArgumentPlaceholder | babel.types.SpreadElement | babel.types.Expression)[], t: @babel/types) => void

解析替换函数AST代码时触发

parsed

javascript 代码解析后

parseCode

  • type: hook
  • callback: (code: string) => string

解析 javascript 代码完成后触发,可以在此对解析后的代码做自定义处理。

parseVUE

Vue 代码解析器。

parse

Vue 代码解析前

parseCode

  • type: hook
  • callback: (code: string) => string

解析 Vue 代码前触发,可以在此对源代码进行自定义处理。

parseSFC

  • type: hook
  • callback: (sfc: SFC) => void

解析 Vue SFC结构时触发,可以在此对SFC进行处理。

parseTemplate

  • type: hook
  • callback: (template: SFCTemplateBlock) => void

解析 Vue.template 代码时触发,可以在此对SFC的 template 模板代码进行处理。

parseScript

  • type: hook
  • callback: (script: SFCBlock) => void

解析 Vue.script 代码时触发,可以在此对SFC的 script 脚本代码进行处理。

parsing.template

Vue.template 代码解析中触发,同 parseHTML

parsing.script

Vue.script 代码解析中触发,同 parseJS

parsed

Vue 代码解析后

parseCode

  • type: hook
  • callback: (code: string, sourceCode: string) => string

解析 Vue 代码完成后触发,可以在此对解析后的代码做自定义处理。

parseTemplate

  • type: hook
  • callback: (template: SFCTemplateBlock) => void

解析 Vue.template 代码完成后触发,可以在此对SFC的 template 模板代码进行处理。

parseScript

  • type: hook
  • callback: (script: SFCBlock) => void

解析 Vue.script 代码完成后触发,可以在此对SFC的 script 脚本代码进行处理。