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