npm publishするパッケージを必要最低限のファイルのみにする
慣れていない TypeScript で作成したちょっとしたライブラリ。
以下のコマンドの動作も問題なく、
$ npm install
$ npm run build
あとは GtiHub Packages に publish できたらいいやと思っていた矢先、以下のようなご指摘が。
![エンジニア](https://pakapaka.jp/wp-content/themes/jinr/lib/img/man3.png)
dist 配下だけの package を配布してね
今回は、npm publish する際のパッケージ構成について紹介します。
![Mavenリポジトリを簡易的に作るための3つの方法(AWS, GitHub)](https://pakapaka.jp/wp-content/uploads/2023/11/maven-repository-artifact-github-320x180.jpg)
パッケージは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 のソースコードを生成する時に色々と苦労しましたが、言語やバージョンによって意識しておくポイントも多く大変ですね。
今回はコードジェネレート時の共通した話題なので、まだ良かったかな。
![【OpenAPI Generator】バージョン6.0.0でJavaのビルドが通らないので5.4.0に戻す](https://pakapaka.jp/wp-content/uploads/2023/11/openapi-generator6-java-build-320x180.jpg)
まとめ
今回、以下の記事もすごく参考になったので紹介しておきます。