6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

nodenv-yarn-install プラグインが上手く動かなかった時の対応メモ

Last updated at Posted at 2019-12-05

Node.js な環境が必要なとき、自分の開発環境では anyenv 配下の nodenv を使っており、パッケージマネージャーは npm を使っていました。

とくに不便を感じたわけではないのですが、yarn を使う必要がでてきたため、手元の環境へ yarn をインストールする方法から調べ始めたところ、nodenv-yarn-install という nodenv のプラグインがよさそうだったので使ってみることにしました。

設定方法も使い方も簡単なようで、すぐにプラグインのインストールは完了しました。

ところが。

nodenv で新しいバージョンをインストールしてみても、既存バージョンを再インストールしなおしてみても、yarn がインストールされない状況に遭遇したので、そのときの解決方法をメモしておきます。

最初に結論

自分の場合は

% touch $(nodenv root)/default-packages

とすることで、プラグインが無事動くようになりました。

症状

マニュアル通り nodenv-yarn-install を以下のようにインストールし

% mkdir -p "$(nodenv root)/plugins"
% git clone https://github.com/pine/nodenv-yarn-install.git "$(nodenv root)/plugins/nodenv-yarn-install"

手元では未インストールだった v12.13.0 をインストールしてみましたが、以下のような感じで、yarn のインストールが始まらず終了してしまいました。

% nodenv install 12.13.0
Downloading node-v12.13.0-linux-x64.tar.gz...
-> https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.gz
Installing node-v12.13.0-linux-x64...
Installed node-v12.13.0-linux-x64 to /Users/.centos/.anyenv/envs/nodenv/versions/12.13.0
nodenv: default-packages file not found

nodenv-default-packages プラグインが何か言っている……と気にしつつも、この時点で v12.13.0 自体はインストールできており、使える状態になっていました。

ちなみに nodenv install コマンドのフックを確認すると以下のように nodenv-default-packagesnodenv-yarn-install プラグインのトリガーが登録されていました。

% nodenv hooks install
/Users/.centos/.anyenv/envs/nodenv/plugins/nodenv-default-packages/etc/nodenv.d/install/default-packages.bash
/Users/.centos/.anyenv/envs/nodenv/plugins/nodenv-yarn-install/etc/nodenv.d/install/yarn-install.bash

原因

nodenv を使い始めたときに、nodenv-default-packages というプラグインをインストールしていました。

このプラグインは nodenv install コマンド実行時に自動的にインストールしたい npm パッケージを設定しておけるという便利なものなのですが、インストールはしたものの、自動的にインストールしておきたいパッケージも特になく、マニュアルのInstallationだけ行った状態で nodenv を利用していました。

マニュアルのUsageには自動的にインストールしたいパッケージの書き方および設定ファイルについて記載がありますが、まだなにも必要なかったため、$(nodenv root)/default-packages ファイル自体作っていませんでした。

そのため nodenv install コマンド実行時に設定ファイルが存在しないとエラーで止まってしまい、 nodenv-yarn-install のトリガーが呼ばれず終わってしまっているということのようです。

初期設定を最後までやっていなかった自分が悪いです……

おまけ

nodenv-yarn-install プラグインの実態は

"$DEFINITION" nodenv-exec npm install yarn -g --silent 

と npm パッケージとして yarn をインストールしているようなので、nodenv-default-packages に yarn を登録しておくことと同じかもしれません。

また yarn公式サイトのインストールガイド のページで、 npm でのインストールはあまりオススメしていないような雰囲気があります。

注意: npm から Yarn をインストールすることは一般的にはお勧めしません。 Node ベースのパッケージマネージャで Yarn をインストールする場合は、パッケージは署名されておらず、整合性のチェックはベーシックな SHA1 ハッシュのみで行われており、システム全体にまたがるアプリケーションをインストールする場合にはセキュリティリスクとなります。

これらの理由から、使用中の OS に最も適した方法で Yarn をインストールすることを強くお勧めします。

yarn からすると npm は競合ツールなので、これを理由に yarn への乗り換えをお勧めしているのかもしれませんが、公式サイトのインストール方法も確認して、納得したうえで使うのが良いと思います。

6
8
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
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?