过了很久才决定写下这篇文章,记录一下参与Nuxt
的贡献历程,没想到有一天可以参与到 Nuxt 56.8k star (2023.04 ~ 2025.04
)的贡献当中,也权当做一次这几年的回顾。
前情提要
在2023
年做一个服务端渲染的项目,从Nuxt 和 地球最强无对手ssr框架两个框架中,都做了项目试点。最终决定后续项目都使用Nuxt
去做,对于Vue开发者
的使用上来讲,使用Nuxt
框架更简单,版本更新迭代更快。当然只是更主观意识的选择,两个框架都很好。
参与贡献
第一次PR
其实为什么能参与贡献,主要是因为项目中正好碰到了这个问题,但是并不是一个很大的问题。
其实只是在执行preview
的时候,配置的路径问题
ts
nitro: { output: { dir: '~/node-server' } }
会提示找不到nitro.json
,当时在我比较肤浅的眼光看来,这就是一个路径问题,处理一下~/
就可以解决这个了~
然后秉承着这个问题我可以解决的态度,然后根据Nuxt contribution guide(当时还是个README),提交了如下代码
ts
const serverOutputDir = config.nitro.output?.dir?.replace(/^~\//, '') || '.output'
第一次参与这种大型项目的代码贡献,心里很忐忑(好歹不是简单的改个文档~)
不过并没有那么简单,哈哈哈😁
在我提完这个PR后,得到了danielroe(Nuxt Maintainer)很明确的说明,这样可能会有其他额外的开销问题,他不愿意这样合并。当然,后续得到了pi0的解释,预览功能在本地,有开销也可以接受,他就同意了本次的修改,本来以为approve
之后,我的改动会被合并进去~心里还挺激动的😄,毕竟参与了这么大型的开源项目,理想很丰满,现实很骨感,最终只有两行引入是我改动的,其他的处理被danielroe
改掉了😭,也勉强算是一次有效的参与吧。
但是第一次参与大型开源项目,还是这么大的项目,心里肯定是相当激动的~能合并进去,对我来说也是很强的鼓励了。
详情可见:fix(nuxi): preview nitro build with custom dir config
第一次Fix的PR
然后一直基本到2024.07
之前,基本都是碰到文档问题,不太清晰明了的,去帮助做一下修改。
2024.07
正好碰到一个我可以处理的definePageMeta
属性合并问题,这回靠自己处理好了
详情可见:fix(nuxt): merge route meta properties with scanned meta
第一次Feat的PR
2024.10
正好使用definePageMeta
,然后发现跟vue-route
结合还是挺紧密的,但是却没有props
的设置,查看了一下源码,发现其实加起来也并不麻烦,所以就进行了一次增强
csharp
-- pages
-- [params]
-- [id].vue
// [id].vue
<script setup lang="ts">
definePageMeta({
props: true,
})
const { params, id } = defineProps<{
params: string
id: string
}>()
console.log(params, id)
</script>
详情可见:feat(nuxt): allow enabling route props in definePageMeta
2024 ~ 2025
后面就是在项目的使用过程中碰到的问题,自己可以解决的,就去fix
一下,文档显示不清楚的,就去修改一下,有标注enhancement
的,看过之后会加的,就feat
一下~
感触
其实没想到不知不觉都过了两年时光了(2023 ~ 2025
),与Nuxt
的纠缠也越来越深了,基本现在开发所有的业务项目,都是使用Nuxt
,对于我们来讲,约定>配置
,确实方便了开发,降低了开发难度,心智负担,但是想写好还是有难度的。
最后对于参与开源这个事情,迈出第一步其实还是挺难的,但是你参与过后,发现也并没有很难,即使改个文档,能被合并也是你的能力,你能发现别人没有发现的问题~ 一起加油吧!!
最后放两张图吧,互勉❤

