-
监听文件的变化
-
自动更新执行命令
[](()实现需要的技术点
[](()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自带的一个子进程的一个库,使用里面的
exec
和spawn
方法可以创建子进程,基于子进程我们就可以执行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