Node 工具 | nodemon 详解

本文已整理到 Github,地址 👉 blog

如果我的内容帮助到了您,欢迎点个 Star 🎉🎉🎉 鼓励鼓励 :) ~~

我希望我的内容可以帮助你。现在我专注于前端领域,但我也将分享我在有限的时间内看到和感受到的东西。


nodemon 是一种工具,可在检测到目录中的文件更改时通过自动重新启动节点应用程序来帮助开发基于 node.js 的应用程序。

可以在 nodemon-demo 下进行测试

nodemon 特性

  • 自动重新启动应用程序。
  • 检测要监视的默认文件扩展名。
  • 默认支持 node,但易于运行任何可执行文件,如 python、ruby、make 等。
  • 忽略特定的文件或目录。
  • 监视特定目录。
  • 使用服务器应用程序或一次性运行实用程序和 REPL。
  • 可通过 Node require 语句编写脚本。
  • 开源,在 github 上可用。

安装

全局安装

$ npm i -g nodemon

本地安装

$ npm i -D nodemon

注意:本地安装需要在 package.json 文件的 script 脚本中指定要需要执行的命令

{"script": {"dev": "nodemon app.js"}
}

使用 npm dev 运行

使用

nodemon 一般只在开发时使用,它最大的长处在于 watch 功能,一旦文件发生变化,就自动重启进程。

# 默认监视当前目录的文件变化
$ nodemon app.js# 指定主机和端口作为参数,表示在本地 3697 端口启动 node 服务 
$ nodemon app.js localhost 3697

参数

watch

监控的文件夹路径或者文件路径。

watch 可以监控多个目录,默认值:'*.*'。默认情况下,nodemon 监控当前工作目录。如果您想要控制该选项,请使用该选项添加特定路径:--watch

# 监控指定文件夹或者文件变化
$ nodemon --watch app --watch libs app.js

现在,nodemon 只有在 ./app 目录或 ./libs 目录下文件发生变化时才会重新启动。

ext

默认监听:"js, mjs, json"

监控指定后缀名的文件,用空格间隔。

ext 监听指定文件扩展名的文件。默认情况下,nodemon 查找扩展名为 .js.mjs.coffee.litcoffee,和 .json 的文件。

使用 -e--ext 指定监听的文件扩展名,如下所示:

$ nodemon -e js,pug

优先级:nodemon 会先读取 watch 里面需要监听的文件或文件路径,再从文件中选择监控 ext 中指定的后缀名,最后去掉从 ignore 中指定的忽略文件或文件路径。

exec

exec 执行项。若设定了执行项,nodemon 将执行程序而不是 JavaScript 脚本。

$ nodemon --exec "python -v" ./app.py

ignore

ignore 忽略项(包括文件、目录或文件名通配符匹配)。

注意,默认情况下,nodemon会忽略 .gitnode_modulesbower_components.nyc_outputcoverage.sass-cache 目录,并添加你的忽略模式到列表中。将 ignore 置空并不能取消忽略。

# 忽略特定的文件
$ nodemon --ignore lib/app.js# 忽略多个目录
$ nodemon --ignore lib/ --ignore tests/# 使用通配符匹配(但是一定要引用引号),* 表示该文件夹下的所有后缀为 .js 的文件
$ nodemon --ignore 'lib/*.js'

execMap

execMap 设置运行服务的后缀名与对应的命令。

{"execMap": {"js": "npm -v"}
}

可以用来定义默认可执行文件,如果您使用的语言在默认情况下不受 Node 支持,则此应用特别有用。

{"execMap": {"pl": "perl"}
}

现在运行以下命令,nodemon 将知道将其 perl 用作可执行文件:

$ nodemon app.pl

设置运行服务的后缀名与对应的命令

delay

delay 延迟重启时间(毫秒)。延迟重启类似于 JavaScript 函数中的函数节流,只在最后一次更改的文件往后延迟重启,以避免了短时间多次重启。

$ nodemon --delay 10 app.js
$ nodemon --delay 2.5 app.js
$ nodemon --delay 2500ms app.js

verbose

