1.0.2 • Published 3 years ago
@xyh19/hot-module v1.0.2
CommonJS hot module supports.
🏠 Homepage
Prerequisites
- node >=12.0.0
Usage
use hot-module
const { hotModule } = require('@xyh19/hot-module');
({ module } = hotModule(module));
let counter = 0;
const counterInterval = setInterval(() => {
console.log('counter: ' + i)
}, 1000);
// Execute when the module is about to be unloaded
module.on('beforeUnload', (module) => {
// ...do somethings
module.shouldReload = false;
});
// Execute when the module has been unloaded
module.on('unload', (module) => {
// clear counterInterval
clearInterval(counterInterval);
// ...do somethings
});
import hot-module
a.js
module.exports = {
var1: '123',
var2: '456'
};
main.js
const { hotModule, toRawModuleExports } = require('@xyh19/hot-module');
({ module, require } = hotModule(module));
// Prevent main module updates
module.shouldReload = false;
const mod_a = require('./a'); // Proxy Object
// error
console.log('line 9', mod_a); // Proxy {}
// success
console.log('line 11', toRawModuleExports(mod_a) ); // {var1: '123', var2: '456'}
const fs = require('fs');
fs.writeFileSync('./a.js', `
module.exports = {
var1: 'abc',
var2: 'def'
};
`);
module.watch(mod_a, (new_mod_a) => {
console.log('line 23', toRawModuleExports(mod_a) ); // {var1: 'abc', var2: 'def'}
console.log('line 24', new_mod_a ); // {var1: 'abc', var2: 'def'}
});
Note
1 This module does not support test frameworks such as jest
🤝 Contributing
Contributions, issues and feature requests are welcome!Feel free to check issues page.
Show your support
Give a ⭐️ if this project helped you!
This README was generated with ❤️ by readme-md-generator