0
0

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 1 year has passed since last update.

ローカルのパッケージをyarnで追加したい

Posted at

はじめに

ローカルのパッケージを追加するのに手こずったので、備忘録を残しておこうと思います。

環境と構成

環境

  • yarn 3.3.0

構成

packages/
 ├ myLib/
 └ myApp/

経緯

ローカルにある自作ライブラリのパッケージ(myLib)を、モジュール(myApp) yarn add で追加した。
package.jsondependencies にはちゃんと追加されているのに、yarn install でファイルが見つからないとエラー。
yarn build も当然エラー。
node_modules にも自作パッケージは含まれていない。
……というか、そもそも node_modules にコピーはしてほしくない!シンボリックリンク(ジャンクション)を貼りたい!
そんな闘いの記録です。

add のオプションに何かないのか?

yarn add のオプションで上手いこといかんのかと思い、yarn -h で指定できるオプションを調べてみました。
その結果がこちら。

yarn add [--json] [-E,--exact] [-T,--tilde] [-C,--caret] [-D,--dev] [-P,--peer] [-O,--optional] [--prefer-dev] [-i,--interactive] [--cached] [--mode #0] ...
   add dependencies to the project

どうもそれっぽいものはありません。
色々調べてみたところ、yarn add link:<myLibのパス> でジャンクション貼れるよ!の記事を見つけたので、早速実行!

……ところが、以下のようなメッセージが表示されてしまいました。

Usage Error: The link:../myLib string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?

link:<myLibのパス> は使えないらしい……。
yarnのバージョンの問題かもしれません。

とはいえ、何かしらジャンクションを貼る方法はあるはず!
もう一度 yarn -h で使用できるコマンド・オプションを確認してみます。

link コマンドがあったぞ!

見つけました! link コマンドが用意されています!

yarn link [-A,--all] [-p,--private] [-r,--relative] <destination>
    connect the local project to another one

説明文にもまさにな内容が書かれています。

今回は相対パスでリンクを貼りたいので、オプションには -r を指定してコマンドを実行!
正常にリンクが貼られ、その後の yarn installyarn build もエラーなく実行できました!ヤッタゼ!

ついでに

リンクを剥がす場合は unlink コマンドがあったので、それを使えばできるっぽい。

さいごに

link のコマンドでジャンクションを貼れば、ファイルがコピーされて容量を圧迫することもないし、変更のたびにインストールしなおす必要もないので大変に助かる。
上手いこと活用していきたい所存。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?