VSCodeのDevcontainerを使って開発している時に、VSCodeの拡張機能をメンバー間で揃えたい場合は通常.devcontainer.jsonのextensionsに追記すれば自動でインストールしてくれるはずなのですが、なぜかできないので、一旦暫定対応としてスクリプト書いてインストールできるようにしました。

設定方法

コンテナ初回起動直後に拡張機能をインストールが実行されるように、postCreateCommandに拡張機能インストール用のシェルスクリプトを実行するように追記します。

{
 〜〜〜〜〜〜〜省略〜〜〜〜〜〜〜〜〜〜〜〜〜〜
    "customizations": {
        "vscode": {
            "extensions": [
                "vue.volar",
                "esbenp.prettier-vscode",
                "stylelint.vscode-stylelint",
                "formulahendry.auto-close-tag",
                "formulahendry.auto-rename-tag",
                "deque-systems.vscode-axe-linter",
                "dbaeumer.vscode-eslint",
                "ms-playwright.playwright"
            ]
        }
    },
    "postCreateCommand": "sh vscode_extensions_install.sh"
}
sleep 5
echo "Manual install of code extensions"

export PATH=`echo ~/.vscode-server/bin/*/bin`:$PATH
export VSCODE_IPC_HOOK_CLI="$(ls /tmp/vscode-ipc-*.sock  | head -n 1)"
code_server_bin=$(ps -aux | grep "bin/code-server" | awk '{print $12}' | head -n 1)
code_bin=$(dirname "$code_server_bin")/remote-cli/code


extensions=`cat .devcontainer/devcontainer.json | sed 's/^ *\/\/.*//' | jq -r .customizations.vscode.extensions[]`

for extension in $extensions
do
  $code_bin --install-extension $extension
done


最後に


コンテナ初回起動時に拡張機能のインストール自体は実行してそうだが、インストールはされていない。。

[5206 ms] [12:21:50] Installing extensions...
[5322 ms] [12:21:50] Completed initializing default profile extensions in extensions installation folder. file:///home/node/.vscode-server/extensions

時間見つけてシェル実行しなくても正常に自動でインストールできるように引き続き調査してみます。