今回はnode.jsプロジェクトのバックアップファイルと取るときの作業効率化情報です。
node.jsプロジェクトのコピーは時間がかかる
node.jsプロジェクトで作成したソースファイル(JavaScriptなど)のバックアップを取ろうとして、プロジェクトごとコピーしたところ、node_modulesのファイル数が多くコピーにものすごく時間がかかりました。
そこで、node_modules(.cacheも)を除外してコピーを行うことができないかと思い、今回のバッチファイルを作成してみました。
node_modulesのファイル数
node.jsプロジェクトではnpmパッケージを使用してプロジェクトに必要なモジュールをインストールすると思います。例えば、jQueryを使用したい場合は
npm install jquery
とすると思います。
このように、インストールした機能のプログラムはnode_modulesというフォルダが作成されそのなかに保存されます。
JavaScriptなどのファイルが保存されるのですが、そのファイル数がとんでもなく多いです。また.cacheというフォルダも作成されこの中のファイルの数も開発を行なっていると多くなっていきます。
xcopyコマンドでコピーする
node_modulesと.cacheフォルダ内のファイルが原因で、エクスプローラでコピーを行うと処理時間がものすごくながくなってしまいます。(PCのスペックが低いということもありますが...)
そこで、xcopy(winodwsコマンド)を使用して短い時間でファイルのコピーを行います。
除外対象のフォルダを指定する
xcopyコマンドでは、node_modulesや.cacheなどをコピー元から除外することができます。除外ファイルやフォルダの指定はtxtファイルとして作成します。
例えば、node_modulesと.cachewo除外する場合は、
node_modules
.cache
という内容のテキストファイルを準備します。
そして以下のようなコマンドを実行すれば、除外ファイルを参照してコピー元から指定したファイルやフォルダを除外してくれます。
xcopy /exclude:excludeList.txt [コピー元] [コピー先]
xcopyのオプション
/Pでコピー元のファイルを一つ一つ確認したり、xcopyにはさまざまなオプションがあります。
例えば、上書きするファイルだけは確認がしたい、などの場合は、/-Yを指定します。
/-Yを使用すれば、上書きするファイルだけ確認メッセージを表示してくれるので、上書きするかどうか選択することができます。
以下はそのオプションの一部です。
詳細については公式サイトをご覧ください。
除外されたnode_modulesはどうするのか
除外したのでコピー先にはもちろんnode_modulesフォルダは存在しません。コピー先のnode.jsプロジェクトを開発しようとしてもモジュールが存在しないためエラーが発生すると思います。
node_modules、その中のファイルは存在しませんが、npmでインストール可能なので再度インストールします。使用していたモジュールは、package.jsonというファイルに列挙されてあるので、以下のコマンドを実行すれば列挙されたモジュールが勝手にインストールがされるはずです。
npm init
終わりに
今回は、Windowsコマンドでコピーの仕方を変えて処理時間を大きく改善することができ作業効率化につながりました。しかし、コマンドで行なった処理は取り消しがきかないと聞いたことがあるので注意が必要です。