verbose 设置日志输出模式,true 详细模式

{"verbose": true
}

verbose

colours

colours 默认为 true,输出信息颜色标示。

{"colours": "false"
}

colours

events

events 表示 nodemon 运行到某些状态时的一些触发事件,总共有五个状态:

  • start:子进程(即监控的应用)启动
  • crash:子进程崩溃,不会触发 exit
  • exit:子进程完全退出,不是非正常的崩溃
  • restart:子进程重启
  • config:update:nodemon 的 config 文件改变

参考:使用 nodemon 作为子进程

restartable

restartable 设置重启模式。重启的命令,默认是 rs,可以改成你自己喜欢的字符串。

{"restartable": "nv",
}

在运行的情况下输入 rs 即可

restartable

env

env 运行环境

{"env": {"NODE_ENV": "development", // 开发环境"PORT": "3000" // 端口号}
}

配置文件

你可以在命令行中添加参数选项以支持某种功能,也可以使用本地和全局配置文件。可以使用该 --config 选项指定备用本地配置文件。

// nodemon.json
{"restartable": "nv","delay": 1000,"colours": false,"verbose": true,"ignore": ["./src"],"watch": ["app.js","src"],"events": {"restart": "osascript -e 'display notification \"app restarted\" with title \"nodemon\"'"},"execMap": {"js": "npm -v"},"ext": "js, json","env": {"NODE_ENV": "development","PORT": "3000"}
}

你还可以在 package.json 中使用 nodemonConfig 字段进行配置,这时独立配置文件将被忽略。

{"name": "demo","nodemonConfig": {"ignore": ["node_modules", "dist"], // 忽略 node_modules 和 dist 文件 "delay": "2500","watch": ["app.js", "src"]}
}

优先级:本地配置文件 -> nodemonConfig -> 全局配置文件。命令行中指定的参数选项会被本地配置文件覆盖,而在 package.json 中配置的会被命令行覆盖。

每次修改配置文件修改完记得重启一下。

nodemon 的默认配置文件

nodemon 的默认配置文件

var ignoreRoot = require('ignore-by-default').directories();// 默认选项配置选项
module.exports = {restartable: 'rs',colours: true,execMap: {py: 'python',rb: 'ruby',ts: 'ts-node',// 更多的可以在这里添加,如 ls:lsc - 但请确保它是交叉的与 linux、mac 和 windows 兼容,或使 default.js 为基于 node 的实用程序动态附加 .cmd},watch: ['*.*'],stdin: true,runOnChangeOnly: false, // 为 true 时运行 nodemon xxx 项目不会启动,只保持对文件的监控,当监控的文件有修改并保存时才会启动应用,其他没有影响。默认是 false 即一开始就启动应用并监控文件改动。verbose: false,signal: 'SIGUSR2',stdout: true, // 这个是关于标准输入输出的设置,上文提到 nodemon.json 文件中的 events 字段可以为状态设置标准输入输出语句,如果这里设置了 false,标准输入输出语句就会失效。watchOptions: {},
};

更多

  • 使用 nodemon 作为模块

  • gulp-nodemon 插件,将 nodemon 与项目的其余 gulp 工作流程集成在一起。

  • grunt-nodemon 插件,将 nodemon 与项目的其余 grun t工作流程集成在一起。

  • 常问问题

查看全文


https://www.rstk.cn/news/1465483.html

相关文章:

  • webstorm中使用nodemon
  • node命令错误--nodemon : 无法将“nodemon”项识别
  • nodemon:无法将“nodemon”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
  • nodemon的使用
  • nodeJs工具--nodemon的安装及使用
  • nodemon配置和使用
  • 安装nodemon及使用nodemon出现的错误及解决方法
  • node之nodemon的简单配置和使用
  • Node.js后端开发 - 基础篇 #18 nodemon工具
  • nodemon使用
  • 使用nodemon
  • java中如何使用decodeuri_java中URLEncoder、URLDecoder 与js中 en/decodeURI()、en/decodeURIComponent()使用...
  • JavaScript decodeURI() 函数
  • decodeURI decodeURIComponent
  • decodeURI与decodeURIComponent
  • decodeURI decodeURIComponent 区别
  • JavaScript decodeURI() 函数-时间解码
  • (二叉树) 116. 填充每个节点的下一个右侧节点指针 ——【Leetcode每日一题】
  • 阿里云服务器的存储容量和性能如何?是否支持多种存储类型?
  • Django基础入门⑦:Django模板继承
  • 学习linux系统有什么用?
  • Linux系统有什么特点
  • linux系统能做什么的,Linux系统适合日常使用吗?普通人学Linux能干什么
  • 学linux有什么用
  • linux系统有什么用
  • Linux操作系统的主要用途是什么呢
  • linux是什么
  • 为什么要用Linux系统?
  • 学习linux能有什么用
  • linux内核是用什么语言编写的?
  • linux究竟有何优势?为何大多数程序员会选择linux?
  • 什么是Linux,它能干嘛?
  • Unix和Linux有什么区别? 通俗解释
  • 什么是Linux内核?它有什么功能?
  • 什么是Linux ,Unix和Linux有什么区别
  • 学习 Linux 有哪些好处?
  • 为什么要用Linux系统
  • Linux是干什么得?
  • 什么是Linux?Linux主要用在那?为什么有Linux?
  • Linux---Linux是什么
  • linux操作系统有什么好处?
  • Linux系统的用途
  • linux有什么作用
  • Linux简单概述
  • Linux是什么?
  • 说说Linux的用途
  • Linux NetworkManager网络服务详解
  • ae2018怎么打开2019_ae2018中英文切换的方法
  • Flutter网络请求
  • 【Applied Algebra】有限状态机和模型检测初探
  • 2-2 A pretrained model that fakes it until it makes it
  • RecyclerView 获取条目中EditText的值, 增加条目和删除条目
  • RecyclerView 获取条目中EditText的值, 增加条目和删除条目补充方案
  • ListView添加条目后,条目显示的顺序问题
  • 点击条目删除
  • 更新条目时出错
  • mysql删除条目_如何在MySQL中删除'\\'条目?
  • 路由表条目
  • 多条目展示
  • 多个条目
  • ENSP配置路由条目
  • Zip条目
  • el-cascader 创建条目
  • 目录项
  • WPF基础五:UI⑤ 带标题的条目控件ToolBar
  • Linux Ubuntu man文档的图文安装教程
  • [QT_015]Qt学习之基于条目控件的自定义特性(拖拽+右键菜单+样式)
  • Latex-条目、编号、描述
  • C#获取电脑的硬件ID
  • #家庭网络配置(华为路由与交换机)
  • [进阶]网络通信:TCP通信-支持与多个客户端同时通信
  • 用egg.js实现⼀套⽤户系统的Restful接⼝(思维导图)
  • 如何统计网页访问量
  • 网页设计语言html做思维导图,纯css3实现思维导图样式示例
  • Loki+Grafana(外)采集Kubernetes(K8s)集群(基于containerd)
  • 第九章 总结及作业(4)【编译原理】
  • 2023年第1季社区Task挑战赛贡献者榜单
  • Win10Key
  • Python的Dict根据value找到key
  • distinctByKey
  • python基础语法——字典中的dict.get(key)与dict[key]
  • 代码审计-Java项目Filter过滤器CNVD分析XSS跨站框架安全
  • python中dict里的fromkeys用法
  • 使用dict.key
  • python中dict的fromkeys用法
  • DIG的使用
  • 【python】dict更新key(键)的方法
  • dic={key:“字典”}
  • dict.fromkeys
  • Python字典get方法和dic[key]的区别
  • 7.按键循环灯及proteus仿真
  • Reids的BigKey和HotKey
  • dig用法详解
  • Redis BigKey介绍
  • Android之 Zxing二维码详解
  • 关于dict.key和dict.key()
  • usbkey
  • python中的dic.items(), dic.keys(), dic.values()
  • dig命令使用详解|使用dig命令挖掘域名解析信息
  • CISCN2023 badkey1badkey2
  • 本文链接:https://my.lmcjl.com/post/1016.html

    展开阅读全文