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 件のコメント:
コメントを投稿