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