现在上班主要写的东西还是SPA或者SSR和SSG,但是冷不丁偶尔还会有MPA的需求,awesome-vite里面试了一圈同类的插件都不够符合自己的懒比习惯,或者表现和自己想的不一样,之前折腾过一个vite的svg转vue-component的插件,想着也不是很复杂,就着手自己写了一个。
一开始起名字就犯了大难,因为相关的名字基本就被用了个7788,想了半天憋了个名字出来,也算是契合用途:
vite-plugin-filesystem-multi-pages
vite 插件,用途和它的名字一样,是个简化 vite 的 MPA 配置的插件。
其实 vite 的 mpa 配置本来也不是很复杂,但是终究还是有不方便的地方,秉承着能懒掉就懒掉的原则,插件实现了以下几个功能:
-
和 vite-plugin-pages 类似,可以指定一个目录,页面的配置按照目录的名称自动生成,dev 环境下 vite 默认需要通过例如
http://localhost:3000/src/pages/nested/index.html这样的完整路径才能访问,插件内做了自动映射,只需访问http://localhost:3000/nested即可 -
自动化 MPA 打包配置,无需再手动配置 rollup 的 input 选项
-
All-in-one template 模式, 只需少量设置就可以让所有页面使用同一个 html 模板,并且可以用
{{ xxx }}的标识符配合插件的replace选项中定义的变量来替换 html 的内容 -
vite 默认的打包路径,如果目录在
src/pages那么打包之后 dist 目录中也会是dist/src/pages这种结构,虽然 nginx 配一下也不是很麻烦,不过插件也提供了选项,可以定义类似 webpack 的publicPath
详细的配置和使用说明见 github 的 readme
实际开发过程只用了三天,开发过程中遇到的主要问题是不太懂 rollup 打包过程的各个钩子函数是什么时机触发的能干什么,需要去 rollup 官网边看边写加上自己实验。好在写完了以后对这个插件的无脑程度还是挺满意的,就差亿点人用了。
发到掘金来球试试,觉得好用请务必赏一个star。