用途
该技能用于在 Meteor 的社区包目录中完成包的发现、比较、首次采用、配置与调试,也用于从社区包迁移到核心包。它把 Meteor 社区包页面当作经过整理的发现目录,但明确说明:列表收录并不使包成为 Meteor 核心的一部分,不把维护权转移给 Meteor 组织,也不保证兼容每一个 Meteor 3 版本。只有在检查包的归属、当前发布版本、支持的 Meteor 范围以及对应用行为的改变之后,才应选择某个包。
该技能负责包的发现、比较、首次采用以及 Meteor 核心文档中记录的包特定集成。它不替代方法、发布订阅、Mongo、账户、安全、测试、构建或部署等核心技能。
决策流程
- 定义缺失的能力以及必须保持不变的行为。区分“新采用”与“在 Meteor 升级过程中停止解析的包”;后者应路由到 migrate-to-meteor-3。
- 检查 .meteor/release、.meteor/packages、.meteor/versions、package.json 以及 npm 锁文件。包 API 遵循解析后的包版本,而不仅仅是 Meteor 发行版。
- 当请求匹配文档目录或已提升的包时,阅读 references/package-catalog.md。只打开所选包的本地指南,在回应前阅读其基线、选择规则和必需检查。然后查阅其链接的上游仓库,以获取超出 Meteor 维护指南的 API 或版本。
- 正确分类候选包:文档列出的社区包保留其指定维护者和独立发布周期;Meteor Community 下的包是社区维护,不是 Meteor 核心;提升的核心包(如 Meteor 3.1+ 的 roles)使用核心包名和 Meteor 文档。
- 比较行为,而不是功能标签。识别猴子补丁、改变的查询或删除语义、客户端持久化、重放、外部端点、数据库拓扑要求以及生产运行时影响。
- 从官方文档核实 Meteor 最低版本,从注册表或仓库核实包版本。如果文档未说明最低版本,应如实说明并检查当前发布版本,而不是推断支持。
- 通过包文档记录的生态安装。Atmosphere 包使用 meteor add,npm 包使用 meteor npm install。不要臆造版本约束。安装后,在 .meteor/versions 或 npm 锁文件中确认解析版本。对于 Meteor 3.6-beta.0 的交互式或基于 Git 的 Atmosphere 采用,阅读 package installation。在脚本中使用显式注册表名称;保留 npm 工作区选定的管理器。
- 应用所选包指南中每一项相关的必需检查。不要只询问项目路径就停止。如果文件不可用,应把确切的版本、安全、行为和测试检查列为必需的后续步骤。对于指南未覆盖的选项,应针对上游仓库核实解析版本,而不是从另一个发行版外推。
- 添加最小的代表性集成,并测试其包特定行为以及底层 Meteor 不变量。授权、验证、发布选择器、索引、事务设计、构建输出或部署架构应使用所属核心技能。
生态选择
当能力依赖 Meteor 包、客户端/服务器打包、Meteor 构建插件、包全局变量或 Meteor 约束求解器时,使用 Atmosphere 包。对于通用 JavaScript 库和为 npm 生态设计的包,使用 npm。一个 Meteor 应用可以同时使用两者。
Atmosphere 和 Packosphere 暴露包元数据。Packosphere 的维护信号有助于分诊,但不能替代检查源仓库、发布历史、未解决的兼容性问题、许可证和解析版本。
有用的检查命令:
meteor --version
meteor show <atmosphere-package>
meteor list
meteor npm view <npm-package> version
采用检查
对于每个选定的包,回应必须报告:
- 为什么它比文档记录的替代方案更合适。
- 谁维护它,以及它是社区维护还是核心。
- 如何核实当前上游发布和解析的包版本,以及文档记录的 Meteor 边界。
- 它改变了哪些应用语义。
- 它暴露了哪些数据、端点或服务器能力。
- 如何移除或回滚该集成。
- 来自所选指南的具体聚焦测试,证明预期行为及其安全边界。
把包装器视为扩展,而不是 Meteor 安全模型的替代品。方法和发布辅助函数仍然需要服务器授权和参数验证。客户端持久化仍然需要最小权限的数据选择。外部方法桥接需要明确的暴露和认证审查。对于 Wormhole 或其他外部方法桥接,回应必须包含暴露前检查清单,涵盖方法清单、现有认证与授权、输入验证、速率限制、副作用、返回字段、凭据测试,以及未暴露方法保持不可达的证明。
路由
| 请求 | 所属技能 |
|---|---|
| 包在升级期间无法解析、构建或支持 Meteor 3 | migrate-to-meteor-3 |
| 方法实现、验证、乐观 UI 或速率限制 | meteor-methods |
| 发布设计、授权或响应式数据语义 | meteor-pubsub |
| 集合选择器、索引、Change Streams 或 Mongo 行为 | meteor-mongo-minimongo |
| 账户与授权设计,包括角色如何保护服务器操作 | meteor-accounts 和 meteor-security |
| 集群拓扑或生产发布 | meteor-deployment |
| 发布或维护 Atmosphere 包 | 包创作工作流,不是本技能 |
反模式
- 仅因为某个包出现在 Meteor 文档中就推荐它。
- 把 Meteor Community 所有权当作 Meteor 核心支持。
- 因为本技能支持所有 Meteor 3 发行版,就假设某个包也支持。
- 不检查已安装包版本就复制最新 API。
- 在选择数据模型之前同时添加两种替代方案,例如归档和软删除。
- 让包装器的默认值悄悄削弱方法、发布或数据访问控制。
- 把兼容性桥接作为新系统的默认架构。
参见
- references/package-catalog.md
- references/eval-cases.md