如何成为开源组件库NutUI的contributor:解决issue并提交PR

news2024/12/19 18:58:23

前言

NutUI 是一套京东风格的轻量级移动端组件库。自诞生以来,一直在紧跟技术的发展不断推陈出新,始终保持稳健的发展态势,从一个单一的基础组件库发展到如今服务于数千开发者的多端 UI 组件库。NutUI 的成长离不开团队成员的努力,更离不开广大社区开发者的反馈和共建。

因此本文就以一个新人视角来完成一次issue的解决以及PR的提交,成为NutUI的共建者,为开源社区共享自己的一份力量!
在这里插入图片描述

贡献指南

一、fork项目:

首先打开NutUI-React的GitHub仓库地址,点击fork项目,然后就可以在自己的repositories列表打开刚刚fork的项目。
在这里插入图片描述

二、clone代码:

clone 仓库代码到本地,并同步主仓库的最新代码。

git clone https://github.com/jdf2e/nutui-react
cd nutui-react

查看远程仓库信息:

git remote -v

添加自己仓库的地址:

git remote add myeslf https://github.com/beginnerZhang/nutui-react

在这里插入图片描述

三、运行项目

1.本项目为 pnpm monorepo 仓库,要求使用 pnpm 安装项目依赖。

pnpm install

Monorepo 是一种项目代码管理方式,指单个仓库中管理多个项目,有助于简化代码共享、版本控制、构建和部署等方面的复杂性,并提供更好的可重用性和协作性。

这一步报错的可以使用npm install pnpm -g先把pnpm安装了。

2.运行 Taro demo:这里以微信小程序为例。
注意:启动 taro 版本的 demo,需要 taro 3.6.x。

pnpm dev:taro:weapp

这将会在packages/nutui-taro-demo下生成一个dist/weapp文件夹,然后使用微信开发者工具导入此文件夹,效果如下:
在这里插入图片描述

四、解决issue

五、提交PR

1.所有代码改动在提交前都应该通过以下测试:
单元测试:pnpm test
Eslint 检查:pnpm lint
同时在 commit 时,会自动进行 Prettier 格式化以及 Eslint 修复。若 commit 失败,请再次执行上面的命令,检查是否通过了 lint 插件。

2.之后就是代码提交流程了:

git add .
git commit -m "xxx"
git push

其中commit的类型可以是:upd chore docs feat fix test refactor revert style releas
例如:fix(Dialog): 点击蒙层无法关闭

3.然后打开我们的Github仓库,在点击New Pull request:
在这里插入图片描述
然后点击Create pull request,在PR模板中填写相关信息,点击提交。

4.之后就可以在主仓库的Pull requests里看到我们的PR了,PR 会在 Review 通过后被合并到主仓库,然后等待 NutUI-React 发布新版本(每周一次)。

Pull Request 规范

  • 每个 PR 只解决单个问题或者新增单个功能;
  • 当新增组件或修改原有组件时,同步更改对应的单元测试和文档,保证代码的稳定;
  • commit message 请遵循 Angular Style Commit Message Conventions 规范;
  • PR 信息中最好包括修改了哪个组件,解决了哪个问题,并关联 github 上对应的 issue 链接

可能出现的问题

要及时更新我们fork的库,保持与主仓库的同步,如果出现以下问题,可以直接在Github上点击Discard 1 commitUpdate branch来解决。
在这里插入图片描述
本地可能会出现这种问题:Your branch is ahead of 'origin/next' by 9 commits.
解决方法:执行以下命令来将本地分支重置到与远程仓库一致,将强制将本地分支移动到与远程分支 origin/next 相同的提交,丢弃本地分支上的所有不同。

PS D:\work\swipe_test\nutui-react> git reset --hard origin/next
HEAD is now at 5c161846 chore(release): v2.0.20
PS D:\work\swipe_test\nutui-react> git status
On branch next
Your branch is up to date with 'origin/next'.

nothing to commit, working tree clean

相关链接

  • NutUI 官网
  • NutUI GitHub
  • NutUI-React GitHub

最后

庞大的开源社区一定有很多值得去学习的东西,开源本身是一场历练和修行。成为 contributor 不是唯一目的,通过阅读代码和修复 bug 也是一种提升,也会认识很多志同道合的朋友。我们希望每一个开源者都能用微笑面对这一路的风景。

NutUI 的持续迭代离不开使用者和开发者的长期反馈和支持,愿大家在开源的道路上步履不停~

参考文献:
NutUI Contributor 共建视频指南(强烈推荐!此视频会一步步引导完成共建)
NutUI 贡献指南1
NutUI贡献指南2
NutUI-React 共建指南
NutUI 邀您共建,Contributor 您好

推荐阅读:
Github进行fork后如何与原仓库同步1
Github进行fork后如何与原仓库同步2

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

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

相关文章

基于WebRTC的程序因虚拟内存不足导致闪退问题的排查以及解决办法的探究

目录 1、WebRTC简介 2、问题现象描述 3、将Windbg附加到目标进程上分析 3.1、Windbg没有附加到主程序进程上,没有感知到异常或中断 3.2、Windbg感知到了中断,中断在DebugBreak函数调用上 3.3、32位进程用户态虚拟地址和内核态虚拟地址的划分 …

JVM的几个面试重点

JVM的内存区域划分 JVM类加载机制 前言 Java程序最开始是一个 .java 的文件,JVM把它编译成 .closs 文件(字节码文件),运行 Java 程序, JVM 就会读取 .class 文件,把文件内容读取到内存中,构造出…

