typescriptで共通ライブラリといえばnpmでinstallなんですが、
自作の小さいライブラリなんかだと、npm publishするほどのものではないし、いちいちgit経由つーのもめんどくさい。
ってことで小粒の自分用ライブラリをローカルで使う方法。
コードはこちら。
環境は
$ node -v
v8.9.4
$ npm -v
4.1.1
$ tsc -v
Version 2.7.1
visual studio code + windows 7です。
ライブラリプロジェクトを作る
ライブラリフォルダはTSLibSampleとします。
|
|
npm initした時にnameを聞いてきますが、使う側でimportする際にこの名前を使うので、ちゃんとしたのを入れます。
tsconfig.json
プロジェクト直下のtsconfig.jsonを編集します。”tsc –init”からの差はコメント参照。(テスト用の設定も入っちゃってます)
|
|
package.json
mainとtypesを設定します。フォルダはtsconfig.jsonのoutDirで指定した場所。
“private”: trueでうっかりpublishを防止します。
|
|
.npmignore
プロジェクトルートに.npmignoreを作成します。
|
|
これ作らないと.gitignoreを参照に行くらしく、肝心のdistフォルダがまるっと無視されたりしますんで必ず作ります。
ちなみに.gitignoreはこんな感じ。
|
|
ライブラリ本体を作る
やっとこライブラリ本体のコードを書きます。
コードはsrc以下に追加して、
src/AwesomeUtil.ts
|
|
まーサンプルなんでしょーもないんですけど、ここで役立つクラスやら関数やらを作り込むわけですね。
src/index.ts
src/index.tsでexportして他のプロジェクトから使えるようにします。
|
|
コンパイル
|
|
で dist以下に
AwesomeUtil.d.ts
AwesomeUtil.js
AwesomeUtil.js.map
index.d.ts
index.js
index.js.map
ができるはず。
この時点でライブラリ側はひとまず完成。
使う側プロジェクト(クライアントプロジェクト)作成
使う側のプロジェクトはTSLibClientSampleに作成しました。tsc/npmで初期化します。
|
|
特に設定は変更しません。
自作ライブラリをインストール
ここが今回の肝ですかね。npmで相対パスを指定できます!
|
|
そーすると、自作ライブラリが追加されます。(絶対パスですが。。。)
|
|
絶対パスダメ絶対ってひとは相対パスに書き換えてもOKみたいです。
|
|
自作ライブラリを使ってみる
クライアントプロジェクトにコードを追加してみます。
今回はプロジェクトのルートにclient.tsを追加
client.ts
|
|
んで、コンパイル&実行
|
|
でたー
ライブラリの変更
ライブラリを変更して、クライアントに反映してみます。
まずはコードを変更するなりしてコンパイル。
その後package.jsonの”version”をきちんと上げてあげる必要があります。
npm version patchコマンドを使うとpackage.jsonの編集とgitのタグ付等よきに計らってくれるみたいです。
|
|
コンパイル忘れずに!(tscね)
そしたら使う側のプロジェクトでnpm updateで更新されます。
|
|
テストとか
一応あちこちから使われるのであれば、テストとかできるようにしといたほうが良いかと思われます。
jestを使います。
|
|
あとは好みでjest.config.jsを編集
自分的にはコードのすぐ近くにテストがある方が良いので、
testMatch:
をコメントアウトして、
testRegex: ‘\.spec\.ts$’,
を追加しました。
あとは src以下に *.spec.tsを書きまくればいいと思います。
で
自作のライブラリって、作ってもたいして再利用しないよね。