1.0.6 • Published 4 months ago
mm_hot_reload v1.0.6
mm_hot_reload
一个用于Node.js的热重载模块,支持实时监听并自动重新加载修改过的JavaScript和JSON文件。
安装
npm install mm_hot_reload
特性
- 支持JavaScript和JSON文件的热重载
- 文件变化时自动重新加载
- 支持文件添加、修改、删除事件
- 可配置是否自动取消监听已删除的文件
- 支持回调函数处理重载事件
基本用法
创建实例
const HotReload = require('mm_hot_reload');
// 创建实例,可传入配置参数
const hr = new HotReload({
path: __dirname, // 监听的根路径
watch: true, // 是否开启监听,默认true
unwatch: false // 文件删除时是否自动取消监听,默认false
});
加载模块
// 加载JavaScript模块
const myModule = hr.load('./my-module.js', (newModule, way, path) => {
// 文件变化时的回调函数
console.log('模块更新方式:', way); // 'add', 'change', 或 'delete'
console.log('模块路径:', path);
console.log('新的模块内容:', newModule);
});
// 加载JSON配置文件
const config = hr.load('./config.json', (newConfig, way, path) => {
console.log('配置文件已更新:', newConfig);
});
卸载模块
hr.unload('./my-module.js', (path) => {
console.log('模块已卸载:', path);
});
重新加载模块
const reloadedModule = hr.reload('./my-module.js', (newModule, way, path) => {
console.log('模块已重新加载');
});
手动监听文件
hr.watch('./another-module.js', (newModule, way, path) => {
console.log('文件发生变化');
});
完整示例
const HotReload = require('mm_hot_reload');
// 创建实例
const hr = new HotReload({
path: __dirname,
watch: true,
unwatch: true
});
// 加载并监听配置文件
const config = hr.load('./config.json', (newConfig, way, path) => {
if (way === 'change') {
console.log('配置文件已更新:', newConfig);
// 在这里处理配置更新逻辑
} else if (way === 'delete') {
console.log('配置文件已删除');
// 处理配置文件删除的情况
}
});
// 加载并监听业务模块
const businessModule = hr.load('./business.js', (newModule, way, path) => {
if (way === 'change') {
console.log('业务模块已更新');
// 重新初始化业务逻辑
}
});
// 手动监听其他文件
hr.watch('./utils.js', (newModule, way, path) => {
if (way === 'change') {
console.log('工具模块已更新');
}
});
API 参考
构造函数
new HotReload(config)
创建热重载实例。
config
{Object} 配置参数path
{String} 监听的根路径,默认为模块所在目录watch
{Boolean} 是否开启监听,默认为trueunwatch
{Boolean} 文件删除时是否自动取消监听,默认为false
方法
load(file, func)
加载并监听模块文件。
file
{String} 文件路径func
{Function} 文件变化时的回调函数newModule
{Object} 更新后的模块内容way
{String} 更新方式:'add'、'change'或'delete'path
{String} 文件路径
- 返回:{Object} 加载的模块对象
unload(file, func)
卸载模块。
file
{String} 文件路径func
{Function} 卸载完成的回调函数path
{String} 文件路径
reload(file, func)
重新加载模块。
file
{String} 文件路径func
{Function} 重载后的回调函数- 返回:{Object} 重新加载的模块对象
watch(path, func)
手动监听文件。
path
{String} 文件路径func
{Function} 文件变化时的回调函数
注意事项
- JSON文件的热重载是通过直接读取文件实现的,而JavaScript文件则是通过清除require缓存实现
- 当文件被删除时,如果配置了
unwatch: true
,将自动取消对该文件的监听 - 如果监听目录被删除,且配置了
unwatch: true
,将自动取消该目录下所有文件的监听 - 模块更新失败时会在控制台输出错误信息,但不会影响程序的继续运行
许可证
MIT