vinyl-fs
做文件处理管理;加载 input
文件,options
配置解析器,output
输出文件lngs
和 ns
的 loadPath
文件,并存入内存数据结构中extensions
时,使用解析器实例做相应处理
Func
如 i18next.t('key')
func.list
配置,拼接 key
部分的正则,匹配文件内容获取函数的 key
部分{}[]()
栈结构获取函数的参数部分,并用 esprima
做解析,得到各属性名,取其中的以下属性作为配置数据
defaultValue
defaultValue_plural
count: number
配置了即说明存在复数形式context: any
上下文数据ns
keySeparator
nsSeparator
Attr
如 data-i18n="key"
parse5
得到 ast
attrs.list
的属性,得到 key
Comp
如 <Trans />
acorn
+acorn-stage3
+acornJsx
得到 ast
(所以不支持.tsx
)acorn-walk
遍历节点,对 JSXElement
即组件元素进行判断取组件属性key
、默认值等配置nsSeparator
拆分,得到 ns
;按 keySeparator
拆分,得到分层级的 key
key
key
的 value
key
/value
存入 lngs
下对应 ns
this.push
+vinyl
生成对应的文件← gpu.js JSON.minify →