Modular allows simple exportation of a module directory to a node module structure. Individual files are only required when the exported object's property is accessed.
% npm install -g auto-module
require("modular") returns a function that takes two optional arguments.
moduleexports = src options;
src, if given, should be a string that is a path to a directory to turn into an Modular. If not given, the directory of the file that required Modular will be used.
options, if given, should be an object with one, or more, of the following properties:
recursive: Whether or not to recursively turn sub-directories into Modulars also. Default is
keyFormatter: A function to use to transform a filename into a property key. The default is to camel-case the file name by splitting the base filename (minus any extension) on whitespace or a hyphen, and then title case all words after first. i.e:
"my-foo-function" => "myFooFunction" "My-Base-Class" => "MyBaseClass" "-my-other-class" => "MyOtherClass"
excludes: An array of strings, or Regular Expressions, to use to exclude certain files. The exclude pattern will be applied to a file's basename.
Given the following directory structure:
If the content of
my-module/index.js is the following:
moduleexports = ;
Would produce the following module/object structure:
foo:// the exports of my-module/foo.jsfooBar:Baz:// the exports of my-module/Baz.jsbuz:// the exports of my-module/buz.js
But, not really.
The actual property is not resolved (the underlying file
required) until it is accessed. So, really, when first required the exported object looks like this:
foo: GetterfooBar: Getter
fooBar are accessed, it would look like this:
foo:// the exports of my-module/foo.jsfooBar:Baz: Getterbuz: Getter
And so on.