0.10.0 • Published 9 months ago
@hediet/node-reload v0.10.0
Hot Reloading for NodeJS
A thoughtfully designed library that brings advanced hot reloading to NodeJS.
Features
- Tracks a dependency graph (files in
node_modulesand there like can be ignored). - Tracked files are watched for changes.
- If a file has changed, reconcilers try to apply the change to the running app on a module basis.
- If a reconciler is not successful, the reconcilers of the dependees are asked to apply the change.
Usage
Installation
yarn add @hediet/node-reloador
npm install @hediet/node-reload --saveSee the ./examples folder for detailed examples.
Works best with TypeScript.
Hot Reload Exported Items
hotReloadExportedItem makes it very easy to track changes of exported items.
import { enableHotReload } from "@hediet/node-reload/node"; // This import needs nodejs.
// Call this before importing modules that should be hot-reloaded!
enableHotReload({
entryModule: module, // only this module and its transitive dependencies are tracked
logging: 'debug', // useful for debugging if hot-reload does not work
});
import { hotReloadExportedItem } from "@hediet/node-reload"; // This import is bundler-friendly and works in any environment!
import { myFunction } from './dep1';
const d = hotReloadExportedItem(myFunction, myFunction => {
// Runs initially and on every change of `myFunction`
console.log('myFunction: ' + myFunction());
return {
dispose: () => {
console.log('cleanup');
}
}
});
// ...
d.dispose();Similar libs
- node-hot: Inspired this library.
Changelog
- 0.0.2 - Initial release.
- 0.4.2 - Implements Live Debug
- 0.10.0 - Rewrite. Focus on
hotReloadExportedItemand more portable code.