このエントリのやり方が気に入ったので自分の真似してGruntfileをダイエットさせた。
config書くのだけめんどくさい
すごく良いやり方だと思ったけど、config.js
を自分で追記していくのが若干めんどうだし、自動でできればモジュール追加が捗る〜と思って書いてみた。
config.js
/* config */
var configName, fs;
fs = require("fs");
configName = __filename.split("/").reverse()[0].split(".")[0];
fs.readdirSync(__dirname).forEach(function(filePath) {
var fileName, stats;
stats = fs.statSync(__dirname + "/" + filePath);
fileName = filePath.split(".")[0];
if (stats.isFile() && fileName !== configName) {
return module.exports[fileName] = require(__dirname + "/" + filePath);
}
});
やってること
- nodeの
fs
を使ってconfig.js
のあるフォルダの中身を取得(同期でやらないとうまくいかない)。 - ファイルかどうか判定 && そのファイルがコンフィグファイルじゃないか確認
- exports!!
これでconfig.js
と同じ階層にあるモジュールを全部読み込んでexports
してくれる。良い。
かなり便利になった。でも同じ階層にあるモジュールファイルを問答無用で読み込む。使わないモジュールだろうがなんだろうが読み込むので、モジュールが増えすぎた場合パフォーマンスに影響がでることがあるかも?
おまけ
いい機会だと思ったのでGruntのためだけにCoffeeを覚えた。短くて良いけどチェーン書きづらい。
config.coffee
### config ###
fs = require "fs"
configName = __filename.split("/").reverse()[0].split(".")[0]
fs.readdirSync(__dirname).forEach (filePath) ->
stats = fs.statSync __dirname + "/" + filePath
fileName = filePath.split(".")[0]
if stats.isFile() and fileName isnt configName
module.exports[fileName] = require __dirname + "/" + filePath
自分用のGruntテンプレもいい感じにスッキリして大変満足( ˘ω˘ )