ちょっと事情があって、npm install したパッケージ群(つまり node_modules ディレクトリ以下のファイル)も deb パッケージに同梱している。
deb パッケージをビルドするときには、Sass のコンパイルや JavaScript の minify などのタスクも実行するので、package.json 内の devDependencies なパッケージもインストールしておきたい。
この状態で node_modules ディレクトリを deb パッケージのアーカイブ対象にしておくと、コンパイル時にしか使わない npm パッケージもアーカイブされてしまい、ファイルサイズ的にもアーカイブ処理の時間的にも無駄が多い。
なにかうまい方法はないのかな?と社内チャットに呟いたら、npm prune コマンドでうまくいかないかな?というアドバイスをもらった。
ビルド時には普通に npm install し、その後に必要な処理を実行。deb パッケージを作る直前に npm prune --production
を実行することで、dependencies のパッケージだけを残して、devDependencies なパッケージは削除してくれた。
実は、前述の deb パッケージの作成時間が結構かかってしまっていて、長い待ち時間が発生していた。「こんな処理でいちいちストレスを感じていたらスピーディな開発なんてできないだろ!!」と思って、ビルド中のログを流し見していたら、node_modules 以下のファイルの処理にだいぶ時間がかかっていることに気付いて、今回の対応に至った。
npm prune --production
を実行し、アーカイブ対象を削ったことにより、deb のビルドを大幅にスピードアップすることに成功したので、これからはストレスも減るはず。
細かい改善だけど、ストレスのない気持ち良い開発をしたいと思っているオレ的にはとても満足(でももっと速くしたい)。