require-sliced
v1.0.2
Published
merge a single module source from multiple files
Downloads
11
Readme
require-sliced
is a node.js library implementing tools for working with modules whose source code may be partitioned across multiple eponymous files located in different directories.
Consider a large application with the business logic implemented as a set of modules organized in topical directories, say /crm
, /hr
and so on. It may be convenient to have a common users
module with some methods and properties defined in /crm/users.js
and others in /hr/users.js
. require-sliced
lets developers do just that: it features the ModuleMap class designed to act as a registry of modules given as sets of partial source files to be assembled with subclassable-object-merger.
ModuleMap tracks files' modification times and can clean up the require.cache to always yield the last version, which is handy for development environments, but can be turned off with the watch
option to avoid the related performance overhead.
Installation
npm i require-sliced
Usage
const {ModuleMap} = require ('require-sliced')
const codeRegistry = new ModuleMap ({
dir: { // see https://www.npmjs.com/package/fs-iterators
root: ['/opt/myProject'],
// filter: (str, arr) => arr.at (-1) === 'API', // **/API/*
// live: false,
},
// ext: '.js',
// watch: false, // uncomment to suppress checking for modifications
// merger: new myObjectMerger (someOptions)
})
codeRegistry.load ()
// all at once: makes sense when watch === false
const usersModule = codeRegistry.get ('users')
// merge from all `require ('/opt/myProject/**/API/users.js')`
usersModule.select () // for example
// or just
codeRegistry.getMethod ('users', 'select') ()