@z-utils组 是一个可以在vue/react/pure js 中使用的工具包,它包含三个子类,分别为 @z-utils/base, @z-utils/react, @z-utils/vue 三个分别在不同区域使用。
他是原 zzy-javascript-devtools 的重构版本,在实现之前所有能力的基础上扩展了其他内容:
对内(开发):
对外(使用):
接下来主要记录一下这个包的实现过程:
到这里就结束了,随后发包即可。
ps:第五点的更新是依据最开始打包流程开始时的问询流程,并记录到更新日志内。
无论更新还是打包模式,都会走genreatorFiles.init(mode)
函数,内部通过 fast-glob
包获取到指定目录内的所有文件,稍加处理即可进行rollup多入口打包。
rollupBuild.js:
genreatorFiles
是通过 GenreatorFiles
类 new出来的实例,直接进行导出的,而不是导入后再进行new的,这点很重要。这种写法可以让其他文件引入这个实例时进行数据存储而不会丢失,类似状态存储器。目前,包内的readme.md结构分三层:header,updates log,contents
执行命令
标题内的图片中,对话式交互内如果是更新,则对当前的更新内容做记录,也是generatorReadme.addUpdateSays(say, level, mode)
做的事情。生成的内容存放在·readmes/updates.json
中:
transfrom
钩子中处理文件内容。(钩子描述)在开发插件之前,先要确认如何才能拿到我们想要的内容?
保证不会干扰文件的情况下,注释是最合适的,那么就得在注释中加入一些特殊标识来去有目标的截取我们需要用到的内容:
转换后的效果就是:
plugin-recordReadme实现:
核心就是根据正则,批量获取,更改,记录。
主要内容都已经记录,最后的组装就很简单了:
generatorContent
方法是将之前记录的注释内容遍历改造为字符串内容。
这个步骤其实和之前没什么差别,就是多了一个cjs模式内容需要多生成一份
这里主要依赖之前记录下的更新日志(updates.json)的version,如果是字符串就是指定模式更新,数组则是批量更新,值都有,获取然后写入就是了,没什么好说的。
rollup重构这个想法在之前看vite源码的时候就已经在考虑了,如今也终于实现。还顺便实现了一些有趣的功能,还是比较满意的,初版基本上就是这些内容了。
目前还差一些比较重要的能力待后续版本更新:TS类型提示,自动发包
目前包内还没有新增工具函数,在后期迭代过程中会逐渐新增vue/react的相关components以及hooks类型