finditは、ディレクトリを再帰的に探索できるパッケージです。
$ npm install findit
CoffeeScriptで書いてみます。
findit = require 'findit'
finder = findit.find('..')
finder.on 'directory', (dir, stat)->
console.log dir + '/'
finder.on 'file', (file, stat)->
console.log 'File: ' + file
finder.on 'link', (link, stat)->
console.log 'Link: ' + link
findメソッドで、対象ディレクトリを指定します。EventEmitterのonメソッドでdirectory, file, link毎に処理を書けます。
実行してみます。expressでファイルを増やしています。
$ express . $ coffee sample.coffee File: ./app.js File: ./package.json ./public/ ./public/images/ ./public/javascripts/ ./public/stylesheets/ File: ./public/stylesheets/style.css ./routes/ File: ./routes/index.js File: ./sample.coffee ./views/ File: ./views/index.jade File: ./views/layout.jade
あまりにファイル数が多いディレクトリを指定すると、コールスタックがサイズオーバーして落ちる場合があります。
/Users/inouetomoyuki/node_modules/findit/node_modules/seq/index.js:76
f.apply(cb, context.stack);
^
RangeError: Maximum call stack size exceeded
at Function.APPLY_OVERFLOW (native)
at action (/Users/inouetomoyuki/node_modules/findit/node_modules/seq/index.js:76:11)
at next (/Users/inouetomoyuki/node_modules/findit/node_modules/seq/index.js:208:17)
at /Users/inouetomoyuki/node_modules/findit/node_modules/seq/index.js:213:30
at /Users/inouetomoyuki/node_modules/findit/node_modules/seq/index.js:55:24
at Function.<anonymous> (/Users/inouetomoyuki/node_modules/findit/index.js:75:25)
at Function.<anonymous> (/Users/inouetomoyuki/node_modules/findit/node_modules/seq/index.js:210:38)
at action (/Users/inouetomoyuki/node_modules/findit/node_modules/seq/index.js:76:11)
at next (/Users/inouetomoyuki/node_modules/findit/node_modules/seq/index.js:208:17)
at /Users/inouetomoyuki/node_modules/findit/node_modules/seq/index.js:213:30
依存モジュールのseqから発火されています。未解決のようです。node 0.7.8(Win版)ではhack方法が紹介されています。
0 件のコメント:
コメントを投稿