5.4 KiB
title, intro, product, permissions, redirect_from, versions
| title | intro | product | permissions | redirect_from | versions | |||
|---|---|---|---|---|---|---|---|---|
| Configuring Codespaces for your project | You can set up a default configuration for every new codespace for your repository to ensure that contributors have all the tools and settings they need in their online development environment. | {% data reusables.gated-features.codespaces %} | People with write permissions to a repository can create or edit the default codespace configuration. |
|
|
{% data reusables.codespaces.release-stage %}
About default codespace configurations
{% data reusables.codespaces.about-configuration %}
If you don't define a configuration in your repository, {% data variables.product.prodname_dotcom %} creates a codespace with a base Linux image. The base Linux image includes tools for Node.js, JavaScript, TypeScript, Python, C++, Java, C#, .NET Core, PHP, and PowerShell. For more information about the base Linux image, see the microsoft/vscode-dev-containers repository.
{% data reusables.codespaces.about-personalization %} {% data reusables.codespaces.codespace-config-order %} For more information, see "Personalizing {% data variables.product.prodname_codespaces %} for your account."
You can create a default codespace configuration using a pre-built container configuration for your project type, or you can create a custom configuration specific to your project's needs.
{% data variables.product.prodname_codespaces %} uses settings contained in a configuration file named devcontainer.json. {% data reusables.codespaces.devcontainer-location %}
You can use your devcontainer.json to set default settings for the entire codespace environment, including the {% data variables.product.prodname_vscode %} editor, but you can also set editor-specific settings in a file named .vscode/settings.json.
Changes to a repository's codespace configuration apply only to every new codespace and do not affect any existing codespace.
Using a pre-built container configuration
You can use any pre-built container configuration for {% data variables.product.prodname_vscode %} that is available in the vscode-dev-containers repository. Pre-built container definitions include a common configuration for a particular project type, and can help you quickly get started with a configuration that already has the appropriate container options, {% data variables.product.prodname_vscode %} settings, and {% data variables.product.prodname_vscode %} extensions that should be installed.
- Clone or download the
vscode-dev-containersrepository. - In the
vscode-dev-containersrepository, navigate to thecontainersfolder, then choose a container configuration for your project's needs. We'll use the Node.js & JavaScript container configuration as an example. - From the
Node.js & JavaScriptfolder, copy the.devcontainerfolder to the root of your project's repository. - Commit and push the new configuration to your project's repository on {% data variables.product.prodname_dotcom %}.
Each new codespace created from a branch which contains the .devcontainer folder will be configured according to the folder's contents. For more information, see "Creating a codespace."
Creating a custom codespace configuration
If none of the pre-built configurations meet your needs, you can create a custom configuration by adding a devcontainer.json file. {% data reusables.codespaces.devcontainer-location %}
In the file, you can use supported configuration keys to specify aspects of the codespace's environment, like which {% data variables.product.prodname_vscode %} extensions will be installed.
{% data reusables.codespaces.vscode-settings-order %}
You can define default editor settings for {% data variables.product.prodname_vscode %} in two places.
- Editor settings defined in
.vscode/settings.jsonare applied as Workspace-scoped settings in the codespace. - Editor settings defined in the
settingskey indevcontainer.jsonare applied as Remote [Codespaces]-scoped settings in the codespace.
Supported codespace configuration keys
You can use configuration keys supported by {% data variables.product.prodname_codespaces %} in devcontainer.json.
General settings
namesettingsextensionsforwardPortsdevPortpostCreateCommand
Docker, Dockerfile, or image settings
imagedockerFilecontextcontainerEnvremoteEnvcontainerUserremoteUserupdateRemoteUserUIDmountsworkspaceMountworkspaceFolderrunArgsoverrideCommandshutdownActiondockerComposeFile
For more information about the available settings for devcontainer.json, see devcontainer.json reference in the {% data variables.product.prodname_vscode %} documentation.