Pull Request 开源pr实战,过程详细,修改vite-plugin-cdn-import; cdn只导入css

  • Post author:
  • Post category:其他




Pull Request

这是git中提供的功能,网上优秀的解释很多,我就不锦上添花了,这里我们以实践场景诠释下,怎么有的pr, 经过搜集调查后发现常用在开源库中,比如

vite-plugin-cdn-import

;还有一些公司的库,为了保证良好的迭代,员工需要fork到自己的仓库,由boos审核是否同意pr,最终迭代产品; 我是一个前端实践者,在使用

vite-plugin-cdn-import

时发现不支持只导入css,就索性读了他们的源码,大胆的修改了一番,也达到了需求,只是这次实践属于我本人的第一次pr过程,没有全面认识该库的编码规范及社区动态,最终我成功提交了pr,也希望能得到认可或者指教;



fork远端项目

fork是分支的意思,是git上的一个功能,通过fork将远端项目分支到个人仓库

在这里插入图片描述



clone 自己仓库分支

在fork后我们的个人仓库里就有了远端库(开源库)

在这里插入图片描述


git clone 自己仓库地址

在这里插入图片描述



检查链接状态


git remote -v

在这里插入图片描述



添加远端链接


git remote add upstream 远端仓库地址



再次查看状态


git remote -v

在这里插入图片描述



创建分支


git branch 分支名



切换分支


git checkout 切换分支



编辑更改项

更改项就是我们创建并切换好分支后的目录,索性这个项目的代码不是很难看懂,我就给自己打气,最难迈出的是第一步,在历经一段时间的代码分析后我看懂了相关流程,该库在处理cdn最终引入的功能主要由pathList及cssList俩个数组数据决定,美中不足的是这里缺少了兼容性,比如你想引入一个库的css而不需要js,我就在此处声明了变量,并对代码进行了控制;修改完成后,在本地测试达到了我的预期效果,而后进行的这一套pr;

具体修改过程我这就不便展示了,就是你拥有了该库编程的基础知识,能把每一行的代码看懂,其实是和你写自己的代码一样,只不过是对元素的处理上,专业知识的认识上,编程风格上,条件控制上存在个性化,如果你能看懂如下代码:

const data = modules.map((m) => {
        let v: Module
        if (typeof m === 'function') {
            v = m(prodUrl)
        } else {
            v = m
        }
        const version = getModuleVersion(v.name)
        let pathList: string[] = []
        onlyCss = v.onlyCss ? true : false;
        if (!onlyCss) {
            
            if (!Array.isArray(v.path)) {
                pathList.push(v.path)
            } else {
                pathList = v.path
            }

            const data = {
                ...v,
                version
            }

            pathList = pathList.map(p => {
                if (!version && !isFullPath(p)) {
                    throw new Error(`modules: ${data.name} package.json file does not exist`)
                }
                return renderUrl(prodUrl, {
                    ...data,
                    path: p
                })
            })
        }

        const data = {
            ...v,
            version
        }

        let css = v.css || []
        if (!Array.isArray(css) && css) {
            css = [css]
        }

        const cssList = !Array.isArray(css) ? [] : css.map(c => renderUrl(prodUrl, {
            ...data,
            path: c
        }))

        return {
            ...v,
            version,
            pathList,
            cssList
        }
    })

map函数和es6的一些语法概念,如果你能看懂,那么代表着你的想法也许会出现在其中;



添加本地更改


git add .



git commit -m 'fix/only-css'



推送分支到自己仓库

因为在之前操作中你的分支建立在本地,远程仓库还没有,执行如下语句推送并创建:


git push -u origin 分支名



对比并且pull request

成功后你便可在git中提交了,打开你自己fork的仓库,会有如下场景

在这里插入图片描述

这里的下面有你的变动对比



填写pr内容并确定

点击了compare & pull request 后,会弹出填写描述界面,把你想给负责人说的话写在里面



远端仓库查看pr

最后我们即可在远端查看到我们的pr等待质量及可行性审核,如果成功你将会是一位贡献者;

在这里插入图片描述



最后

开源的过程真的是走向未来的过程,通过阅读别人优秀的代码,不仅丰富了思想实践能力,也增强了我们对编码的热情;

📚

git专栏

☃️ 个人简介:一个喜爱技术的人。

🌞 励志格言: 脚踏实地,虚心学习。

❗如果文章还可以,记得用你可爱的小手点赞👍关注✅,我会在第一时间回关、回访,欢迎进一步交流。



版权声明:本文为g18204746769原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。