devcontainers / devcontainers/spec
🚀 Feature Request: Support extension version pinning in devcontainer.json
- Lingua principale
- Nessun dato sulla lingua
- Stelle
- 5.7k
- Fork
- 496
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
### Problem
Currently, when defining extensions in `devcontainer.json`:
```json
{
"customizations": {
"vscode": {
"extensions": [
"ms-dotnettools.csharp"
]
}
}
}
```
The latest version of the extension is always installed.
This creates issues in team environments because:
* Extension updates can introduce breaking changes
* Developers may end up with inconsistent environments
* Builds and development workflows become less predictable
---
### Proposed Solution
Allow specifying a version when declaring extensions, for example:
```json
{
"customizations": {
"vscode": {
"extensions": [
"ms-dotnettools.csharp@1.25.0"
]
}
}
}
```
---
### Alternative Syntax (optional)
Another possible approach could be:
```json
{
"customizations": {
"vscode": {
"extensions": [
{
"id": "ms-dotnettools.csharp",
"version": "1.25.0"
}
]
}
}
}
```
---
### Benefits
* Reproducible development environments
* Better stability for teams and CI/CD workflows
* Alignment with other ecosystems (e.g., npm, pip, Docker image tags)
* Eliminates need for manual `.vsix` workarounds
---
### Current Workarounds
* Manually downloading `.vsix` files and installing them via scripts
* Using `postCreateCommand` to install specific versions (not always reliable)
* Maintaining custom Docker images with pre-installed extensions
These approaches add complexity and reduce maintainability.
---
### Additional Context
This feature would significantly improve Dev Container usability in professional environments, especially for teams working with strict version control and reproducibility requirements.
---
### Thank you 🙏
Thanks for the amazing work on Dev Containers! This feature would make it even more powerful for team-based development.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia individuando lo schema di devcontainer.json e la gestione esistente di customizations.vscode.extensions. Confronta la sintassi stringa proposta con la sintassi oggetto facoltativa, quindi determina il comportamento di convalida e installazione richiesto per una versione bloccata. Il lavoro è completato quando una sintassi supportata e documentata installa in modo affidabile la versione dell'estensione richiesta senza compromettere le dichiarazioni senza versione bloccata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- json, vscode
- Ambito
- developer-experience, tooling
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100