ローカル開発環境で検証時に使用するTSライブラリ作成テンプレ作った
はじめに
ローカル開発環境(以下、ローカル)で検証する際に、一部の機能をライブラリとして切り出しておくためのリポジトリ作った。npmで公開しないようにするためにpackage.json
のprivateフィールドはtrueにしている。テンプレートリポジトリ化しているので、ライブラリを作る際は複製して使うよろし。
対象読者
- ローカルで検証時にぽちぽちライブラリ作りたい人
- pnpm使ってる人
- 下記に
pmpn link
を使う方法を記載しているが、npmでも同じことできるので必要あれば適宜読み替えてください
- 下記に
作ったもの
ほい。
使用例
pnpm link
を使ってローカルからアクセス可能にする方法と、pnpmのworkspaceを使ってアクセスする例をそれぞれ記載する。
pnpm link
を使う場合
pnpm link
を実行することで、ローカルでシステム全体や特定の場所からアクセス可能にすることができる。
想定する構成
下記のように、hogeパッケージとfugaパッケージが同階層にある。
.
├── hoge (ライブラリをexportする側)
└── fuga (ライブラリをimportする側)
手順
手順は下記の通り。
- 著者のライブラリ作成テンプレをテンプレートとしてhogeリポジトリを作成し、ローカルにcloneする
- hogeパッケージの準備(ライブラリをexportする側)
-
package.json
のname
フィールドを自分のライブラリ名(今回はhoge)にする -
vite.config.ts
のbuild.lib.name
フィールドを自分のライブラリ名(今回はhoge)にする -
src/index.ts
に良い感じのコードを書く -
pnpm build
を実行する
-
- fugaパッケージの準備(ライブラリをimportする側)
- fugaパッケージ直下で
pnpm init
を実行し、package.json
を作る
- fugaパッケージ直下で
- hogeパッケージ直下で下記のコマンドを実行する
$ pnpm link --dir ../fuga
上記手順を実行すると、fugaパッケージのnode_modules
にhogeパッケージへの参照が作られ、fugaパッケージからhogeパッケージをインポートすることができる。
補足
pnpm link --global
を実行するとシステム全体でライブラリへのアクセスが可能になるらしいが、下記エラーが発生するため実行できない。
$ pnpm link --global
WARN link:/to/hoge has no binaries
GitHubのpnpmリポジトリを見ると下記のIssueがあった。
使うか分からないけど使えると便利そうな気はするので直ってくれると嬉しい。
pnpmのworkspaceを使う場合
pnpmのworkspaceを使い、workspace内のパッケージを指定してライブラリへアクセスが可能になる。
想定する構成
下記のように、workspaceのルートとなるproject-rootパッケージの下に、hogeとfugaがそれぞれパッケージとして存在する。
.
└── project-root (workspaceのルート)
├── hoge (ライブラリをexportする側)
└── fuga (ライブラリをimportする側)
手順
手順は下記の通り。
- project-rootパッケージの準備(workspaceのルート)
- project-rootパッケージ直下で
pnpm init
を実行し、package.json
を作る - project-rootパッケージ直下で
pnpm-workspace.yaml
を下記の内容で作成するphpm-workspace.yamlpackages: - 'hoge' - 'fuga'
- project-rootパッケージ直下で
- hogeパッケージの準備(ライブラリをexportする側)
- project-rootパッケージ直下に著者のライブラリ作成テンプレをhogeという名前でcloneする
-
hoge/package.json
のname
フィールドを自分のライブラリ名(今回はhoge)にする -
hoge/vite.config.ts
のbuild.lib.name
フィールドを自分のライブラリ名(今回はhoge)にする -
hoge/src/index.ts
に良い感じのコードを書く
- fugaパッケージの準備(ライブラリをimportする側)
- fugaパッケージ直下で
pnpm init
を実行し、package.json
を作る
- fugaパッケージ直下で
- hogeパッケージのビルド
- project-rootパッケージ直下で
pnpm install
を実行する(project-root, hoge, fugaのそれぞれのpackage.json
に記述されたパッケージが良い感じにインストールされる) - project-rootパッケージ直下で
pnpm -F hoge build
を実行し、hogeパッケージをビルドする
- project-rootパッケージ直下で
- fugaパッケージにhogeパッケージをインストール
- project-rootパッケージ直下で
pnpm -F fuga add hoge
を実行する
- project-rootパッケージ直下で
上記手順を実行すると、fugaパッケージのnode_modules
にhogeパッケージへの参照が作られ、fugaパッケージからhogeパッケージをインポートすることができる。
おわりに
ライブラリ作るときに毎回あれこれインストールして設定ファイル書いてとするのが面倒だったので、今回テンプレを用意した。主に検証時に使用するためのものだが、必要あればpackage.json
の設定を書き換えてnpmにpublishできるようにすることもできるはず。
みんなライブラリ作るときどうしてるんだろうね。
Discussion
こういうのあるけど更新されたのが結構前なんだよな〜