GitHub Codespaces
GitHub Codespaces 为任何活动提供云驱动的开发环境 - 无论是长期项目,还是短期任务(如审查拉取请求)。您可以从 Visual Studio Code 或基于浏览器的编辑器中使用这些环境。
环境
环境是 GitHub Codespaces 的“后端”一半。它是与软件开发相关的所有计算发生的地方:编译、调试、还原等。当您需要处理新项目、开始新任务或审查 PR 时,您可以简单地启动一个云托管环境,GitHub Codespaces 会负责正确配置它。它会自动配置您处理项目所需的一切:源代码、运行时、编译器、调试器、编辑器、自定义点文件配置、相关编辑器扩展等等。
自定义
GitHub Codespaces 可以基于每个项目进行完全自定义。这是通过在项目的存储库中包含一个 devcontainer.json
文件来实现的,类似于 VS Code 开发容器 开发。
自定义示例包括
- 设置要使用的基于 Linux 的操作系统。
- 自动安装各种工具、运行时和框架。
- 转发常用端口。
- 设置环境变量。
- 配置编辑器设置并安装首选扩展。
请参阅 配置 Codespaces 文档,了解特定于代码空间的 devcontainer.json
设置。
每个用户的点文件配置
点文件是文件名以点 (.) 开头的文件。它们通常包含应用程序的配置信息,并且可以控制终端、编辑器、源代码管理和各种其他工具的行为。.bashrc
、.gitignore
和 .editorconfig
是开发人员常用的点文件示例。
您可以在创建代码空间时指定一个包含您的点文件的 GitHub 存储库、文件的目标位置以及安装命令。
请参阅 个性化 Codespaces 文档,了解如何将您的点文件配置添加到代码空间。
入门
GitHub Codespaces 客户端都有入门主题。这些将快速引导您登录 GitHub Codespaces、创建您的第一个代码空间,并使用您首选的客户端连接到它
- VS Code 中的 Codespaces - 使用 GitHub Codespaces 扩展来连接并在您的环境中使用。
- 浏览器中的 Codespaces - 通过基于浏览器的编辑器连接到您的代码空间。
扩展作者
VS Code 扩展 API 隐藏了远程运行的大部分实现细节,因此许多扩展程序无需任何修改即可在 GitHub Codespaces 环境中正常工作。但是,我们建议您在代码空间中测试您的扩展程序,以确保其所有功能都按预期工作。有关详细信息,请参阅有关支持远程开发和 GitHub Codespaces的文章。
基于浏览器的编辑器
您还可以在浏览器中获得免费、轻量级的 Visual Studio Code 体验。基于 Web 的编辑器允许您安全快速地浏览 GitHub 的源代码存储库,并进行轻量级的代码更改。您可以在编辑器中打开任何存储库、fork 或拉取请求,该编辑器具有 VS Code 的许多功能,包括搜索和语法高亮显示。如果您想运行或调试代码,您可以切换到云托管环境或 VS Code 桌面。
要访问此基于浏览器的编辑器,您可以转到 github.com 上的存储库,然后按 .(句点键)或将存储库的 URL 更改为 github.dev/org/repo
,将 github.com
替换为 github.dev
。
限制:如果您以隐身模式运行浏览器或启用了广告拦截器,则可能无法使用基于 Web 的编辑器。
注意:此编辑器目前处于技术预览版。您可以立即试用并在 https://github.co/browser-editor-feedback 提供反馈。
已知限制和调整
在使用 Codespaces,特别是 Web 中的 VS Code 时,需要注意某些限制。其中一些限制有解决方法或调整,以提供一致的开发体验。
对于一些问题(特别是键盘快捷键或那些列出桌面解决办法的问题),您可以安装并使用 Codespace 作为渐进式 Web 应用程序 (PWA)。
问题 | 原因 | 解决方法 |
---|---|---|
Ctrl+Shift+P 不会在 Firefox 中启动命令面板。 | Ctrl+Shift+P 在 Firefox 中是保留的。 | 使用 F1 启动命令面板。 |
某些默认键盘快捷键(用于调试)在 Web 中是不同的。 | 由于浏览器可能已经为这些键盘快捷键注册了一个操作,因此我们调整了 Web 中 VS Code 的默认值。 | 使用调整后的默认值。它们会显示在调试操作的工具提示悬停上。
|
用于调试的 F11 在 Web 或桌面上的 macOS 中不起作用。 | 这是一个已知的、非特定于浏览器的限制。更多信息可以在 issue #5102 中找到。 | 禁用 F11 以在 macOS 上显示桌面。
|
在 Web 中,用于新建文件的 Ctrl+N 不起作用。 | Ctrl+N 会打开一个新窗口。 | 用于新建文件的 Ctrl+N 在桌面上有效。 |
在 Web 中,用于关闭编辑器的 Ctrl+W 不起作用。 | Ctrl+W 会关闭浏览器中的当前选项卡。 | Ctrl+W 在桌面上有效。 |
Ctrl+Shift+B 不会切换浏览器中的收藏夹栏。 | Codespaces 会覆盖此项并重定向到命令面板中的“构建”菜单。 | 当前没有解决方法。 |
将文件从 VS Code 拖放到 Codespace(反之亦然)不起作用。 | 您可以在 issue #115535 中查看更多上下文。 | 这里有几个选项:
|
Web 中不支持 Angular 应用程序调试。 | 出于安全原因,在浏览器中运行的代码无法以调试模式启动另一个浏览器实例。 | 您有几个选项:
|
从浏览器下载没有扩展名的文件会自动添加“.txt”。 | 这是 Chrome 和 Edge 的行为方式。 | 有关上下文和潜在的未来解决方案,请参阅 issue #118436。 |
当您从远程(包括 Codespaces)下载文件时,会删除诸如可执行位之类的属性。 | 有关上下文和潜在的未来解决方案,请参阅 issue #112099。 | 当前没有解决方法。 |
当尝试从 Codespace 下载某些文件夹时,您可能会看到提示“Your_codespace_name 无法打开此文件夹,因为它包含系统文件”。 |
用户代理可以自由地对敏感目录施加限制级别。更多信息请参见 此规范 和 Chromium 的阻止列表。 | 除了规范和阻止列表之外,没有其他解决方法。 |
手动访问 https://127.0.0.1:forwarded_port 将无法访问 Web 中 Codespace 的转发端口。 |
这是基于 Codespaces 如何处理端口转发并为 Web 生成正确的 URL。 | 单击端口转发通知中的链接以打开您的应用程序,或单击 端口视图 中的地球图标,两者都将提供正确生成的链接。更多信息请参见 Codespaces 文档。 |
某些扩展在 Web 中的行为有所不同
扩展 | 问题/原因 | 解决方法 |
---|---|---|
键盘快捷键与浏览器快捷键重叠的扩展,例如 Git Graph,它使用 Ctrl+R 进行刷新。 | 键盘快捷键可能与现有的浏览器快捷键重叠,例如 Ctrl+R 在 Safari 中刷新窗口。 | 您可以使用基于桌面的而不是基于 Web 的 Codespace 来充分利用您的键盘快捷键。不同的浏览器也可能有不同的行为(您可以在 Chrome 中刷新 Git Graph)。 |
语言包,例如 Visual Studio Code 的日语语言包 | 基于 Web 的 Codespace 当前不支持语言包扩展。 | 您可以使用基于桌面的 Codespace 来使用语言包并配置显示语言。 |
Bracket Pair Colorizer 2 | 它不会在浏览器中工作,因为它引入了一个不容易修复的安装位置依赖项。 | 使用 Bracket Pair Colorizer。 |
浏览器调试器,例如 Debugger for Firefox。 | 需要 UI/桌面扩展主机的扩展不会在浏览器中加载。 | 您可以在本地 VS Code 中使用这些扩展(未连接到 Codespaces)。或者,当您的应用程序从 Codespace 运行时,您可以使用其他替代方案,例如 Chrome DevTools 来检查元素和设置断点。 |
打开浏览器的扩展,例如 open in browser。 | 需要 UI/桌面扩展主机的扩展不会在浏览器中加载。 | 如果可能,请使用替代扩展,例如 Live Server。 |
Project Manager | Project Manager 依赖于同步自定义的 projects.json 文件,而 当前不支持 此操作。 |
您可以在桌面 Codespace 或本地 VS Code 中使用该扩展来保存和管理您的项目,因为这些选项不需要同步自定义文件。 |
依赖于 Chrome 的扩展,例如 Protractor Test Runner 和 Browser Preview。 | Codespace 中不包含 Chrome。 | 尝试寻找替代方案,或者您可以在本地 VS Code(未连接到 Codespaces)中使用这些扩展。 |
Flutter(以及整体 Flutter 开发) | 由于 Docker 容器和 Codespaces 的性质,Flutter 工作流程的几个方面受到限制。
|
您可以使用本地 VS Code 进行 Flutter 开发。 |
LaTeX Workshop | 该扩展提供了三种功能来帮助进行 LaTeX 创作:1) 一组展示常用命令的视图,2) 一个 PDF 预览器,以及 3) 代码片段和 IntelliSense 等语言功能。该扩展功能相当完整,但存在一些 Web 或安全限制。 | 以下解决方法解决了视图和预览器功能区域的限制
|
Git Graph | 某些 Git Graph Webview 功能在 Codespaces 中可能会受到限制。例如,在提交中的文件和 Git Graph Webview 之间切换可能会使 Webview 为空白。 | 您可以在 VS Code 桌面版中完全使用 Git Graph。 |
其他 远程开发扩展(WSL、开发容器、远程 - SSH)无法安装在 Codespace 中。 | Codespace 已经是一个远程上下文。 | 如果您想在另一个远程上下文(例如 WSL 或远程 SSH 计算机)中运行,请打开 VS Code 桌面版(未连接到 Codespace)并启动其他远程扩展之一。如果您想使用 自定义开发容器,则可以在 Codespaces 和开发容器中使用相同的 .devcontainer 。 |
My_Favorite_Extension 不起作用,并且未在上面列出。 | 还有一些其他问题可能会阻止功能在远程环境中按预期工作。 | 在某些情况下,您可以使用另一个命令来解决该问题,但在其他情况下,可能需要修改扩展。请查看 远程扩展提示,了解常见的远程问题以及解决这些问题的技巧。 |
常见问题
为什么扩展无法在浏览器中安装
少数扩展具有内置假设或需要在桌面上运行。例如,当扩展从桌面上的 VS Code 安装访问文件,或者当扩展依赖于必须在桌面环境中运行的可执行文件时。当您尝试在浏览器中安装此类扩展时,系统会通知您该扩展不可用。
注意当从桌面上运行的 VS Code 连接到 Codespace 时,仍然可以使用此类扩展。
如何允许 VS Code 访问我的剪贴板进行读取?
在某些情况下,当从剪贴板读取时,VS Code 可能会要求您允许访问剪贴板。您应该可以通过设置(搜索“网站权限”)或在地址栏右侧查找此选项,从浏览器授予对剪贴板的访问权限
一旦您授予 VS Code 访问剪贴板的权限,您就可以重试该操作。
如何允许 VS Code 始终打开新的选项卡和窗口?
有时,浏览器会作为安全预防措施,阻止 VS Code 打开新的选项卡或窗口。如果发生这种情况,VS Code 将检测到阻止操作并明确提示用户。但是,您可以通过在浏览器导航栏的上下文菜单中打开站点设置,并通过允许弹出窗口,来允许 VS Code 始终打开新的窗口和选项卡。
如何允许浏览器中的 VS Code 访问本地文件和文件夹?
从浏览器在 VS Code 中打开本地文件和文件夹需要浏览器支持 文件系统访问 API。截至今天,Microsoft Edge 和 Google Chrome 都提供了这种级别的支持。如果您想在浏览器中使用 VS Code 时访问本地文件和文件夹,请考虑切换到这两个浏览器之一。
问题或反馈
如果您有任何疑问,可以查阅 GitHub Codespaces 故障排除指南。如果您想提供反馈,可以在 GitHub Codespaces 讨论区 中提交问题。