GitHub Codespaces

We provide support for running trunk in GitHub Codespaces.

Github Codespaces are fully configured virtual containers for developing your GitHub repositories.

Installing the Trunk Feature

You can install the Trunk Launcher in your codespace by including the following line in your devcontainer.json file under features:

    "features": {
      "ghcr.io/trunk-io/devcontainer-feature/trunk": "latest",
    },

The feature is defined here.

To have the launcher binary install the CLI tool and associated linters, you can add trunk install to updateContentCommand in devcontainer.json:

"updateContentCommand": "trunk install",

From the GitHub documentation:

You can use the onCreateCommand and updateContentCommand commands in your devcontainer.json to include time-consuming processes as part of the prebuild creation. For more information, see the Visual Studio Code documentation, "devcontainer.json reference."

onCreateCommand is run only once, when the prebuild is created, whereas updateContentCommand is run at > creation of the prebuild and at subsequent updates to it. Incremental builds should be included in updateContentCommand since they represent the source of your project and need to be included for every prebuild update.

Note: You should only add trunk install if you have a Trunk-configured repository.

You can then configure pre-builds to run from GitHub workflows, ensuring the trunk CLI and needed linters are available and ready to go when you need to boot up your codespace.

Installing the Trunk Extension

If you are using the Trunk feature, we will automatically install the Trunk extension on your behalf. Note: We highly recommend turning off auto-save in your VSCode settings in your codespace (or to a longer timeout). Saving files triggers the extension to re-lint, which can quickly overload the extension for anything but the fastest linters. The auto-save setting is detailed here.

Otherwise, You can add trunk to your list of extensions in devcontainer.json -

    "customizations": {
      "vscode": {
        "extensions": [..., "trunk.io"]
      }
    },

Then you're all set to run trunk in your Codespace!

Last updated