閉じる

UI言語[UI Language]

記事自体は翻訳されません! 記事によって英語版があったりなかったりします。翻訳がある記事は文頭に記載があるよ!
Each articles themselves will not be translated by this setting. Some of article has translation and some of them doesn't. You will notice if the article has its translation by its preamble!

テーマ[Theme]


アイキャッチ画像

VSCodeの拡張機能を公開した時の覚書き


2年ぶり2回めということで、やり方をすっかり忘れていたVisual Studio Codeの拡張機能をの公開手順でつまずいたところをメモメモ✍️

拡張機能の開発

とりあえず拡張機能そのものの開発は思い出しながらでなんとかなりました。TypeScriptは下記のような1行ifが書けないのが不満なのですが……

// この書き方割と頻繁に使うのだけど、TypeScriptだとブロックにしろと警告が出る
if (true) doSomething();

マーケットプレイスへの公開

アクセストークンの名前?

トークンの名前はほんとに何でも良い

マーケットプレイス(VScodeのExtensionsから検索できるところ)に公開するには、パーソナルアクセストークンなるものが必要です。作り方は検索すれば公式のヘルプをはじめとしていくらでも見つかるんですが、新しく作成するトークンのnameをどうすればいいのかがサッパリわからず。「Give it a name」とか「適当な名前を入力して」とかサラッと流されてしまっているので、どんなを付ければよいのやら……

トークンの名前
トークンの名前

昔の自分はどうしたんだろうと思ったら、 “マーケットプレイス用のトークン”的なことを英語のスネークケースで書いてました。結局の所、ほんとうに何でも良いみたい(この名前を何かに使うわけではない)です。

古いトークンも更新して再利用可能

2年前に作ったトークンは期限切れになっていたので別のものを新しく作ったのだけれど、古い期限切れトークンも 〈Edit〉から 〈Expiration〉を変更することで再びActiveに出来ました。トークンの値も控えがあったので、それを再利用することにしました(偉いぞ過去の自分!)

vsce login <publisher name>すると、

Publisher '<publicher name>' is already known
Do you want to overwrite its PAT? [y/N]

こんなメッセージが表示されて戸惑い。 「PATってパーソナルアクセストークンの事だよね? う、上書きしていいの? ダメなの?」って焦ったんですが、どの道NにするとログインできないのでYesにするよりなく。その後トークンを聞かれるので先程有効期限を更新したトークンを入力して問題なしでした。

結局新しく作ったトークンは使わなかったので削除(Revoke)しました。
なおアクセストークン一覧はAzure DevOps右上の人形アイコン → Personal Access Tokensから。URLとしては下記(***の部分にユーザー名が入ります)。

Personal Access Tokens
Personal Access Tokens

スクリーンキャプチャはリポジトリに置く

拡張機能のREADME.mdにはスクリーンキャプチャ(アニメーションGIF?)を付けるのが慣例になっている様なので、頑張って用意してREADME.mdと同じ階層に置き、vsce packageあるいはvsce publishしたところエラーが。

vsce package ERROR
vsce package ERROR
ERROR Couldn't detect the repository where this extension is published. The image 'screencapture2-1.gif' will be broken in README.md. GitHub/GitLab repositories will be automatically detected. Otherwise, please provide the repository URL in package.json or use the --baseContentUrl and --baseImagesUrl options.

どうやら、![Title](image.gif)などで含める画像は、GitHubのリポジトリから取ってくるようなのです。なので自分の場合はリポジトリなしにパッケージしようとしたので見つからないと。
--baseImagesUrlオプションを指定することにより画像の存在するURLを指定することが出来るのですが、URLでなくREADME.mdと同じフォルダにある画像を使うみたいな事は基本的に無理みたいです。

仕方ないので借りているサーバーにgif画像だけ置き、--baseImagesUrl https://example.com/extension-gifs/のようにオプションを指定することで回避できました。


最新の編集が反映されない

vsce packageで作ったvsixファイルを削除した後、Readmeなどにいくつか編集を加え、その後vsce publishしたんですが、最新の状態が反映されず、最後のvsixと同じ古いReadmeのままマーケットプレイスに公開されてしまいました。

package.json"version"だけ上げ、念の為vsce packageを行ってからvsce publishすることで最新の状態が正しくマーケットプレイスに反映されました。
packageコマンドとpublishコマンドは独立してると思ったけど、違うのかな? どっかにあるキャッシュを使うとか? それか自分のただの勘違いかもしれません。

そんなこんなで2回目なのに色々手間取ってしまいましたが、なんとか公開できましたとさ。めでたしめでたし。


公開した拡張機能

Romly Font Set Switcher

ちなみに作って公開した拡張機能は Romly Font Set Switcherと言いまして、コマンドパレットを使って予め設定しておいたフォントリストから素早くフォントを変更できるものです。

似た機能を実現する拡張機能としては Font Switcherというものがあり、これを長らく神拡張機能として愛用させていただいておりました。これと同じような操作感を、

上記のような方針で作った日本語向けの拡張機能です。推しフォントが定まらず、フォントをころころ変更する&日本語フォントもころころ変更するというニッチな需要を満たす拡張機能となっております。よろしければ是非。

メインのコーディングフォントをそのままに日本語フォントだけ変更できます。逆もしかり。


Romly RegExp Search Template

えと、地味にもう一つ Romly RegExp Search Templateという拡張機能を公開してまして、これは予め設定しておいた正規表現による検索をコマンドパレットから実行、その結果もコマンドパレットに一覧表示、該当箇所にジャンプできるようにするものです。

昔のWindowsエディタにはこうした機能がよくあったと思うのです…… 正確にはちょっと違うんですが 『サクラエディタ』のアウトライン解析機能(Grepの方が近い?)とか、あとDelphi製でTEditorを使っているエディタにもなんかあった気がする……
アウトライン解析機能ほど凝ったものではなく、複数の正規表現を一気に実行するシンプルな処理ですが、何しろ正規表現なので案外なんとでもなります。もちろんVScodeには高機能なアウトラインビューがあるわけですが、コマンドパレットから素早く実行できること、正規表現で自分用にカスタマイズ出来ることが便利ポイントかと。
こちらも宜しければ是非。

この記事のタグ[This article is filed under]: Visual Studio Code[Visual Studio Code] | 開発[Dev] | ハウツー[How to] | トラブル[Trouble]


この記事はここで終わりです。
読んでいただきありがとうございました。
良かったらシェアしてね!

That's all for this article. Thank you for your reading.
Please share this if you like it!

Twitter | Reddit | Facebook | Pinterest | Pocket

前の記事[Prev Post]

前の記事のアイキャッチ画像

JavaScriptで簡単なソースコードの構文強調表示機能を自作した話

次の記事[Next Post]

次の記事のアイキャッチ画像

USB-シリアル変換モジュールについて調べたメモ