62
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

node.jsで階層ディレクトリ作成やコピーをしたいときは?

Last updated at Posted at 2015-09-26

node.jsには標準でfsという普通に便利なファイル操作のライブラリがあります。しかし、fsにはプリミティブな機能しか用意されておらず、ディレクトリ階層を操作するにはひと手間必要になってしまいます。

例えば、

  • ディレクトリがなければ掘る(mkdir -pに相当)とか
  • ディレクトリ階層を丸ごとコピー(cp -rに相当)とか
  • ディレクトリ階層を削除(rm -rfに相当)

などの機能はありません。

それぞれ自作していくのもまぁ大きな手間ではありませんが、node-fs-extraというfsを拡張したモジュールを使うと、どれも簡単に実現できてしまうので、紹介します。

インストール

$ npm install fs-extra --save

使い方

node-fs-extrafsの素直な拡張になっているので、今まで

javascript
var fs = require('fs')

と書いていた箇所を

javascript
var fs = require('fs-extra')

に入れ替えれて使うことができます。fs-extraをrequireしてあれば、もうfsをrequireする必要はないということです。

利用例

ディレクトリがなければ掘る mkdirs

javascript
var fs = require('fs-extra');
fs.mkdirsSync('/some/path/that/does/not/exist/');

ディレクトリ階層をコピー copy

javascript
var fs = require('fs-extra');
fs.copySync('/path/to/srcdir', '/path/to/destdir');

copyにはfilterオプションがあり、特定のファイルだけコピーや削除することも可能です。

ディレクトリ階層を削除 remove

javascript
var fs = require('fs-extra');
fs.removeSync('/some/path/to/delete');

その他の機能

上に挙げた例では、同期呼び出し版(〜Sync)を紹介しましたが、もちろん非同期呼び出し用の関数もあります。

他にも moveや ensure{Dir,File,SymLink}、JSONファイルの読み書きなどの機能があり、比較的よく使う機能が盛り込まれた、便利なモジュールかなと思います。

62
57
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
62
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?