PureScript 项目发布指南:维护者必备手册
前言
PureScript 作为一种强类型的函数式编程语言,其编译器项目的发布流程需要严格把控。本文将为项目维护者详细介绍 PureScript 编译器的完整发布流程,包括前期准备、候选版本发布、正式版本发布以及后续工作。
发布前准备工作
账户权限准备
- Hackage 账户:需要拥有对
purescript
包的维护权限 - NPM 账户:需要拥有对
purescript
包的发布权限 - 本地环境:
- 安装最新版 spago 工具链
- 确保已登录 NPM 账户(可通过
npm whoami
验证)
兼容性测试
在发布前必须进行全面的兼容性测试:
# 创建测试目录
mkdir testPackageSet && cd testPackageSet
# 初始化项目并升级包集合
spago init
spago upgrade-set
# 安装所有包集合中的依赖
spago install $(spago ls packages | cut -f 1 -d ' ' | tr '\n' ' ')
# 验证编译和文档生成
stack exec bash <<EOF
spago build
spago docs -S
EOF
文档检查
必须确保以下文档内容是最新的:
- INSTALL.md 中的 GHC 版本信息
- 支持的操作系统列表
- 源码构建指南
- 非官方安装方法的有效性
许可证更新
使用 make license-generator
命令重新生成项目许可证文件。
重大变更处理策略
核心库更新
如果语言层面有破坏性变更,需要同步更新:
- 核心库集合
- 社区贡献库
- Node.js 绑定库
- Web 相关绑定库
工具链适配
当编译器 CLI 接口变更时,需要检查:
- spago 构建工具
- pulp 项目工具
- psc-package 包管理器
- purs-loader Webpack 插件
- 各类 IDE 插件
JSON 格式变更
特别注意以下 JSON 格式的变更影响:
- Corefn 中间表示
- IDE 协议格式
purs publish
输出格式(影响 Pursuit 文档平台)
发布候选版本流程
-
版本号更新:
- 更新
purescript.cabal
中的版本号 - 在
app/Version.hs
中设置-rc.0
预发布标识 - 同步更新 npm 包的
package.json
- 更新
-
自动发布:
- 合并 PR 后会自动发布候选版本
- 无需手动创建 GitHub 发布
-
安装验证:
- 通过
npm i purescript@next
验证安装
- 通过
正式版本发布流程
-
最终测试:
- 确保候选版本在各类项目中运行正常
-
版本号固化:
- 清除
app/Version.hs
中的预发布标识 - 更新所有相关文件中的版本号
- 清除
-
更新日志处理:
- 运行
stack update-changelog.hs
整理变更记录 - 将
CHANGELOG.d
内容合并到CHANGELOG.md
- 运行
-
创建正式发布:
- 在 GitHub 上创建发布并添加说明
- CI 会自动构建并上传预编译二进制包
-
包发布:
- 使用
stack upload .
发布到 Hackage - 在
npm-package
目录执行npm publish
- 添加 dist-tag:
npm dist-tag add purescript@VERSION next
- 使用
发布后工作
-
文档更新:
- 更新语言特性文档
- 验证入门指南的有效性
-
生态系统同步:
- 必要时更新 Pursuit 文档平台
- 创建新的包集合
- 更新 Try PureScript 在线环境
-
发布公告:
- 在社区论坛发布公告
- 更新 Discord 频道
- 通过 Twitter 等社交媒体宣传
异常处理原则
如果发布出现问题:
- 不要删除已发布的版本或标签
- 创建新版本修复问题
- 在问题版本的发布说明和变更日志中添加警示信息
- 引导用户使用修复后的版本
通过遵循这套严谨的发布流程,可以确保 PureScript 编译器的每个版本都能稳定可靠地服务于开发者社区。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考