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