dotfilesにおけるfisherプラグインの管理方法について

create
2021年01月12日
update
2021年01月12日

はじめに🤔

dotfiles を運用するさいに fisher プラグインの管理をどうするかで悩んだ。
最初はそのまま fish ディレクトリまるごと管理してたけど、プラグインの関数ファイル全部込みになるのでやめたかった。

Table 1. 環境
App Version

fish

3.0.2

fisher

4.1.0

fisherプラグインの管理🎣

fisherfish_plugins ファイルにインストール済みのプラグイン[1]を書き込む。
そして fisher update コマンド実行時に、このファイルを参照してインストールやアンインストールが行われる。

したがって dotfiles における fisher プラグイン管理は fish_plugins ファイルだけを管理しておけばいい。

fish/functions ディレクトリは管理外とする

fish/functions ディレクトリには fisher プラグインの本体である関数が大量に格納されるため、dotfiles には含めずに管理外とする。

自作関数は別ディレクトリに配置しておき、ファイルごとに fish/functions/* ファイルへシンボリックリンクを張るようにする。

dotfiles の install スクリプトの書き方

dotfiles をインストールするスクリプトでは、下記のように GitHub から fisher.fish をダウンロードして実行するようにすればいい。

fisher.fishを取得してアップデート実行
fish -c "curl -sL git.io/fisher | source && fisher update"
上記コマンドを実行するのであれば、fisher 自体も dotfiles に含める必要がない。

余談🐟

fishディレクトリにシンボリックリンクを張る理由

なぜかというと、fish はユニバーサル変数を fish_variables ファイルに出力する。
このせいでシンボリックリンクが実ファイルに上書きされてしまうため。

参考📖


1. fisher 自身も含まれる。