例えばReactを使うライブラリだとこんなエラーが起きたりする。
Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons: 1. You might have mismatching versions of React and the renderer (such as React DOM) 2. You might be breaking the Rules of Hooks 3. You might have more than one copy of React in the same app See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.
そこで登場するのがyalcというツール。yarn linkはざっくり言うとライブラリ側のディレクトリへのシンボリックリンクをアプリ側のnode_modules以下に配置するのに対して、yalcを使うとローカル(~/.yalc)にpublishしてそこをpackage.jsonで見る形にできるので、npm registryにpublishされたものを使うのに近い状態にすることができる。
使い方
1. yalcのインストール
yalc自体をインストールする。$ yarn global add yalc
2. publish
ライブラリ側でyalc publishする。$ cd ~/proj/mylib $ yarn build とか $ yalc publish
3. パッケージ追加
アプリ側でyalc addする。$ cd ~/proj/myapp $ yalc add @myorg/mylib $ yarnこれで使えるようになる。package.jsonにはこんな感じのエントリが追加されている。
"@myorg/mylib": "file:.yalc/@myorg/mylib",
4. 内容更新
中身を変えたら publish と update をする。$ cd ~/proj/mylib $ yarn build とか $ yalc publish $ cd ~/proj/myapp $ yalc update
5. yalc remove
yalc remove --allしておしまい。$ cd ~/proj/myapp $ yalc remove --all $ yarn詳しくはyalcのGitHub (https://github.com/whitecolor/yalc)を参照。