不想做标题党,但是又不知道该如何发问。 原本在沸点上发了一条,结果感觉沸点就是朋友圈描述太多不太好,并且有些人当成打卡地了。所以放个文章,大家在评论下留言出谋划策吧!
最近在处理公司基础脚手架更新的问题,遇上了一些困难,想咨询一下各位同行,公司对于这样的问题处理方案是怎样的。
因为我们公司有很小项目,而且他们都有相同的模块,比如角色、组织、菜单管理、用户管理等等页面,这些页面都是通用的,所以早期我们做了类似vue-cli这样的将这些基础模块首先开发完,然后放在git上,新项目启动之后通过git拉取一下基础框架,然后在这个基础上进行页面开发。
这但是随着后续一些新的基础模块的增加和一些bug的产生也出现了问题,那就是如何进行迭代,尤其是老的项目如何更新迭代。目前只能通过老老实实的拷贝代码来处理老的项目。随着项目的增加这样肯定会出现问题。
NPM包的形式
沸点上的一些人给出了npm包的形式,这个模式对于纯粹的组件,是没有问题的。但是我期望能够将一些初始化的内容也融合进去。比如常规模式下,使用vue-cli等等初始化的项目,我们还需要在main.ts中对pinia、vue-router等等第三方的库进行初始化添加,我希望能够增加进去。并且能够增加配置文件。
使用vite尝试实现
原本希望借助vite的能力实现一个配置文件,就好像vite.config.ts或者unocss.config.ts这样的配置文件一样,让后续使用的同事只需要关注这个配置文件即可。大致的思想是通过这个xxx.config.ts的配置文件来初始化项目。
配置文件中拥有项目的标题、布局配置信息、ci构建的一些配置内容等等。
vite第一个坑
vite启动之后会创建一个本地服务器,而且vite的插件能力以及生命周期钩子方法,理论上实现是没有问题的。但是事实上也遇上了一些问题,并且我们的项目希望使用.ts来进行约束,这样不仅能让大家知道拥有哪些属性以及校验是否正常。
但是实现的时候,发现插件以npm的形式安装到项目中,import('./xxx.config.ts)会报错,大致的意思是无法解析.ts的内容。我没有深入研究解决办法,只好取巧的方式,就是通过fs模块,首先查找到项目,然后识别其中的内容,在当前目录生成一个.js的文件,然后访问这个文件。如何就获取了文件的内容。最后将这个.js删除掉。
vite打包场景下获取xxx.config.ts的问题算是解决掉了。但是另外一个问题又产生了。。。。
main.ts执行时
配置文件不光在vite启动时需要,在项目运行时也需要。理想状态下,需要xxx.config.ts文件中拥有一些基础脚手架的配置信息,比如路由白名单,比如项目logo的链接地址等等。
原来可以通过import.meta.glob这个方法获取到当前项目下的一些文件。但是将对应函数以npm包的形式提取之后,发现import.meta.glob无法查找到对应的文件了。如果这个方法在node_modules中的某一个包内,那么调用import.meta.glob的根目录就是当前这个文件,而不是项目根目录。
因为获取不到,导致我动态路由似乎也无法处理了。
突然感觉npm这条路行不通了。。。。
git submodule和git subTree的方式
搜了好久后来看到git中子仓库的方式,做了一个demo测试了一下,发现也不太符合我的预期,方案倒是可能行的通,就是子包其实是一个仓库,也就是在主项目中包含了一个子包,而且因为子包也是一个完整的项目,所以导致其中也包含很多不太需要的文件内容。
目前卡住了。不知道如何处理了。。。。有没有兄弟做过类似的问题,有解决方案给我到参考的。。。。上面描述的可能有点混乱。。。