nodemon 核心实现

本文介绍了如何利用chokidar库监听文件变化,以及node.js的child_process模块创建子进程来自动执行命令,从而实现类似nodemon的功能。通过结合这两个技术点,可以在文件变动时自动运行node命令,简化前端开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 监听文件的变化

  • 自动更新执行命令

[](()实现需要的技术点
[](()chokidar

这个库我们可以用于监听文件的变化,只要有文件发生改变,我们都可以使用这个库来获取到

其实监听文件变化就node的自带的文件系统fs库的watchFile方法就可以监听,但是因为其有一些兼容性的问题,所以一般监听文件的变化就使用chokidar这库即可,API也非常的简单

const chokidar = require(‘chokidar’)

chokidar.watch(‘main.js’).on(‘all’, (event, path) => {

console.log(event, path);

})

/*

使用 watch(‘文件名’).on(‘all’,()=>{})的方式就可以监听文件的变化

只要文件发生了变化就会自动的执行回调函数内部的内容

*/

[](()child_process

child_process是node自带的一个子进程的一个库,使用里面的execspawn方法可以创建子进程,基于子进程我们就可以执行node命令

  • exec的api更简单,但是性能等等是更不好的 所以更多的是使用 spawn,

第一个参数:要执行的命令 如这里是 node main.js

第二个参数是回调函数,分别携带的是错误 和 输出

// 执行 node main.js 命令

exec(‘node main.js’, (err, stdout) => {

console.log(err, stdout)

})

  • spawn 一般都是使用spawn创建子进程

第一个 node 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 表示 执行node命令

第二个思数组 表示可以执行的具体的文件 这里是main.js 拼起来就是 node main.js

第三个参数 设置输入和输出

process.stdin:输入

process.stdout:输出

process.stderr: 错误处理

let childProcess = null

childProcess(‘node’, [‘main.js’], {

stdio: [process.stdin, process.stdout, process.stderr]

})

childProcess && childProcess.kill()

// 当创建子进程的时候都会返回一个子进程对象,我们要删除责怪子进程可以使用子进程自身的 kill() 方法删除掉这个子进程

技术点用到的就是上面两个,我们就可以自己实现一个超简单的版本的nodemon

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值