Deno 1.13.0で過去にインストールしたCLIのエラーが出たら再インストールしよう
タイトルで全て書いていますが解説します。
Deno 1.13.0がリリースされた
2021/08/11にDenoのv1.13.0がリリースされました。
こちらでプラグインシステムの刷新があり、deno runの--allow-pluginオプションが消えて(--allow-ffiに変わって)います。

v1.12.2のdeno run --help

v1.13.0のdeno run --help
本記事執筆時点ではマニュアルに--allow-pluginの記述が残っていますが、
すでに修正PRが出ているので近いうちにマニュアルも更新されると思います。
旧バージョンでdeno install -Aしたものはエラーが出る
ということで、現バージョンでは--allow-pluginを使えないのですが、過去にdeno install -Aを使って導入したコマンドでエラーが発生することがあります。

これは、deno install -Aが--allow-xxxオプションを一つ一つ展開したdeno runコマンドを作成しているためです。
例として、自分が以前インストールしたeggsコマンドの中身は以下のようになっていました。

#!/bin/sh
# generated by deno install
exec deno run --allow-read --allow-write --allow-net --allow-env --allow-run --allow-plugin --allow-hrtime --quiet --unstable 'https://x.nest.land/eggs@0.3.8/eggs.ts' "$@"
内部に--allow-pluginが含まれています。ここでエラーが発生します。
現バージョンでCLIツールを再インストールしよう
現在のバージョンで再インストールすればエラーは改善します。
-Aで--allow-pluginが展開されなくなるためです。
❯ deno install -Afq --unstable https://x.nest.land/eggs@0.3.8/eggs.ts
✅ Successfully installed eggs
/Users/kawarimidoll/.deno/bin/eggs
インストールコマンドは各ツールの公式に従えば問題ないはずですが、既存のコマンドを更新するため、-f(または--force)オプションが必要です。
インストールされたものを確認すると、--allow-pluginが消えています。
#!/bin/sh
# generated by deno install
exec deno run --allow-read --allow-write --allow-net --allow-env --allow-run --allow-ffi --allow-hrtime --quiet --unstable 'https://x.nest.land/eggs@0.3.8/eggs.ts' "$@"
再インストールの必要なコマンドを探すワンライナー
複数のコマンドをインストールしている場合は、各々について再インストールの作業が必要となります。
以下のワンライナーで対象を列挙可能です[1]。
❯ grep allow-plugin -rl ~/.deno/bin
Denoをダウングレードしたい場合
どうしても--allow-pluginを使いたい…!という場合はダウングレードしてしまうのも手です。
deno upgradeでバージョンを指定すればそのバージョンに切り替えることができます[2]
❯ deno upgrade --version 1.12.2
Discussion