插件API
类型为 hook
的都是钩子名称,用 tap(钩子名称, callback)
进行订阅。
WARNING
请先阅读插件设计
Transformer
- type: 查看具体类型
源代码解析器,包含三个 hooks : beforeTransform
, transforming
, afterTransform
,
beforeTransform
- type:
Notify<{
transformCode: () => void;
pluginLoaded: (plugins: Plugin[]) => void;
}>
源代码解析前
transformCode
- type:
hook
当执行 transformCode
函数时,在生成 AST
之前触发,可用来获取配置参数。
transforming
- type:
Notify<{
transformCode: (hook: ParseASTType.Hooks) => void;
}>
源代码解析中
transformCode
- type:
hook
当执行 transformCode
函数时,并且正在解析代码过程中触发,可在回调函数中获取到所有解析步骤中的 hooks。
transformer.transforming.tap('transformCode', (hooks) => {
});
afterTransform
- type:
Notify<{
transformCode: () => void;
}>
源代码解析后
transformCode
- type:
hook
- callback:
(code: string) => string
当执行 transformCode
函数后,已经生成了转化后代码, 可以用此钩子修改最终代码。
parseHTML
- type: 查看具体类型
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
- type: 查看具体类型
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
- type: 查看具体类型
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 脚本代码进行处理。