npm publishするパッケージを必要最低限のファイルのみにする
慣れていない TypeScript で作成したちょっとしたライブラリ。
以下のコマンドの動作も問題なく、
$ npm install
$ npm run build
あとは GtiHub Packages に publish できたらいいやと思っていた矢先、以下のようなご指摘が。
dist 配下だけの package を配布してね
今回は、npm publish する際のパッケージ構成について紹介します。
パッケージはdistの中身だけで事足りる
確かに npm run build した際に、dist 配下に生成物ができあがります。
ライブラリを参照する側としては、このファイルと package.json があれば問題なく、他のファイルは不要となるのですよね。
しかし、丁寧にライブラリのソースコード(トランスパイル前)も詰め込んでいたので、npm install した際に node_modules 配下の当該ライブラリに余分なファイルが・・・。
publishするファイルの指定
npm publish する際に何を含めるのかは、以下の 2 つのファイルで制御されていると思っていました。
.gitignore
.npmignore
間違いではないですが、npm の仕様で必ず含めるものなど多少のルールがあります。
また、ルートディレクトリでは package.json の files の定義が優先され、そこに書かれているものだけが node_modules へのインストール対象となるわけですね。
npm publish 時のログを見ていると、必要なファイルのみ tar ball パッケージングしてくれていることが良くわかります。
OpenAPI Generatorの生成コードの場合
なお、同様のことを OpenAPI Generator で自動生成したコード群で実現する場合は、ちょっとした作業が必要になります。
デフォルトでは、package.json に files の項目は定義されません。
そこで、コード生成時のオプションでテンプレート(template)を差し込む形になります。
OpenAPI Generator は Java のソースコードを生成する時に色々と苦労しましたが、言語やバージョンによって意識しておくポイントも多く大変ですね。
今回はコードジェネレート時の共通した話題なので、まだ良かったかな。
まとめ
今回、以下の記事もすごく参考になったので紹介しておきます。