Node.jsでビルド時にファイルをコピーする

この記事では、Node.jsでビルド時にファイルをコピーする方法を記載します。
Node.jsでビルド時にファイルをコピーしたい場合がよくあります。例えば、コンパイル前に必要なファイルをコピーしたり、実行時に必要なファイルをoutフォルダにコピーしたりなどです。
Node.jsではpackge.jsonにビルドスクリプトを記載することができるので、ここにファイルをコピーするスクリプトを記載します。
Windowsであればcopyコマンドなどありますが、OSに依存してしまうた使用しない方がよいです。Node.jsにはfsやfs-extraといったファイル操作のライブラリがあるので、これらを使用してファイルをコピーします。
なお、この記事ではfs-extraを使用します。fsではフォルダを丸ごとコピーなどできいため、fs-extraを使用します。
ファイル操作ライブラリのインストール
fsまたはfs-extraをインストールします。1つのファイルコピーであればfsで十分ですが、フォルダごとコピーしたり、フォルダごと削除したりする場合は、fs-extraをインストールします。なお、この操作は次回以降実行する必要はありません。
npm install fs
または
npm install fs-extra
package.jsonの記載方法
フォルダを丸ごとコピー
フォルダを丸ごとコピーするにはfs-extraのcopySync()を使用します。fs-extraを使用するにはrequire('fs-extra')が必要なため、copySync()の前で実行しています。
なお、node -eの-eはスクリプトを実行するためのオプションです。引数にスクリプト文字列を与えて実行する場合に使用します。
"scripts": {
"build": "npm run copyfile & npm run compile",
"copyfile": "node -e \"require('fs-extra').copySync('./src/templates', './out/templates')\"",
"compile": "tsc -p ./",
},
フォルダを丸ごとコピーする
フォルダを丸ごとコピーするにはfs-extraのremoveSync()を使います。
"scripts": {
"build": "npm run compile & npm run removefile",
"removefile": "node -e \"require('fs-extra').removeSync('./out/templates')\"",
"compile": "tsc -p ./",
},
まとめ
最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。