Codex 是一个可以让你轻松地创建隔离环境的 shell 与 container 的命令行工具。首先定义你开发环境中所需的软件包列表,随后 Codex 使用该定义来为你的应用程序创建一个隔离的环境。
在实践中,Codex 的工作方式类似于像 yarn
这样的软件包管理器——只不过它所管理的软件包是操作系统级别的。(这些包你通常会通过 brew
和 apt-get
来进行安装)。使用 Codex,你可以从 Nix 软件包注册表中安装超过 400,000 个软件包版本。
Codex最初由 Khulnasoft 进行开发,其内部由 nix
驱动。
你可以点击下面的按钮在浏览器中试用 Codex:
下面的例子创建了一个带有 python 2.7
和 go 1.18
的开发环境,尽管这些包并没有在底层机器中被安装。
使用以下安装脚本获取最新版本的 Codex:
curl -fsSL https://raw.githubusercontent.com/khulnasoft/CodeX/master/codex | bash
在 Codex 文档中阅读更多内容。
通过 codex.json
文件来声明项目中所需要的工具列表,并运行 codex shell
。这样,参与项目工作的每一个人都会获得一个与这些工具完全版本的 shell 环境。
由 Codex 创建的开发环境与你的笔记本电脑中的其他东西是隔离的。有什么工具你想尝试,却又不想把环境弄得一团糟?可以把这个工具添加到 Codex 的 shell 中,而当你不再需要它的时候,就可以把它删除——同时保持你的笔记本电脑始终是原始的状态。
Codex可以在你的笔记本电脑上直接创建隔离环境,而不需要额外的虚拟化以至于使得你的文件系统或每个命令都变得缓慢。当你准备打包时,就可以把它变成等效的 container。
你是否正在处理多个项目,而所有这些项目都需要同一个二进制文件的不同版本?与其尝试在你的笔记本电脑上安装同一个二进制文件的冲突版本,不如为每个项目创建一个隔离环境,并为每个项目使用你想要的任何版本。
Codex 的开发环境是可移植的。我们使您能够只声明一次环境,并以多种不同方式使用这个单一定义,包括:
- 通过
codex shell
创建的本地 shell - 可在 VSCode 中使用的开发容器
- 一个 Dockerfile,这样你可以用与你开发时使用的完全相同的工具构建生产镜像
- 在云端的远程开发环境,该环境与本地环境完全一致
在这个快速入门中,我们将创建一个安装了特定工具的开发 shell。这些工具只有在使用这个 Codex shell 时才能使用,以确保我们不会污染你的机器。
-
在一个新的空文件夹中打开一个终端。
-
初始化 Codex:
codex init
这将在当前目录下创建一个
codex.json
文件。你应该把它提交到源码控制里。 -
从 Nix 添加命令行工具。例如,要添加Python 3.10:
codex add python310
在 Nixhub.io 上搜索更多软件包。
-
你的
codex.json
文件记录了你所添加的软件包,它现在应该看起来是这样的:{ "packages": [ "python310" ] }
-
启动一个安装了这些工具的新shell:
codex shell
你可以看出你是在 Codex shell 中(而不是你的普通终端),因为 shell 的提示和目录已经改变。
-
使用你喜欢的工具。
在这个例子中,我们安装了 Python 3.10,所以让我们使用它吧。
python --version
-
你的常规工具也是可用的,包括环境变量和配置设置。
git config --get user.name
-
要退出 Codex shell 并返回到你的常规 shell:
exit
在 Codex 文档快速入门中阅读更多内容。
codex help
,用来查看所有的命令。
请参阅 CLI 参考以获取完整的命令列表。
- 通过加入 Khulnasoft Discord Server 来与我们聊天——我们有一个 #codex 频道专门用于这个项目。
- 使用 Github Issues 提交错误报告和功能请求。
- 在 Khulnasoft’s Twitter 上关注我们的产品更新。
Codex 是一个开源项目,所以欢迎贡献。在提交拉取请求之前,请阅读我们的贡献指南。
感谢 Nix 所提供的独立的shell。
本项目在 Apache 2.0 License 下自豪地开放源代码。