ARTICLE DETAIL

资讯详情

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

wp-calypso 中 Automattic for Agencies(A4A)前端的本地开发环境搭建与运行指南

wp-calypso 中 Automattic for Agencies(A4A)前端的本地开发环境搭建与运行指南 前端CMS【免费下载链接】wp-calypsoThe JavaScript and API powered WordPress.com项目地址https://gitcode.com/gh_mirrors/wp/wp-calypso点击查看免费下载Automattic for Agencies简称 A4A是 wp-calypso 仓库中面向代理合作伙伴agency的完整前端应用覆盖合作伙伴门户、站点管理、市场采购、转介绍、迁移与团队协作等业务。本文以仓库根目录 client/a8c-for-agencies/README.md 为骨架完整讲解在本地拉起 A4A 开发环境的每一步并结合仓库源码解析启动命令、开发配置、路由骨架与代码规范让读者既能照做跑通又能理解其底层工作原理。一、A4A 在 wp-calypso 中的定位wp-calypso 是一个以 JavaScript 与 API 驱动的 WordPress.com 客户端单体仓库A4A 前端是其内部一个独立的业务应用代码集中在client/a8c-for-agencies/目录下。它不是一个孤立页面而是一整套按 section 拆分的单页应用路由根路径/直接映射到a8c-for-agencies模块见 client/sections.js也就是说当运行环境是 A4A 时整站默认进入的就是 A4A 应用所有 A4A 相关 sectionlanding、auth、overview、sites、marketplace、purchases、signup、migrations、client、agency-tier 等在 client/sections.js 中统一注册group均为a8c-for-agencies便于按组做代码分割与按需加载。仓库同时提供了生产环境入口可在线体验其前端效果对应文档所述 https://agencies.automattic.com/本地开发则通过一套专用环境配置与脚本完成。二、环境准备在启动前需要准备以下工具git—— 用于克隆仓库Node.js—— wp-calypso 的构建与开发服务器基于 Node 生态yarn—— 仓库使用 yarn 管理依赖与脚本注意使用 yarn classic即 yarn 1.x与仓库的 yarn.lock 匹配。确认工具就绪后克隆本仓库到本地。仓库根目录的 package.json 中定义了后续要用的全部脚本包括start-a8c-for-agencies等。三、本地启动五步跑通 A4A按照 client/a8c-for-agencies/README.md 的 Getting Started完整步骤如下步骤 1确认基础工具确保git、node、yarn均已安装并在 PATH 中可用。步骤 2克隆仓库将 wp-calypso 仓库克隆到本地git clone https://gitcode.com/gh_mirrors/wp/wp-calypso.git cd wp-calypso步骤 3配置 hosts 文件在本地hosts文件中添加一行127.0.0.1 agencies.localhostLinux / macOS 下编辑/etc/hostsWindows 下编辑C:\Windows\System32\drivers\etc\hosts需要管理员权限。这一行至关重要A4A 开发环境的 hostname 被配置为agencies.localhost见下文配置解析开发服务器绑定该域名浏览器也通过该域名访问否则无法命中正确的开发环境。步骤 4安装依赖并启动在仓库根目录依次执行yarn yarn start-a8c-for-agencies第一条命令安装全部依赖与 yarn.lock 对齐第二条命令以 A4A 开发环境模式启动开发服务器。步骤 5访问应用浏览器打开http://agencies.localhost:3000/看到 A4A 前端即表示启动成功。四、启动命令与配置解析start-a8c-for-agencies背后发生了什么yarn start-a8c-for-agencies并不是一个魔法命令它在 package.json 中被定义为start-a8c-for-agencies: CALYPSO_ENVa8c-for-agencies-development yarn run start即先设置环境变量CALYPSO_ENVa8c-for-agencies-development再执行通用的yarn run start启动脚本。CALYPSO_ENV决定了 wp-calypso 加载哪一套配置——对应到 config/a8c-for-agencies-development.json。该文件是整个 A4A 开发环境的配置中枢关键字段如下配置字段值说明env/env_iddevelopment/a8c-for-agencies-development环境标识全局代码据此判断是否处于 A4A 环境hostnameagencies.localhost开发服务器绑定的域名与 hosts 配置对应port3000开发服务器端口protocolhttp本地开发协议site_nameAutomattic For Agencies站点名称themea8c-for-agencies应用主题oauth_client_id95928OAuth 客户端 ID用于登录授权features见配置功能开关如a4a-signup-v2、a4a/site-migration、a8c-for-agencies等sections见配置启用的 section 清单如 overview、sites、marketplace、purchases、signup、migrations 等logout_url见配置登出跳转地址其中env_id的判定逻辑在 client/lib/a8c-for-agencies/is-a8c-for-agencies.ts 中实现它维护了一个 A4A 环境白名单const a4aEnvironments [ a8c-for-agencies-development, a8c-for-agencies-stage, a8c-for-agencies-horizon, a8c-for-agencies-production, ]; const isA8CForAgencies (): boolean a4aEnvironments.includes( config( env_id ) );也就是说仓库为 A4A 准备了 development、stage、horizon、production 四套环境分别对应 config/ 下的a8c-for-agencies-*.json配置本文本地开发使用的是 development 一套。其他相关脚本package.json 中还提供了两条与 A4A 相关的辅助脚本start-a8c-for-agencies-pPORT3002 CALYPSO_ENVa8c-for-agencies-development yarn run build-server ... yarn run start-build先构建服务端再用构建产物启动适合模拟更接近生产的行为端口为 3002docker-a8c-for-agenciesdocker run -it --env CALYPSO_ENVa8c-for-agencies-production --name wp-calypso --rm -p 80:3000 wp-calypso用 Docker 以 production 环境运行将宿主 80 端口映射到容器 3000。五、应用骨架入口、路由与权限守卫了解入口结构有助于理解 A4A 的运行时行为。入口与根路由client/a8c-for-agencies/index.tsx 是 A4A 的入口模块import page from automattic/calypso-router; import { makeLayout, render as clientRender } from calypso/controller; import { redirectToLandingContext } from ./controller; export default function () { page( /, redirectToLandingContext, makeLayout, clientRender ); }根路径/首先进入redirectToLandingContext如果当前处于 A4A 环境则携带原有查询参数重定向到/landing常量定义于 client/a8c-for-agencies/components/sidebar-menu/lib/constants.tsA4A_LANDING_LINK /landing否则跳到自动特的外部代理页面。路由权限守卫client/a8c-for-agencies/controller.tsx 集中定义了多个路由中间件用于对访问做鉴权与分流requireAccessContext若当前用户已关联 agency通过getActiveAgency读取 Redux 状态再经handleMultiUserSupport按 client/a8c-for-agencies/lib/permission.ts 的isPathAllowed判断路径是否允许不允许则回到/overview未关联 agency 时携带return参数重定向到/landing登录后可返回原路径requireClientAccessContext针对 A4A 客户client侧只有确认用户不是 agency 时才放行否则重定向到A4A_CLIENT_LANDING_LINK/client/landingrequireLegacyClientBillingContext根据getUserBillingType判断只有legacy计费类型的用户才可访问否则跳转客户订阅页requireTierAccessContext结合isPathAllowedForTier校验 agency 层级tier对路径的权限无权时渲染TierPermissionError组件见 client/a8c-for-agencies/sections/agency-tier/tier-permission-error.tsxrequireAmplifyAccessContext检查agency?.amplify?.allowed未开通 Amplify 权限时跳回/overview。这套守卫链说明 A4A 的每个业务 section 都受统一的权限模型约束而不是各自为政。六、功能开关与 section 组织A4A 的功能通过配置中的features与sections两个字段控制二者都在 config/a8c-for-agencies-development.json 中显式声明features中的布尔值决定某功能是否启用。例如本地开发默认打开a4a-signup-v2、a4a-unified-onboarding-tour、a4a/site-migration、a8c-for-agencies等同时默认关闭a4a-bd-checkout、a4a-partner-directory等仍在灰度中的能力sections声明启用哪些 section与 client/sections.js 中的注册表一一对应包括 overview、reports、plugins、sites、marketplace、purchases、referrals、settings、partner-directory、migrations、client、team、agency-tier、woopayments、learn、dev-tools、exclusive-offers、amplify 等。调功能时改配置文件即可不需要改动业务代码这也解释了为什么同一份代码可以支撑 development / stage / horizon / production 四套环境。七、常见问题与排错打开agencies.localhost:3000无响应绝大多数情况是 hosts 未配置或配置了但未生效。确认/etc/hosts或 Windows 的 hosts中存在127.0.0.1 agencies.localhost必要时重启浏览器或刷新 DNS 缓存。端口被占用默认端口 3000可像start-a8c-for-agencies-p那样用PORT3002覆盖同时访问http://agencies.localhost:3002/。依赖安装失败确保使用 yarn classic1.x执行yarn与仓库 yarn.lock 保持一致避免与 yarn berry 的行为差异导致安装异常。想模拟生产形态使用yarn start-a8c-for-agencies-p构建后启动端口 3002或 Docker 方式yarn docker-a8c-for-agenciesproduction 环境映射 80 端口。想确认当前是否运行在 A4A 环境判断逻辑统一收敛在 client/lib/a8c-for-agencies/is-a8c-for-agencies.ts依赖env_id是否属于四个 A4A 环境之一。八、A4A 开发规范要点面向二次开发仓库根目录 client/a8c-for-agencies/AGENTS.md 总结了 A4A 代码的约定开发新功能时建议遵循UI 优先复用wordpress/components的既有控件Button、Modal、VStack/HStack、Spacer、Text列表与表单优先使用DataViews/DataForm抽象而不是自造组件埋点规范面向用户的操作表单提交、弹窗开关、文件上传等通过calypso/state/analytics/actions的recordTracksEvent上报事件名统一使用calypso_a4a_前缀样式规范自定义 CSS 以 client/a8c-for-agencies/style.scss 为参照使用 CSS 逻辑属性如margin-inline-start保证 LTR/RTL 兼容颜色使用--color*语义化 token 而非--studio*文案规范UI 文本使用句子式大小写sentence case使用弯引号完整句子以句号结尾逻辑组织数据获取与副作用逻辑优先抽取为自定义 hookLayoutBody的内容抽到同目录独立组件中保持页面组件可读。九、总结A4A 是 wp-calypso 中独立成体系的一套前端应用配置由CALYPSO_ENV驱动的config/a8c-for-agencies-development.json掌控路由由client/a8c-for-agencies/controller.tsx的权限守卫统一把关功能与 section 由配置显式声明。按本文五步即可在本地完整跑通 A4A 前端后续的二次开发可以沿着 client/a8c-for-agencies/ 目录下的 controller、sections、components 与 lib 继续深入。赞分享前端CMS【免费下载链接】wp-calypsoThe JavaScript and API powered WordPress.com项目地址https://gitcode.com/gh_mirrors/wp/wp-calypso点击查看免费下载相关推荐Calypsowp-calypso从零搭建本地开发环境架构、安装、构建与排错全指南Calypsowp calypso从零搭建本地开发环境架构、安装、构建与排错全指南 本指南以仓库根目录 README.md https://link.gi前端CMSwp-calypso A4ALogo 组件深度指南Automattic for Agencies 品牌 Logo 的四种形态与定制实践wp calypso A4ALogo 组件深度指南Automattic for Agencies 品牌 Logo 的四种形态与定制实践 本指南以 wp cal前端CMSQuickwit UI 前端开发指南环境搭建、本地运行、构建与测试全流程Quickwit UI 前端开发指南环境搭建、本地运行、构建与测试全流程 本篇技术指南聚焦 Quickwit 仓库中 quickwit ui 子项目 qui搜索引擎可观测性日志分析链路追踪后端全文检索创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表