LoginSignup
3
5

More than 1 year has passed since last update.

VSCode拡張機能を開発できる環境をDockerでつくる

Posted at

はじめに

皆様普段エディタは何をお使いになっているでしょうか。
私はVSCodeを愛用しております。
何といっても拡張機能の豊富さが素敵です。

また拡張機能が作れることも良さの一つです。
自分が欲しい機能を持った拡張機能もないこともあるので、
プログラマらしく無いなら作ってしまえの精神です。

まず開発環境が必要なので、
今回はDockerを使って環境を用意する手順を記載します。

環境構築

Dockerは入っている前提です。
筆者はWindows環境ですが、MacでもLinuxでも変わらないかと。
ボリュームをマウントする際の書き方が少し違うくらいです。

Dockerfileは以下。というか必要なのはこれだけ。

FROM node:17-slim

# パッケージインストール
RUN apt-get update -qq \
    && apt-get install -y -git

# ユーザー設定
ARG USER="node"
USER $USER

# ワークスペース設定
WORKDIR /workspace

ENV NPM_CONFIG_PREFIX=/home/$USER/.npm-global
ENV PATH="/home/${USER}/.npm-global:${PATH}"

# エイリアス設定
RUN echo "alias ll='ls -al'" >> /home/$USER/.bashrc

# ライブラリインストール
RUN npm install -g npm \
    && npm install -g vsce generator-code yo

ビルドしてコンテナ作成。

> docker build -t vscode_extention_base --no-cache .
> docker run --name vscode_extention_base -v %cd%:/workspace -t vscode_extention_base /bin/bash

新規プロジェクトが作れるか確認。

$ npx yo code
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== (Y/n)n

     _-----_     ╭──────────────────────────╮
    |       |    │   Welcome to the Visual  │
    |--(o)--|    │   Studio Code Extension  │
   `---------´   │        generator!        │
    ( _´U`_ )    ╰──────────────────────────╯
    /___A___\   /
     |  ~  |
   __'.___.'__
 ´   `  |° ´ Y `

? What type of extension do you want to create? New Extension (TypeScript)
? What's the name of your extension? test_extension
? What's the identifier of your extension? test_extension
? What's the description of your extension? for test
? Initialize a git repository? No
? Bundle the source code with webpack? No
? Which package manager to use? yarn

エラーが出なければOK。
あとはWORKDIR内で好きなだけ拡張機能を作る。

追加のパッケージが必要な場合、rootユーザーでコンテナにアタッチしてaptでインストールできます。

> docker exec -u 0 -it vscode_extention_base /bin/bash

ポイント紹介

ユーザーは一般ユーザーで

rootユーザーではPermissionの兼ね合いで「npx yo code」を実行時にエラーになってしまうため。

パッケージインストール以降、rootユーザーではなく一般ユーザーに切り替えています。
node:17-slimにはnodeユーザーが既にいるので切り替えだけ。

npmのパッケージはグローバルでインストール

拡張機能作成に必要なNodeのパッケージ

  • vsce
  • generator-code
  • yo

は-gオプションをつけてグローバルにインストールしています。
nodeユーザーでの操作になるので、Permissionエラーにならないように、
nodeユーザーのホームディレクトリ配下の「.npm-global」ディレクトリにインストールするようにしています。

WORKDIRにインストールするとボリュームをマウントした際に消えてしまうため。
entrypointでもインストールできるが、環境として完成させておきたいので、この形にしました。

おまけ:エイリアス設定

alias ll='ls -al

は必須。

まとめ

公式からもDockerfileは配布されているのですが、コンテナ作成時にエラーになったので自作しました。
追加のボリュームが必要な場合は面倒ですが、コンテナ作り直しです...

そのうち作った拡張機能の紹介ができればと。
拡張機能の作り方自体はたくさん記事があるので割愛します。

参考になれば幸いです。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5