如何给开源项目提过 PR 呢?其实很简单

大家好,我是若川。最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12

源码共读群里有小伙伴聊到如何给开源项目提PR,所以今天分享这篇文章。


你有给开源的库或者框架提过 PR 吗?

如果没有,那么今天的文章会教你怎么给开源库提 PR。

为什么要给开源项目提 PR?

这件事还得从好几年前(2019年)说起,那时候在折腾一个虚拟 DOM 的玩具(参考之前的文章:🔗虚拟DOM到底是什么?

在构建工具上我选择了 Rollup,希望每次构建的时候都能自动进行代码的 Lint,所以引入了 Rollup 的一个插件:rollup-plugin-eslint

064bcf0c931b1c7fd9a722108ab201fe.png

在使用这个插件的过程中,发现和 Webpack 对应的插件  eslint-webpack-plugin 还是有一些差距的。我在使用 Webpackeslint-webpack-plugin 时候,只需要配置 fix 属性,就能够在保存代码的时候,自动对代码进行 fix。

// webpack.config.js
const ESLintPlugin = require('eslint-webpack-plugin');module.exports = {// ...plugins: [new ESLintPlugin({fix: true,extensions: ['js', 'jsx']})
};
7756546af84dd4d66799fbf4ff18a9e3.png

而在使用 rollup-plugin-eslint 的时候,看文档上,好像没有提到这个选项,也就是说 rollup-plugin-eslint 根本不支持这个功能。然后,搜索了一下 Issues,不搜不要紧,一搜吓一跳,发现有人在 2016 年就提出了这个疑问😳。

41a0cff301b1a8b5e30b2d8b9b8e8c2e.png

作者的回复也很简单,欢迎提交 PR。

d282ab9d0a00f49a3d7ccadee272f93f.png

我当时心想,这个功能这么久了都没人实现想必很难吧。但是隔壁的 eslint-webpack-plugin 明明支持这个功能,我去看看它怎么实现的不就行了🐶。

于是,我就把 eslint-webpack-plugin 的代码 clone 下来一顿搜索,发现它实现这个功能就用了三行代码。

if (options.fix) {await ESLint.outputFixes(results);
}

激动的心,颤抖的手,我赶忙就去  rollup-plugin-eslint 那里提了个 PR。

🔗PR: https://github.com/TrySound/rollup-plugin-eslint/pull/27

4c2eb4ec949846856d195eaa1933a16a.png

关键是,作者都没想到这个东西居然这么简单就实现了。

9ab295e308c18cb7e2829539ae034ba1.png

如何在 GitHub 上提 PR?

上面是我第一次提 PR 的一个心路历程,如果你也发现了你现在使用的什么开源框架有待优化的地方,这里再教大家怎么在 GitHub 上提交一个 PR。

对开源项目进行 Fork

首先把你要提交 PR 的项目 Fork 到自己的仓库。

98fda83b533e5f657a4dd2db858820ec.png

然后到自己的仓库中,将 Fork 的项目 clone 到本地。

421ef37252d651b6080fda7e323b3e91.png
$ git clone git@github.com:Shenfq/rollup-plugin-eslint.git

切换到新分支,提交变更,推送到远程

代码 clone 到本地之后,先切换一个新的分支,分支名最好紧贴这次更新的内容。

$ git checkout -b feature/add-fix-option

在新分支修改代码:

+  if (options.fix && report) {
+    CLIEngine.outputFixes(report);
+  }

提交变更:

$ git add .
$ git commit -m "feat: add options.fix"

最后将新的分支推送到远程:

$ git push --set-upstream origin feature/add-fix-option

新建 PR

在自己的 GitHub 仓库中找到对应项目,打开 Pull requests Tab,点击 New pull request 按钮,新建一个 PR。

e711ad7128168653a78ff4e1529ef8f3.png

然后,在下面的界面中,选择刚刚提交的分支,最后点击 Create pull request 即可。

fce465c3eb2f76fca224bec2598fa5be.png

点击之后,就在对应的项目中提交了一个属于你的 PR 了。如果顺利的话,你就能『混』 到一个开源项目贡献者的头衔。

- END -

最近组建了一个江西人的前端交流群,如果你是江西人可以加我微信 ruochuan12 私信 江西 拉你进群。

推荐阅读

1个月,200+人,一起读了4周源码
我历时3年才写了10余篇源码文章,但收获了100w+阅读

老姚浅谈:怎么学JavaScript?

我在阿里招前端,该怎么帮你(可进面试群)

01bdb08319c6f622aa253e6088a701a5.gif

················· 若川简介 ·················

你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列
从2014年起,每年都会写一篇年度总结,已经写了7篇,点击查看年度总结。
同时,最近组织了源码共读活动

268dd4fec0f64bd40aab57837aa20627.png

识别方二维码加我微信、拉你进源码共读

今日话题

略。欢迎分享、收藏、点赞、在看我的公众号文章~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一次回母校教前端的经历

大家好,我是若川。最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12已进行了三个月,很多小伙伴都表示收获颇丰。分享一篇武大毕业的耀耀大佬的文章。有些时候会受限于环境影响,特别是在校大学生。所以要融入到积极上进的环…

设计插画工具_5个强大的设计师插画工具

设计插画工具As Product Designers, most likely, we have come across illustrative work. Visual design is one important element in enhancing the user experience. As many gravitate toward attractive looking products, designers are also adapting to the changing…

figma下载_切换到Figma并在其中工作不必是火箭科学,这就是为什么

figma下载We have seen Elon Musk and SpaceX making Rocket Science look like a child’s play. In the same spirit, should design tools be rocket science that is too hard to master? Not at all.我们已经看到埃隆马斯克(Elon Musk)和SpaceX使Rocket Science看起来像是…

npm、yarn、cnpm、pnpm 使用操作都在这了

大家好,我是若川。最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12有时候想查个命令,或者换个镜像找了几篇文章才找到,最近闲着没事干,干脆整理一篇文档,以后就不用在网上瞎搜有的还写不全。Usage…

每次启动项目的服务,电脑竟然乖乖的帮我打开了浏览器,100行源码揭秘!

1. 前言大家好,我是若川。最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,已进行三个月了,大家一起交流学习,共同进步。想学源码,极力推荐之前我写的《学习源码整体架构系列》 包含jQuery、…

初级爬虫师_初级设计师的4条视觉原则

初级爬虫师重点 (Top highlight)Like many UXers, I got into the industry from a non-visual background (in my case it was Business and later on Human Cognition). Even though I found great benefits coming from those backgrounds, it also meant I had no UI/Visua…

开源监控解决方案OpenFalcon系列(一)

OpenFalcon是由小米的运维团队开源的一款企业级、高可用、可扩展的开源监控解决方案,,在众多开源爱好者的支持下,功能越来越丰富,文档更加的完善,OpenFalcon 已经成为国内最流行的监控系统之一。小米、美团、金山云、快…

如何利用 webpack 在项目中做出亮点

大家好,我是若川。最近这几年,在前端代码打包器领域内,webpack 算得上是时下最流行的前端打包工具。它可以分析各个模块的依赖关系,最终打包成我们常见的静态文件:.js 、 .css 、 .jpg 、.png,极大地提升了…

Github 王炸功能!Copilot 替代打工人编程?

大家好,我是若川。最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,已进行三个月了,大家一起交流学习,共同进步。大家好,我是皮汤。最近组里在讨论一个有意思的工具 Github Copilot&#xff…

ux和ui_糟糕的UI与UX番茄酱模因

ux和uiAt face value, this meme appears to be a quick and easy tool for educating the general public about what the differences are between UI and UX. You might look at the attractive glass bottle labeled “UI” and understand that UI might have to do more …

Linux中的wheel用户组是什么?

在Linux中wheel组就类似于一个管理员的组。 通常在Linux下,即使我们有系统管理员root的权限,也不推荐用root用户登录。一般情况下用普通用户登录就可以了,在需要root权限执行一些操作时,再su登录成为root用户。但是,任…

ElementUI 组件库 md-loader 的解析和优化

大家好,我是若川。最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,已进行三个月了,大家一起交流学习,共同进步。背景相信很多同学在学习 webpack 的时候,对 loader 的概念应该有所了解&…

csdn 用户 蚂蚁翘大象_用户界面设计师房间里的大象

csdn 用户 蚂蚁翘大象Once upon a time, an educated eye detected a new trend in UI designs, particularly, in Dribbble. It was a conceptual proposition, not an actual design for a customer or an app. Trying to explain the characteristics of this new trend, a …

面试官问发布订阅模式是在问什么?

大家好,我是若川。最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,已进行了三个多月,大家一起交流学习,共同进步。本文来自 simonezhou 小姐姐投稿的第八期笔记。面试官常问发布订阅、观察者模式&#…

figma下载_不用担心Figma中的间距

figma下载重点 (Top highlight)I spend way too much time caring about spacing when designing interfaces and building design systems. You are probably no stranger to the constant 1 px and 8 px nudging, continuous checking of the bottom or in-between space for…

【建议收藏】面试官贼喜欢问的 32+ vue 修饰符,你掌握几种啦?

大家好,我是若川。最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,已进行了三个多月,大家一起交流学习,共同进步。前言vue简洁好用体现在很多个地方,比如其内置了32修饰符,可以很…

知识管理系统Data Solution研发日记之一 场景设计与需求列出

在平时开发的过程中,经常会查找一些资料,从网上下载一些网页,压缩格式文件到自己的电脑中,然后阅读。程序有别于其他行业的一个特征是,所有的资料,数据,压缩文件,只用于产生可以工作…

shields 徽标_我们如何准确地记住著名徽标的特征和颜色?

shields 徽标The logos of global corporations like Apple, Starbucks, Adidas, and IKEA are designed to create instant brand associations in the minds of billions who see them every day. But how accurately can we remember the features and colors of these famo…

面了三次字节,他的一些感悟

大家好,我是若川。最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,已进行了三个多月,大家一起交流学习,共同进步。今天分享一篇小K投稿的字节面试记录,这是他第三次面字节了,之前…

解决Wireshark安装Npcap组件失败

2019独角兽企业重金招聘Python工程师标准>>> 解决Wireshark安装Npcap组件失败 从Wireshark 3.0开始,Npcap取代Winpcap组件,成为Wireshark默认的网卡核心驱动。由于该组件属于驱动程序,所以安装时候容易被杀毒/防火墙软件拦截&…