首页/新闻资讯/正文详情

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

发布时间:2026/9/24 2:29:40 来源:云帆数科 栏目:资讯中心
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),仅供参考

相关推荐

LTspice导入厂商SPICE模型:.lib与.sub文件操作及常见报错排查
LTspice导入厂商SPICE模型:.lib与.sub文件操作及常见报错排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 2:29:40

VGG19 ImageNet 图像分类 PaddleHub 模块:模型安装、命令行预测与 Python API 使用指南
VGG19 ImageNet 图像分类 PaddleHub 模块:模型安装、命令行预测与 Python API 使用指南

人工智能大模型微调模型推理服务 【免费下载链接】PaddleFormers PaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle. 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleFormers 点击查看 免费下载 本文… · 2026/9/24 2:29:22

Play Framework 官方示例学习指南:基于 play-samples 从 Hello World 到进阶实战
Play Framework 官方示例学习指南:基于 play-samples 从 Hello World 到进阶实战

后端Web框架 【免费下载链接】playframework The Community Maintained High Velocity Web Framework For Java and Scala. 项目地址: https://gitcode.com/gh_mirrors/pl/playframework 点击查看 免费下载 本指南围绕 Play Framework 官方维护的 play-samples 示例… · 2026/9/24 2:29:16

通达信指标-主图一个副图二个
通达信指标-主图一个副图二个

在股票交易的实战中,很多投资者往往只盯着 K 线的涨跌,却忽略了图表背后隐藏的数据信号。当我们打开交易软件,默认看到的通常只是简单的价格和成交量,但对于想要精细化操作、尤其是希望通过日内波动降低成本或捕捉趋势转折点的交易… · 2026/9/24 3:18:22

从对话窗口到办公文档:AI内容导出这件事,为什么值得单独做个工具
从对话窗口到办公文档:AI内容导出这件事,为什么值得单独做个工具

导出的本质,是一次跨格式的语义翻译 AI对话窗口里的内容看起来像一篇文章,但它并不是。它是一组由前端渲染器实时拼装的结构:角色标签、时间戳、Markdown标题、LaTeX公式、Mermaid图表定义、代码块、表格。这些东西在浏览器里显示正常&#x… · 2026/9/24 3:17:33

Orleans 失败处理实战:未知结果、幂等去重与重试策略设计
Orleans 失败处理实战:未知结果、幂等去重与重试策略设计

后端微服务 【免费下载链接】orleans Cloud Native application framework for .NET 项目地址: https://gitcode.com/gh_mirrors/or/orleans 点击查看 免费下载 本文围绕 Orleans 官方部署指南 handling-failures.md 展开,系统讲解 .NET 云原生框架 Orl… · 2026/9/24 3:17:33

Mineradio 安全策略与隐私边界:版本支持、纯净安装与敏感数据防护指南
Mineradio 安全策略与隐私边界:版本支持、纯净安装与敏感数据防护指南

桌面应用音视频 【免费下载链接】Mineradio-paused 一款以电影镜头、粒子视觉和歌词舞台为核心的沉浸式音乐播放器。 项目地址: https://gitcode.com/gh_mirrors/mi/Mineradio-paused 点击查看 免费下载 本文基于 Mineradio 开源仓库的 SECURITY.md 编写&#xff0… · 2026/9/24 3:17:21

金舟军谢宁DOE培训课程
金舟军谢宁DOE培训课程

谢宁DOE培训 培训课程大纲 一.培训目的:通过本课程的学习,使学员能掌握谢宁(Shainin)DOE工具解决工艺过程质量问题。 二.培训对象:产品设计开发人员、工艺设计开发人员、质量人员、管理质量工程师和现场工程师。 三.培训课程内容 1.谢宁系统ShaininSyste… · 2026/9/24 3:16:44

spotifyd 的 systemd 服务化运行完全指南:用户级与系统级部署、单元文件解析与踩坑规避
spotifyd 的 systemd 服务化运行完全指南:用户级与系统级部署、单元文件解析与踩坑规避

音频后端 【免费下载链接】spotifyd A spotify daemon 项目地址: https://gitcode.com/gh_mirrors/sp/spotifyd 点击查看 免费下载 本篇技术指南围绕 docs/src/advanced/systemd.md 展开,系统讲解如何在 systemd 发行版上把 spotifyd 部署为常驻后台服务… · 2026/9/24 3:16:38

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码