1.0.6 • Published 4 months ago

mm_hot_reload v1.0.6

Weekly downloads
-
License
ISC
Repository
github
Last release
4 months ago

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} 是否开启监听,默认为true
    • unwatch {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} 文件变化时的回调函数

注意事项

  1. JSON文件的热重载是通过直接读取文件实现的,而JavaScript文件则是通过清除require缓存实现
  2. 当文件被删除时,如果配置了unwatch: true,将自动取消对该文件的监听
  3. 如果监听目录被删除,且配置了unwatch: true,将自动取消该目录下所有文件的监听
  4. 模块更新失败时会在控制台输出错误信息,但不会影响程序的继续运行

许可证

MIT

1.0.2

5 months ago

1.0.1

8 months ago

1.0.6

4 months ago

1.0.5

5 months ago

1.0.4

5 months ago

1.0.3

5 months ago

1.0.0

10 months ago