https://github.com/do-/node-require-sliced
merge a single module source from multiple files
https://github.com/do-/node-require-sliced
fresh module partitioned require
Last synced: 25 days ago
JSON representation
merge a single module source from multiple files
- Host: GitHub
- URL: https://github.com/do-/node-require-sliced
- Owner: do-
- License: other
- Created: 2024-07-28T17:05:43.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-22T10:26:12.000Z (over 1 year ago)
- Last Synced: 2025-10-20T23:28:11.357Z (5 months ago)
- Topics: fresh, module, partitioned, require
- Language: JavaScript
- Homepage:
- Size: 53.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README


`require-sliced` is a node.js library implementing tools for working with [modules](https://nodejs.org/api/modules.html) 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](https://github.com/do-/node-require-sliced/wiki/ModuleMap) class designed to act as a registry of modules given as sets of partial source files to be assembled with [subclassable-object-merger](https://github.com/do-/node-subclassable-object-merger/wiki).
[ModuleMap](https://github.com/do-/node-require-sliced/wiki/ModuleMap) tracks files' modification times and can clean up the [require.cache](https://nodejs.org/api/modules.html#requirecache) 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
```sh
npm i require-sliced
```
# Usage
```js
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') ()
```