ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

开源贡献指南:如何为react-awesome-shapes新增一个形状组件并提交你的第一个PR

开源贡献指南:如何为react-awesome-shapes新增一个形状组件并提交你的第一个PR 开源贡献指南如何为react-awesome-shapes新增一个形状组件并提交你的第一个PR【免费下载链接】react-awesome-shapes Insert Awesome Shapes into Your React Site with Ease.项目地址: https://gitcode.com/gh_mirrors/re/react-awesome-shapesreact-awesome-shapes 是一款免费开源的React 形状组件库引入一行代码就能在 React 站点里插入圆形、星星、甜甜圈等精美装饰形状。它的源码结构非常干净、贡献路径清晰是新手完成第一次开源贡献的理想项目。本指南带你走完clone 项目 → 新增形状 → 提交第一个 PR的完整流程全程只需 5 步。先了解项目react-awesome-shapes 是什么一行命令安装一个 import 即用npm install react-awesome-shapes后import { Circle } from react-awesome-shapes即可在页面指定位置摆放形状所有形状都支持响应式通过breakpoints参数形状会在不同屏幕宽度下自动调整大小技术栈React TypeScript Emotion内置 12 种形状MIT 协议完全开源官网演示页展示了全部内置形状这正是本次贡献的目标——让你新增的形状也出现在这里。项目结构速览形状组件都藏在哪里模块路径职责src/lib/shapes/每种形状的实现文件如circle.tsx、star.tsxsrc/lib/shapes/data/形状的 clip-path 路径数据如starPath.tssrc/lib/shapes/base.tsxBaseShape基础组件统一处理位置、尺寸、响应式断点src/lib/shapes/shapes.interface.ts形状参数的 TypeScript 类型定义src/lib/index.tsx库的导出入口新形状必须在这里注册src/constants/shapes.constant.ts官网演示代码示例与scope注册表src/components/demo/shapesdemos.tsx官网 Shapes 演示区渲染每个示例✨核心认知所有形状组件都是对BaseShape的薄封装你只需要用样式描述这个形状长什么样。一个形状组件是怎么构成的以星星为例它的实现只有 3 个要素clip-path 数据星形轮廓在src/lib/shapes/data/starPath.ts中定义为一个 CSSpolygon(...)字符串styled 样式在src/lib/shapes/star.tsx中用emotion/styled包裹一个div关键一行是clip-path: ${starPath}BaseShape 外壳位置、尺寸、断点等参数统一传给BaseShape响应式能力免费获得如果你的新形状接近圆形、菱形这类规则图形直接用border-radius、transform: rotate(45deg)即可不需要clip-path 数据文件。五步新增形状组件并提交第一个 PR第一步克隆项目并启动本地环境需要 Node 16.14 与 npm 8.3.1见package.json的engines字段git clone https://gitcode.com/gh_mirrors/re/react-awesome-shapes cd react-awesome-shapes npm install npm start启动后浏览器会打开官网演示页能看到所有内置形状——这也是你新增形状后的自测页面。第二步准备 clip-path 路径数据如需要如果新形状的轮廓无法用简单 CSS 实现参考src/lib/shapes/data/starPath.ts在src/lib/shapes/data/下新建文件如flowerPath.ts导出一个polygon(...)字符串。顶点可先用任意 CSS clip-path 在线工具生成再粘贴进来。第三步编写新形状组件参考最简单的src/lib/shapes/circle.tsx新建src/lib/shapes/flower.tsx骨架只有三件事export const Flower ({ size, color, top, left, right, bottom, position, className, zIndex, breakpoints }: ShapeProps) { const StyledFlower styled(div) position: inherit; height: inherit; width: inherit; background: ${color}; clip-path: ${flowerPath}; /* 或 border-radius / transform */ ; return ( BaseShape height{size} width{size} top{top} left{left} right{right} bottom{bottom} position{position} className{className} zIndex{zIndex} breakpoints{breakpoints} StyledFlower className{className} / /BaseShape ); };参数类型直接复用src/lib/shapes/shapes.interface.ts中的定义简单形状用ShapeProps含size、color宽高需分别指定的形状参考donut.tsx的DonutProps。第四步注册组件并添加官网演示新形状要在 3 处接线才能进入库和官网导出在src/lib/index.tsx加一行export { Flower } from ./shapes/flower;演示作用域在src/constants/shapes.constant.ts中把Flower导入并加入scope同时仿照circleExample新增一个flowerExample示例字符串渲染演示在src/components/demo/shapesdemos.tsx中加一行LiveEdit code{flowerExample} scope{scope} /官网演示区就会出现你的形状第五步自测、代码检查与提交 PR提交前依次执行均在package.json的 scripts 中配置好npm start # 浏览器确认新形状渲染、拖拽窗口验证响应式 npm run lint # ESLint Prettier 代码规范检查✅PR 提交检查清单组件文件位于src/lib/shapes/命名遵循现有小驼峰惯例src/lib/index.tsx、src/constants/shapes.constant.ts的scope、shapesdemos.tsx三处均已注册npm run lint通过项目配置了 husky pre-commit 钩子提交时会自动检查PR 描述包含形状效果截图、新增参数说明若对应 Issue 记得关联新手常见坑位提醒别手写响应式逻辑位置、尺寸、断点全部由BaseShape处理把参数透传即可样式里记得position: inherit内层 div 必须继承外层属性否则形状会跑偏保持zIndex默认值-1让形状位于内容后方与其他 12 种形状行为一致最容易被漏掉的一步是导出组件写得再好忘记在src/lib/index.tsx注册包用户就无法import你的新形状写在最后react-awesome-shapes 的贡献路径出奇地短建组件文件 → 导出 → 演示 → PR。卡住时最好的老师就是circle.tsx、star.tsx这些现成实现——先照着抄再修改是上手最快的方式。当 PR 被合并的那一刻你的名字就会出现在项目 README 的 Contributors 列表中 【免费下载链接】react-awesome-shapes Insert Awesome Shapes into Your React Site with Ease.项目地址: https://gitcode.com/gh_mirrors/re/react-awesome-shapes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表