技術系TIPS
PR

npm publishするパッケージを必要最低限のファイルのみにする

saratogax
記事内に商品プロモーションを含む場合があります

慣れていない TypeScript で作成したちょっとしたライブラリ。

以下のコマンドの動作も問題なく、

$ npm install

$ npm run build

あとは GtiHub Packages に publish できたらいいやと思っていた矢先、以下のようなご指摘が。

エンジニア
エンジニア

dist 配下だけの package を配布してね

今回は、npm publish する際のパッケージ構成について紹介します。

あわせて読みたい
Mavenリポジトリを簡易的に作るための3つの方法(AWS, GitHub)
Mavenリポジトリを簡易的に作るための3つの方法(AWS, GitHub)

パッケージは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に戻す
【OpenAPI Generator】バージョン6.0.0でJavaのビルドが通らないので5.4.0に戻す

まとめ

今回、以下の記事もすごく参考になったので紹介しておきます。

ABOUT ME
saratoga
saratoga
フリーランスエンジニア
仕事にも趣味にも IT を駆使するフリーランスエンジニア。技術的な TIPS や日々の生活の中で深堀りしてみたくなったことを備忘録として残していきます。
記事URLをコピーしました