- 发布信息:已发布
devenv 1.0
(https://devenv.sh/),这是 CLI 到 Rust 的重写,带来许多新功能和改进。 - 重写原因:一是 Python 重写时速度未达预期,二是 Nix 社区关于 flakes 存在争议,未来可使用相同 Rust 库和工具。
新功能亮点:
- 默认进程管理器:
devenv up
使用process-compose
,处理进程间依赖并提供 ncurses 界面。 - 测试基础设施:
devenv.nix
中的enterTest
属性可定义测试逻辑,运行devenv test
可执行测试,包含所有工具和进程,方便集成和功能测试。 - devenv-nixpkgs:创建用于在
nixpkgs-unstable
上运行测试的devenv-nixpkgs
,运行约 300 个不同语言和进程的测试。 - 非 root 容器:生成的容器以普通用户运行,提高安全性。
- DEVENV_RUNTIME:引入环境变量
DEVENV_RUNTIME
,默认指向$XDG_RUNTIME_DIR
, fallback 到/tmp
。 - Python 原生库支持:解决 Nix 中使用
pip
工具的问题,可在 Python 中使用原生库。 - CLI 改进:添加输入、更新单个输入、构建
devenv.nix
中的属性、以特定方式运行环境等命令,调整默认核心数和max-jobs
。
- 默认进程管理器:
迁移指南:
- 弃用:
devenv container --copy <name>
重命名为devenv container copy <name>
,devenv container --docker-run <name>
重命名为devenv container run <name>
,devenv ci
重命名为devenv test
且范围更广。 - 破坏性变化:
.env
文件需以.env
前缀开头,默认去除--impure
标志,builtins.currentSystem
不再工作,需使用pkgs.stdenv.system
,新生成的devenv.lock
不能用于旧版本。
- 弃用:
未来展望:
- 在容器中运行
devenv
:支持在容器内运行devenv shell
和devenv test
,方便复杂环境设置和测试。 - 生成包含完整环境的容器:
enterShell
可作为容器生成的一部分执行。 - macOS 支持生成容器:目前不支持,未来有望实现。
- 原生映射依赖:使
devenv
能将语言特定依赖映射到本地系统。
- 在容器中运行
总结:devenv 1.0
重写为 Rust 带来多方面改进,有迁移指南和未来展望,鼓励用户尝试并反馈。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。