Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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ファイルの読み書きなどの機能があり、比較的よく使う機能が盛り込まれた、便利なモジュールかなと思います。

okaxaki
薄毛のカリスマを目指しているうちにハゲてしまったおっさんプログラマです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした