◆ npm に公開しないローカルライブラリの扱い
◆ 必要な機能のみを毎回持ってくるのは面倒が多い
  ◆ → ライブラリにまとめたい
◆ ライブラリを直接コピーは require が面倒
◆ node_modules に入れる場合は npm/yarn に消される場合あり
  ◆ package.json を置かない階層に手動配置のみの node_modules にする
  ◆ module.paths に node_modules 以外の名前を追加でもいい
◆ npm/yarn のローカルインストール
  ◆ 変更のたびに install や package.json と name/version プロパティが必要

npm に置くわけでもない自作ライブラリをどう使うかについてです
これまでは基本毎回作ることが多めでした
その場で必要になったものを作って 欲しい物が以前作ったものならその関数やファイルだけ持ってくる感じです

できる限りそのとき作ってるものに依存せずどこでも使えるライブラリのようにしたいので 今作ってるもの固有の機能でないなら 汎用的な作りにして ライブラリ置き場に配置してますが 実際には他ではほぼ使うことはなくて半それ専用になってます
そういうのを毎回入れると無駄が多いので 要らないものは含めないようにすればサイズも小さくなりますし そのときどきのライブラリ置き場にあった作りに変更しやすいです

ただ 毎回はやっぱり面倒ですし npm ライブラリを使ってると不要なコードがいっぱい入るのは当たり前で 自分で作ったファイルがいくつか増えたところで大した違いにはなりません
なので ライブラリをまとめて npm のパッケージに近い感じで使えるようにしようと思いました
とはいっても 実際に npm に公開する気はないです
そうなると どう管理するのがいいのか悩みます

パッケージ管理ツールを使わない

npm や yarn でインストールしないと 毎回手動でコピーすることになります
ちょっと面倒です
それに require も相対パスになって扱いづらいです

require を楽にできるようにするなら node_modules フォルダに入れてしまうという手もあります
node_modules 内に mylib という名前で入れると require("mylib") でロードできるので楽に使えます
ただ 単純に node_modules フォルダに入れるだけだと yarn install などを使ったときに package.json や lock ファイルに無いと消されると思います
エントリポイントのモジュールの最初で module.paths に node_modules 以外のパスを追加でもできると思いますが この辺はあまり触りたくないので package.json より上の階層の node_modules を使うことで yarn などの影響を受けずに node_modules を使えるようにしてます

npm 管理でないのが node_modules に入ってる違和感以外は特に問題なく使えます
それも package.json がない階層で node_modules には手動配置したものしかないので別に困ることは特にないです

パッケージ管理ツールを使う

npm や yarn はローカルインストールもできます
mylib と myapp というフォルダが同じ階層にあって myapp で mylib を使うなら

cd myapp
yarn add ../mylib

でインストールできます
インストールすると package.json にはこういうふうに dependencies が追加されます

{
"dependencies": {
"abcdefg": "../mylib"
}
}

バージョンの代わりに指定したパスが入り キーは指定したフォルダ(パッケージ)の package.json で name プロパティに指定したものになります

インストール対象の package.json には name と version プロパティが必要です

{
"name": "abcdefg",
"version": "1.0.0"
}

インストールしたものは 他と同じように node_modules に入ります
コピーなので 元を書き換えても自動反映はされません
更新のたびに node_modules のコピーを更新するための install が必要です
途中で勝手にバージョンが変わらないという意味では良いのですが 必要な機能があればそのタイミングでライブラリ側に直接更新していく場合は少し手間です
node_modules のコピーを直接更新したら ローカルインストールの意味がないですし 元を編集したら install を実行する必要があります

完全に独立してライブラリを作るなら問題ないですが 作ってるものに応じてライブラリも更新するのだと パッケージマネージャを使わないやり方が向いてると言えそうです

それと たぶんバグだと思いますが yarn add で指定するローカルのフォルダに package.json がないと

[2/4] Fetching packages...
[-] 0/1

のところでずっと止まっていて数分待っても進みませんでした