C++:为什么析构函数一般写为虚函数

如果没有继承关系,析构函数写不写为虚函数都可以。 如果有继承关系、有多态性的使用需求时,就需要把析构函数写为虚函数,这样可以避免潜在的内存泄漏问题。 比如:当一个类被设计为作为基类,并且通过基类指针或引用dele…

【网络爬虫 | Python】数字货币ok链上bitcoin大额交易实时爬取,存入 mysql 数据库

文章目录 一、网站分析二、js 逆向获取 X-Apikey三、python 调用 js 获取 X-Apikey四、python 爬虫部分五、mysql 数据库、日志、配置文件、目录结构六、结尾 一、网站分析 oklink:https://www.oklink.com/ btc 大额交易:https://www.oklink.com/btc/tx-…

Fiddler抓包VSCode和探索

前言: 最近在使用 VSCode 调试 web 程序时,遇到一些问题,当时不知道如何是好。所以决定抓看来看一看,然后一顿操作猛如虎,成功安装了抓包软件 – Fiddler Classic。我并没有使用 Postman 这种重量级的 HTTP 测试软件&a…

windows系统kettle9.3一键安装启动

程序下载、解压 通过百度网盘下载,直接解压即可 解压之后 双击运行 程序路径 pdi-ce-9.3.0.0-428一键安装启动\pdi-ce-9.3.0.0-428\data-integration

【FA-BP预测】基于萤火虫算法优化BP神经网络回归预测研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Linux中常见的权限问题

目录 前言1. 目录权限2. umask3. 粘滞位结语 前言 在了解完上一篇文章 Linux权限的理解与操作 之后,还有一些比较常见的权限问题需要我们去了解。其中包括目录的权限,umask 以及 粘滞位的使用。 1. 目录权限 问题一:进入一个目录&#xff0…

STM32F4_FATFS

目录 前言 1. 文件系统简介 2. FATFS文件系统 2.1 实际演练 2.2 FATFS读书笔记整理 2.3 FAT文件系统的神秘面纱 2.3.1 引导扇区 2.3.2 引导代码 2.3.3 FSINF0信息扇区 2.3.4 FAT表 2.3.5 FAT32数据区 2.3.6 子目录 2.3.7 目录项 3. 实验程序 3.1 main.c 3.2 di…

美团面试:Oracle JDK那么好,为何要用Open JDK?

说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 既然 Oracle JDK 这么好,那为什么还要有 OpenJDK&…

YZ系列工具之YZ12:VBA_4种方法设计下拉列表

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套一部VBA手册,教程分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的…

OJ第五篇

文章目录 用队列实现栈用栈实现队列设计循环队列 用队列实现栈 链接:用队列实现栈 这道题是让我们用两个队列实现一个栈,简单来说,就是利用队列来实现一个先入后出的功能,我们知道队列是先入先出,如何用两个队列来实…

Vue2基础知识(四) 自定义指令

目录 一 自定义指令1.1 定义1.2 自定义局部指令1.3 全局注册指令1.4 钩子函数1.5 动态传参1.6 使用场景 💌 所属专栏:【Vue2】😀 作 者:长安不及十里💻工作:目前从事电力行业开发🌈目标&#xf…

全国342个城市往返最短通勤时间(铁路)数据

全国342个城市往返最短通勤时间(铁路)数据 1、时间:采集时间是2022年 2、来源:12306 3、数据说明:数据采集12306数据,整理全国342个城市往返最短通勤时间,本数据是铁路包含动车、高铁所有路线…

【GESP】2023年06月图形化三级 -- 计算最终值

文章目录 计算最终值【题目描述】【输入描述】【输出描述】【参考答案】其他测试用例 计算最终值 【题目描述】 默认小猫角色,白色背景。存在一种仅支持2种操作和1个变量的编程语言: X 使变量 “X” 的值增加1X-- 使变量 “X” 的值减少 1 最初&#…

基于SAE堆叠自编码器的单维时间序列预测研究(matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

在没有康托尔对角化方法的情况下证明实数的不可数性

乔治康托尔 |图片来源: 维基百科 一、说明 对于那些对数学感兴趣的人来说,无穷大实际上可以有不同的大小,这可能是一个众所周知的事实。事实上,最著名的例子是所有实数的集合比所有自然数的集合“大”。你可能知道,这实…

Docker部署SpringBoot +Vue项目流程详解(含域名 + HTTPS)

文章目录 前言1、选购服务器2、部署 Docker3、前端、后端项目打包4、配置 Dockerfile5、配置 Nginx6、配置 DockerCompose6、启动 DockerCompose 完成部署7、【可选】域名 SSL证书 前言 本次整体部署操作使用阿里云服务器,这里我选择的是香港地区的2核2G ECS&…

打击勒索病毒:防御.kat6.l6st6r勒索病毒的最佳策略

导言: 我们日常生活和工作的方方面面都离不开数字化,但这也意味着面临日益复杂的网络威胁。.kat6.l6st6r勒索病毒就是其中之一,如果你的计算机感染了这种恶意软件,你的数据可能会遭到加密并要求支付赎金才能解锁。在这篇终极指南…

STM32F4_音乐播放器

目录 前言 1. WAV简介 1.1 WAVE文件的内部结构 2. WM8978简介 3. I2S简介 4. 硬件设计 5. 实验程序 5.1 main.c 5.2 I2S.c 5.3 I2S.h 5.4 WM8978.c 5.5 WM8978.h 前言 STM32F4开发板拥有全双工I2S(也就是可以同时双向进行传输,A到B传输信息的…