devcontainer-bootstrap
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesedevcontainer-bootstrap
devcontainer-bootstrap
使いどころ
适用场景
- 任意リポジトリに Dev Container を素早く導入したいとき
- 既存 を壊さず拡張したいとき(バックアップ必須)
.devcontainer/ - Node/Python/Rust の代表的セットアップをテンプレで貼りたいとき
- 想要快速给任意仓库引入Dev Container的时候
- 想要不破坏现有目录对其进行扩展的时候(必须备份)
.devcontainer/ - 想要用模板快速生成Node/Python/Rust的典型开发环境配置的时候
ワークフロー((1) scan → (2) detect → (3) apply/update → (4) explain)
工作流((1) 扫描 → (2) 判定 → (3) 应用/更新 → (4) 说明)
- scan: リポジトリルートを確認し、スタック候補ファイルをチェック
- detect: で
scripts/detect_stack.shを判定(複数命中や go.mod のみは unknown → stack を明示指定)node|python|rust|unknown - apply/update: を実行し
scripts/apply_devcontainer.shを生成/更新.devcontainer/ - explain: 実行ログを読み、何がバックアップ/更新されたかをユーザーに伝える。競合や手動フォローが必要なら明示
- scan: 检查仓库根目录,确认技术栈对应的候选文件
- detect: 通过判定技术栈为
scripts/detect_stack.sh(同时命中多个技术栈或者仅存在go.mod的情况判定为unknown → 需要显式指定stack)node|python|rust|unknown - apply/update: 执行生成/更新
scripts/apply_devcontainer.sh目录.devcontainer/ - explain: 读取执行日志,告知用户哪些内容被备份/更新。如果存在冲突或者需要手动跟进的情况会明确提示
実行オプション(チャットで指定可能)
执行选项(可在对话中指定)
- :
stack(default auto, 複数命中や go.mod のみは unknown → stack 指定を促す)auto|node|python|rust - :
packageManager(node のみ、postCreate で install 実行)npm|pnpm|yarn - :
modesafe|overwrite- safe: 既存 をマージ(extensions/settings/features/postCreateCommand)。
devcontainer.json無しでも最小追記(postCreate 実行を確実に追加)。既存 Dockerfile は保持。jq - overwrite: stack テンプレートで と
devcontainer.jsonを置換。Dockerfile
- safe: 既存
- :
includeTools(default false)true|false- true の場合、追加 feature として git / github-cli を組み込む(上書きではなくマージ)。
- :
addCI(default false)true|false- GitHub Actions 最小 workflow () を生成。safe で既存があればバックアップのみしてスキップ、overwrite なら置換。
.github/workflows/devcontainer-bootstrap.yml
- GitHub Actions 最小 workflow (
- :
stack(默认auto,同时命中多个技术栈或者仅存在go.mod的情况判定为unknown → 提示指定stack)auto|node|python|rust - :
packageManager(仅针对node技术栈,会在postCreate阶段执行install命令)npm|pnpm|yarn - :
modesafe|overwrite- safe: 合并现有配置(extensions/settings/features/postCreateCommand)。即使没有
devcontainer.json也会进行最小追加(确保添加postCreate执行逻辑)。保留现有Dockerfile。jq - overwrite: 用对应技术栈的模板替换和
devcontainer.json。Dockerfile
- safe: 合并现有
- :
includeTools(默认false)true|false- 设为true时,会作为额外feature集成git / github-cli(采用合并逻辑而非覆盖)。
- :
addCI(默认false)true|false- 生成最小的GitHub Actions工作流配置()。safe模式下如果已有该文件则仅备份跳过生成,overwrite模式下直接替换。
.github/workflows/devcontainer-bootstrap.yml
- 生成最小的GitHub Actions工作流配置(
手順(ローカル実行例)
使用步骤(本地执行示例)
bash
undefinedbash
undefined1. スタック自動判定(複数命中なら unknown)
1. 自动判定技术栈(同时命中多个则返回unknown)
bash skills/devcontainer-bootstrap/scripts/detect_stack.sh .
bash skills/devcontainer-bootstrap/scripts/detect_stack.sh .
2. safe モードで適用(自動判定 + 追記中心)
2. safe模式应用配置(自动判定 + 以追加配置为主)
bash skills/devcontainer-bootstrap/scripts/apply_devcontainer.sh --mode safe
bash skills/devcontainer-bootstrap/scripts/apply_devcontainer.sh --mode safe
3. node + pnpm で overwrite し CI も生成
3. 指定node + pnpm技术栈覆盖配置,同时生成CI配置
bash skills/devcontainer-bootstrap/scripts/apply_devcontainer.sh --stack node --package-manager pnpm --mode overwrite --include-tools true --add-ci true
undefinedbash skills/devcontainer-bootstrap/scripts/apply_devcontainer.sh --stack node --package-manager pnpm --mode overwrite --include-tools true --add-ci true
undefined生成/更新内容
生成/更新内容
- (devcontainer.json, Dockerfile, postCreate.sh)。既存があれば
.devcontainer/にバックアップしてから更新。.devcontainer.bak-<timestamp>/ - VS Code 推奨設定と拡張は に記述(参考: Dev Container supporting tools)。
customizations.vscode - postCreate は stack に応じて依存導入をベストエフォートで実行(失敗は非致命)。
- の場合、
addCI=trueを使う最小 workflow を生成。devcontainers/ci@v0.3.1900000417 - Node テンプレートは を使用(latest は避け、例:
mcr.microsoft.com/devcontainers/typescript-node:<メジャー>)。LTS 更新時はメジャー番号タグを明示的に上げる。24 - Node イメージタグの選定はコードベースの情報を参照して行う
- 優先順: →
.nvmrc→.node-versionのpackage.jsonengines.node - いずれも無い場合はレジストリ () から最新メジャーを確認し、latest は避けてメジャー番号タグを使う
https://mcr.microsoft.com/v2/devcontainers/typescript-node/tags/list
- 優先順:
- Python テンプレートは を使用(latest は避け、デフォルト例:
mcr.microsoft.com/devcontainers/python:<バージョン>)3.14- 優先順: →
.python-versionのpyproject.tomlまたはrequires-python→tool.poetry.dependencies.pythonに併記された Python バージョン記述requirements.txt - いずれも無い場合はレジストリ () を参照して安定版メジャー/マイナーを選ぶ(latest は避ける)
https://mcr.microsoft.com/v2/devcontainers/python/tags/list
- 優先順:
- (devcontainer.json, Dockerfile, postCreate.sh)。如果已有该目录,会先备份到
.devcontainer/再执行更新。.devcontainer.bak-<timestamp>/ - VS Code推荐配置和扩展会写在字段下(参考: Dev Container supporting tools)。
customizations.vscode - postCreate阶段会根据技术栈尽最大努力执行依赖安装(失败不视为致命错误)。
- 的情况下,会生成使用
addCI=true的最小工作流配置。devcontainers/ci@v0.3.1900000417 - Node技术栈模板使用镜像(避免使用latest,例如
mcr.microsoft.com/devcontainers/typescript-node:<主版本号>)。LTS版本更新时会显式升级主版本号标签。24 - Node镜像标签的选择会参考代码库中的信息判定
- 优先级: →
.nvmrc→.node-version的package.json字段engines.node - 以上都不存在的话,会从镜像仓库()查询最新主版本,避免使用latest,直接用主版本号标签
https://mcr.microsoft.com/v2/devcontainers/typescript-node/tags/list
- 优先级:
- Python技术栈模板使用镜像(避免使用latest,默认例如
mcr.microsoft.com/devcontainers/python:<版本号>)3.14- 优先级: →
.python-version的pyproject.toml字段或者requires-python字段 →tool.poetry.dependencies.python中记录的Python版本描述requirements.txt - 以上都不存在的话,会参考镜像仓库()选择稳定的主版本/次版本(避免使用latest)
https://mcr.microsoft.com/v2/devcontainers/python/tags/list
- 优先级:
競合・注意
冲突与注意事项
- 複数スタックが同時に検出された場合や go.mod のみの場合は を明示する。
stack - safe モードでマージできない部分があればログに警告を出す。壊したくない場合は safe を優先。
- 危険な は一切実行しない。
git config --global safe.directory '*' - 詳細な判断基準や safe/overwrite の使い分けは を参照。
docs/decision-guide.md
- 同时检测到多个技术栈或者仅存在go.mod的情况需要显式指定。
stack - safe模式下如果存在无法合并的配置会在日志中输出警告。不希望破坏现有配置的话优先使用safe模式。
- 完全不会执行这类高风险操作。
git config --global safe.directory '*' - 详细的判定标准以及safe/overwrite模式的使用区分请参考。
docs/decision-guide.md
バンドル済みリソース
内置资源
- : スタック判定(node/python/go/unknown)
scripts/detect_stack.sh - : テンプレ適用 & 安全更新 & CI 生成
scripts/apply_devcontainer.sh - : stack 別
templates//devcontainer.json(node/python/rust) + 共通DockerfilepostCreate.sh - : 判定ルール・バックアップ方針・safe/overwrite の違い・よくある罠
docs/decision-guide.md
- : 技术栈判定(node/python/go/unknown)
scripts/detect_stack.sh - : 模板应用 & 安全更新 & CI生成
scripts/apply_devcontainer.sh - : 按技术栈分类的
templates//devcontainer.json(node/python/rust) + 通用DockerfilepostCreate.sh - : 判定规则、备份策略、safe/overwrite模式差异、常见陷阱
docs/decision-guide.md