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 ./",
},
まとめ
最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。