node.jsで ディレクトリからファイルを呼び出す時に便利なライブラリ「require-all」の紹介です。

require-allで出来ること

- require()を使った時にフォルダ内のファイルを一括で読み込むことができる

'require-all' を使ったイメージ


require-allのインストール

require-allは node.js で作られているパッケージです。ライブラリの入手は コマンドライン上から npm、又は yarnコマンドを使ってインストールします。

# npm
npm install require-all --save
# yarn
yarn add require-all


require-allの使い方

require-all の使い方はとても簡単です。'lib'フォルダ内にある 'module.export' で書かれているモジュールを読み込む場合、下のスニペットの ' app.js' ようにすればjsファイルが読み込まれます。
( 呼び出し時は'.js'を除くファイル名がモジュール名になります )

# フォルダ構造
- lib # フォルダ
   bar.js
   sample.js
app.js

## lib/bar.js
module.exports = () => {
  console.log("bar!");
};

## sample.js
class Sample {
  constructor() {}

  test() {
    console.log("from Sample Class");
  }
}

exports.modules = Sample;
// app.js
// 'lib'フォルダ内のjsファイルを読み込み
var libs = require('require-all')(__dirname + '/lib');
// bar.jsの呼び出し
libs.bar() // output: bar!
// Classを呼び出す場合 *sample.js
const sample =  new mod.sample.modules()
sample.test() // output: from Sample Class

 

require-allに用意されているオプション 

require-all には幾つかオプションが用意されています。フィルターを適応して特定のフォルダや文字列を含むファイルを読み込まないようにしたり、読み込むモジュール名を変更出来ます。

# 元になるファイル構造
- config # フォルダ
   sample.config.js
   test.config.js
   test.js # このファイルは読み込まないように除外予定
app.js # ここから読み込み


下のスニペットは filterオプションを使って、'config'フォルダから '.config.js' で終わるjsファイルを読み込むように指定しています。
( excludeDirsオプションを適応すれば、指定したディレクトリを読み込むようにできます )

// app.js
const conf = require("require-all")({
  dirname: __dirname + "/config",
  filter: /(.+config)\.js$/, // 正規表現の他、コールバック関数を使うことも可能
  // filter: /(.+Controller)\.js$/, ファイルがController.jsで終わる場合の例
  excludeDirs: /^\.(git|svn)$/ // git, svnフォルダを除外
});

// sample.config.js, test.config.jsが呼び出される


上のスニペットの場合、モジュール名に '.' 文字が入ってしまうために呼び出し時にエラーが発生します。

conf.sample.config() // ERROR !!


そのような場合は mapオプションを使って モジュール名の変更が可能です。

// mapオプションを使ってモジュール名を変更
const conf = require("require-all")({
  dirname: __dirname + "/config",
  filter: /(.+config)\.js$/,
  excludeDirs: /^\.(git|svn)$/,
  map: (name, path) => {
    // mapオプションを使って'.config'を消してみました
    return name.replace('.config', '')
  }
});
// { sample: [Function], test: [Function] }

// mapオプションが無い場合
// conf.sample.config() // Error!!

// mapを適応して'.config'を取り除いた場合
conf.sample()


Summary

以上が require-all の紹介でした。node.jsで内部から自作関数やコンフィグファイルを呼び出す時、そのほか 少し大きめのパッケージを作っている時に役立ちそうなライブラリです。

GitHub : felixge/node-require-all

 

この記事のカテゴリ

プログラミング

この記事のタグ

nodejs

Socialシェアボタン

スポンサーリンク