ARTICLE DETAIL

资讯详情

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

EverShop 贡献指南:从本地开发环境搭建到提交 Pull Request 的完整工作流

EverShop 贡献指南:从本地开发环境搭建到提交 Pull Request 的完整工作流 电商后端前端【免费下载链接】evershop️ Typescript E-commerce Platform项目地址https://gitcode.com/GitHub_Trending/ev/evershop点击查看免费下载EverShop 是一个基于 TypeScript、React 与 Postgres 构建的开源电商平台。无论你是想修复 Bug、讨论代码现状、提出新功能还是改进文档CONTRIBUTING.md 都为你定义了一条清晰、可执行的贡献路径。本文将围绕这份贡献指南展开结合仓库内的脚本配置与源码实现完整讲解本地开发环境的搭建步骤、数据库初始化、构建与测试流程、Pull Request 提交流程以及高质量 Bug 报告的撰写标准帮助你从想贡献到能贡献一步到位。一、你能以哪些方式参与贡献EverShop 欢迎任何形式的输入贡献方式主要包括四类Reporting a bug报告 Bug发现错误信息或运行问题时通过 GitHub Issues 提交问题Discussing the current state of the code讨论代码现状参与代码层面的讨论帮助澄清设计意图Submitting a fix提交修复针对已知问题提交代码修复Proposing new features提议新功能提出新的能力或改进建议。在开始任何贡献之前请先阅读仓库根目录下的 CODE_OF_CONDUCT.md行为准则确保所有互动与提交都遵循社区规范。提示仓库采用 npm workspaces 管理多个子包见 package.json 中的workspaces: [packages/*, extensions/*]核心源码位于packages/evershop因此贡献代码时大多会改动该目录下的src文件。二、本地开发环境搭建Fork、Clone 与分支管理贡献代码的第一步是在本地复刻并运行这个项目官方推荐的流程如下。1. Fork 并克隆仓库先在 GitHub 上Fork本仓库到自己的账号然后将它克隆到本地设备git clone https://github.com/evershopcommerce/evershop.git2. 创建新的功能分支克隆完成后为你的改动创建一个独立分支避免直接在主分支上工作git checkout -b MY_BRANCH_NAME3. 安装依赖在仓库根目录执行依赖安装workspaces 会一次性安装packages/*与extensions/*下所有子包的依赖npm install三、创建 Postgres 数据库并初始化 Schema1. EverShop 使用 Postgres 作为数据库存储EverShop 的数据存储完全依赖 Postgres核心连接实现见 packages/evershop/src/lib/postgres/connection.ts查询构建器位于 packages/postgres-query-builder。如果你本机没有现成的 Postgres 服务可以直接使用仓库提供的 docker-compose.yml 快速拉起一个 Postgres 16 实例database: image: postgres:16 restart: unless-stopped volumes: - postgres-data:/var/lib/postgresql/data environment: POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres POSTGRES_DB: postgres ports: - 5432:5432启动方式docker compose up -d database2. 运行安装命令创建数据库 Schemanpm run setup根目录 package.json 中该命令的真实定义是setup: evershop install即调用evershop/evershop包提供的 CLI入口见 packages/evershop/src/bin/evershop.js。CLI 安装器位于 packages/evershop/src/bin/install/index.js它是一段交互式流程会依次询问Postgres Database Host默认localhostPostgres Database Port默认5432Postgres Database Name默认evershopPostgres Database User默认postgresPostgreSQL Database Password默认空回答完这些问题后安装器会尝试连接数据库优先走 SSLssl: true若数据库不支持 SSL 则自动降级为ssl: false随后创建.env文件、建表迁移调用migrate与getCoreModules并引导你创建管理员账号。注意如果你已经通过环境变量如DB_HOST、DB_PORT、DB_NAME、DB_USER、DB_PASSWORD配置了数据库安装器会直接跳过交互询问并提示看起来你已经安装过系统此时请改用npm run buildnpm run start启动商店。这也是 Docker 部署方式不执行npm run setup的原因——环境变量在docker-compose.yml中直接注入。四、启动开发服务器与构建1. 启动开发服务器npm run dev对应脚本为node ./packages/evershop/dist/bin/dev/index.js开发模式下会启用热更新webpack-dev-middleware / webpack-hot-middleware 等见 packages/evershop/src/lib/webpack 目录改动源码后浏览器与页面即时刷新适合日常迭代调试。2. 构建生产版本npm run build该命令执行node ./packages/evershop/dist/bin/build/index.js会完成模块扫描、路由注册、客户端与服务端两套 webpack 构建相关逻辑见 packages/evershop/src/bin/build 目录。3. 测试生产构建产物npm run start构建完成后用start以生产模式启动验证构建产物能否正常运行。生产与开发入口分别对应dist/bin/start/index.js与dist/bin/dev/index.js。补充根目录还提供了npm run compile用 swc 把src编译到dist、npm run compile:tsctsc 静态资源拷贝等编译命令分别用于加速编译与完整类型检查两种场景。五、运行测试与代码规范检查1. 运行 Jest 单元测试npm run test该命令在根目录 package.json 中定义为ALLOW_CONFIG_MUTATIONStrue NODE_OPTIONS--experimental-vm-modules node_modules/jest/bin/jest.js结合 jest.config.js 可以看出关键约定测试环境为node通过moduleNameMapper将evershop/postgres-query-builder、components/*等内部别名映射到dist构建产物样式文件.css/.scss被替换为 tests/styleStub.cjs 桩模块测试匹配规则为**/dist/**/tests/**/unit/**/*.test.[jt]s即单元测试面向编译后的dist目录中的tests目录例如packages/evershop/src/lib/router/tests、packages/evershop/src/lib/middleware/tests等测试源码会先经编译再被 Jest 收集。仓库内同时存在大量端到端测试Playwright通过npm run test:e2e运行配置位于 tests/e2e覆盖 admin 后台、Page Builder、storefront 等模块。2. 运行 Lint 检查npm run lint对应脚本为eslint --fix --ext .js,.jsx,.ts,.tsx ./packages即对packages目录下所有 JS/TS 源码执行自动修复式检查。从 eslint.config.js 可以看到项目采用的规范要点使用typescript-eslint/parser与typescript-eslint/eslint-plugin处理 TS/TSX集成 React 与 jsx-a11y 推荐规则开启 import 排序规则import/order按 builtin → external → internal → parent → sibling → index 分组并字母排序将no-console设为 error禁止在业务代码中直接输出日志日志统一走 packages/evershop/src/lib/log/logger.js忽略dist、tests、extensions、themes等目录。提交代码前先跑一遍 lint能显著减少 PR 评审中的低级问题。六、提交 Pull Request 与许可协议1. 向 dev 分支发起 Pull Request本地完成修改、通过测试与 lint 之后请向仓库的dev分支提交 Pull Request不要直接提交到 main 分支。PR 描述应清晰说明改动了什么、为什么这样改以及必要的验证结果。2. 贡献代码的许可约定你提交的任何代码改动默认遵循与项目相同的 GNU General Public License v3.0GPL-3.0。也就是说一旦你提交代码你的提交内容即被理解为同样采用覆盖该项目的 GPL-3.0 许可仓库根目录的 LICENSE 文件即为许可原文。如果你对这一点有顾虑可以随时联系维护者沟通。七、如何撰写高质量的 Bug 报告EverShop 使用 GitHub Issues 追踪公开 Bug贡献者通过 issues 提交问题。一份优秀的 Bug 报告应当包含以下要素1. 摘要与背景你使用的EverShop 版本可在根目录 package.json 的version字段查看当前仓库版本为2.2.1你使用的Node.js 版本你使用的操作系统你使用的Postgres 版本。2. 复现步骤尽量具体地列出复现步骤尽可能附上示例代码帮助维护者快速定位明确复现路径是从全新安装开始还是在特定模块/页面上触发。3. 期望结果与实际结果What you expected would happen描述你预期应该发生的行为What actually happens描述实际发生的现象含报错日志、截图等。4. 补充说明Notes写下你对问题成因的猜测、已经尝试过但无效的排查手段等这些信息往往能大幅加速问题定位。八、贡献前的最终检查清单结合 CONTRIBUTING.md 与仓库脚本提交 PR 前建议逐项确认检查项对应命令/文件依赖已安装npm install数据库已初始化npm run setup交互式见 install/index.js开发服务器可启动npm run dev生产构建通过npm run build生产产物可运行npm run start单元测试通过npm run test配置见 jest.config.jsLint 检查通过npm run lint配置见 eslint.config.js分支策略正确新分支开发PR 提交到dev分支许可确认贡献默认遵循 GPL-3.0完成以上流程后你的贡献就进入维护者评审环节。EverShop 的开源协作正是建立在透明开发流程 明确贡献规范之上——按照这份指南操作无论是首个 Bug 修复还是新功能提案都能以最高效的方式被社区接收与处理。赞分享电商后端前端【免费下载链接】evershop️ Typescript E-commerce Platform项目地址https://gitcode.com/GitHub_Trending/ev/evershop点击查看免费下载相关推荐HackMyResume 开源贡献指南从搭建开发环境到提交 Pull Request 的完整工作流HackMyResume 开源贡献指南从搭建开发环境到提交 Pull Request 的完整工作流 HackMyResume 是一款基于 Node.js 的命CLI开发工具BootstrapVue 贡献指南从本地开发环境搭建到 Pull Request 提交的完整实战BootstrapVue 贡献指南从本地开发环境搭建到 Pull Request 提交的完整实战 BootstrapVue 是一个为 Vue.js 2.x 提前端UI组件如何用开源工具轻松录制40多个平台的直播内容如何用开源工具轻松录制40多个平台的直播内容 你是否曾经错过重要直播或者想要保存喜爱的直播内容却找不到合适的方法在直播内容日益丰富的今天一个能够稳定录制上一篇网盘直链下载助手完整指南告别限速实现9大网盘高速下载下一篇LinkSwift一键解锁九大网盘下载限制的终极浏览器插件指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表