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 脚本代码进行处理。