Setting up the extension
Important defaults
There are a few important defaults that you should be aware of when using this extension. For most users, the default settings should work fine but you might want to change them depending on your needs.
Finding the mise
executable
By default, the extension will try to find the mise
executable on the PATH
. Otherwise, it will try a few common locations and update the mise.binPath
setting automatically.
This might not work for you so make sure to update it manually if needed. You can also turn off the automatic detection if needed
Automatic configuration of VS Code extensions
By default, this extension will modify your .vscode/settings.json
file so that other extensions you use will use the tools you installed with mise
.
This might be a problem if you are sharing the .vscode/settings.json
file with others. (e.g., in a Git repository)
- This can be turned off if you don’t want this behavior.
- Alternatively, you can configure the extension to create symlinks to tools so that the settings points to a relative path in your project. Use
mise.configureExtensionsUseSymLinks
for this.
About sharing .vscode/settings.json
If you are sharing the .vscode/settings.json
file with others, you might think that the default value of this extension is not a good idea.
However, there are some challenges with sharing .vscode/settings.json
:
- If you use extensions other members of your team don’t have, you won’t be able to update the settings file without conflicts.
- If you would like some settings to be different for different members of your team, you won’t be able to do so.
Ideally, VS Code should support a settings.local.json
file that would be ignored by git. See this issue for more information.
If you want to share some settings with others, here are some good workarounds:
- Git ignore the
.vscode/settings.json
file. Create asettings.shared.json
file that other can use as a reference. Set up amise
task to populate yoursettings.json
file with the content ofsettings.shared.json
if needed. - Use extension such as workspace-config-plus to have a
settings.local.json
file that is ignored by git.
Controlling which extensions are configured automatically
You can control which supported extensions are automatically configured by mise-vscode using the following settings in your VS Code settings (user or workspace):
mise.configureExtensionsAutomaticallyIgnoreList
: List of extensions that should not be configured automatically.mise.configureExtensionsAutomaticallyIncludeList
: List of extensions that should be configured automatically.
How it works:
- If the include list is set and non-empty, only extensions in this list are considered for automatic configuration.
- If both include and ignore lists are set, the ignore list takes precedence (extensions in the ignore list are always excluded).
- If the include list contains
"all"
, all supported extensions are considered (except those in the ignore list). - If the include list is empty or not set, no extensions are configured automatically, and the extension will not modify your
.vscode/settings.json
file. - If
mise.configureExtensionsAutomatically
is set tofalse
, no extensions will be configured automatically, regardless of the include or ignore lists.
You can find the full list of supported extensions in the Supported Extensions documentation.
Example usage in your settings.json
:
{ "mise.configureExtensionsAutomaticallyIncludeList": ["ms-python.python", "golang.go"], "mise.configureExtensionsAutomaticallyIgnoreList": ["denoland.vscode-deno"]}
This will configure only Python and Go extensions, and will always ignore Deno, even if it is in the include list.
Advanced: Fine-grained control with user and workspace settings
You can take advantage of VS Code’s user and workspace settings to control which extensions are configured automatically at different levels. For example, you can set a global default at the user level and then override it at the workspace level for specific projects.
This allows you to have a flexible setup where you can control which extensions are configured automatically based on your needs.
To do this, set the mise.configureExtensionsAutomaticallyIncludeList
to an empty array at the user level, and then specify the desired extensions at the workspace level in your .vscode/settings.json
file.
User settings (settings.json
):
{ "mise.configureExtensionsAutomaticallyIncludeList": []}
Workspace settings (.vscode/settings.json
):
{ "mise.configureExtensionsAutomaticallyIncludeList": [ "denoland.vscode-deno" ]}
With this setup, only the deno
extension will be configured automatically for your project. However, if you open another project that does not specify the mise.configureExtensionsAutomaticallyIncludeList
, no extensions will be configured automatically.
Note that updating this setting might require you to reload the VS Code window for the changes to take effect.
Automatic loading of environment variables
The extension will load the environment variables provided by mise
and update the VS Code process with them.
This is generally a useful feature, though it might have unwanted side effects among which:
- showing a warning icon indicating that you need to restart your terminal when some environment variables are updated
- if you use the VS Code terminal and leave the current directory (with e.g.
cd ..
), the environment variables will still be there (whereas if it’s off,mise
will unload the environment variables when you leave the directory) You can turn this off if needed.
Additional notes
The extension will prompt you if a new mise version is available to help to be up-to-date. You can turn this off if you don’t want to see this message.
I try to not show too many notifications in general. If there is one that you would like to ignore and cannot find a way to do so, please let me know by opening an issue.