require-sliced v1.0.2
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-slicedUsage
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') ()