この投稿ではyarn
コマンドで、ローカルのパッケージをインストールする方法を紹介します。
通常yarn add
はnpmjs.comで公開されたパッケージをダウンロードしてきてインストールしますが、ここで説明するのはローカルにのみ存在する自作のライブラリをadd
する方法です。
(npm
で同様のことをする方法は、「npmでローカルのパッケージをinstallする方法」をご覧ください)
やりかた
ローカルのパッケージをインストールには、単純にインストールしたいパッケージのファイルパスをyarn add
の引数にします:
yarn add インストールしたいパッケージのパス
node_modulesにインストールされるパッケージをシンボリックリンクにしたい場合:
yarn add link:インストールしたいパッケージのパス
ローカルパッケージをインストールする具体例
少し具体例をもとに説明します。
以下の図のように、myapp
パッケージとmylib
パッケージがあり、myapp
からmylib
を使いたい例を見てみましょう。
mylib
のindex.js
では、helloWorld
変数が提供されていて、myapp
のmain.js
でそれを使いたいとします。
このとき、myapp
パッケージにてyarn add ../mylib
を実行するとこれが実現します:
$ yarn add ../mylib
yarn add v1.22.4
info No lockfile found.
[1/4] 🔍 Resolving packages...
[2/4] 🚚 Fetching packages...
[3/4] 🔗 Linking dependencies...
[4/4] 🔨 Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ mylib@1.0.0
info All dependencies
└─ mylib@1.0.0
✨ Done in 0.08s.
インストールされると、package.json
にmylib
への依存設定が追加されます:
{
"name": "myapp",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"mylib": "../mylib"
}
}
main.js
を実行してみます:
$ node main.js
Hello World!
しっかりとmylib
の変数が使われているが分かります。
ちなみに、インストールされたmyapp/node_modules/mylib
はmylib
をごっそりコピーしたものになります。../../mylib
へのシンボリックリンクではないので注意です。
シンボリックリンクにしたい場合はファイルパスの頭にlink:
を付けます:
yarn add link:../mylib
最後までお読みくださりありがとうございました。Twitterでは、Qiitaに書かない技術ネタなどもツイートしているので、よかったらフォローお願いします→Twitter@suin