nodemon实现Typescript项目热更新的示例代码


Posted in Javascript onNovember 19, 2019

我们都知道nodemon可以直接用来在开发环境下运行js文件,可以在文件改变时自动刷新和重启服务器。但是最近刚好在学typescript,所以就想使用ts来写,也想达到同样的效果,总结一下方法,大概有如下几种:

nodemon+tsc:

这个方法很简单,首先通过tsc将我们的ts文件编译到dist目录下,然后再通过nodemon直接运行dist目录下的文件即可。至于ts的输出目录相关配置可在tsconfig.js中设置。

tsc && nodemon --watch dist/index.js

但是这种方式有个缺点,就是nodemon只监听了dist目录,可能有时候你修改了源码并不能触发热更新,另外还有个问题就是多了一个dist目录中转,感觉不爽。

nodemon+ts-node:

命令如下:

nodemon -e ts,tsx --exec ts-node ./index.ts"

大概意思就是监听文件增加ts、tsx两种文件类型,使用ts-node运行index.ts文件。

当然,上述参数是设置在命令行中的,也可以在nodemon.json中设置:

{
 "verbose": false,
 "debug": false,
 "exec": "ts-node ./index.ts",
 "ignore": [
  "mochawesome-report",
  "node_modules",
  "./test",
  "**/*.d.ts",
  "*.test.ts",
  "*.spec.ts",
  "fixtures/*",
  "test/**/*",
  "docs/*"
 ],
 "events": {
  "restart": ""
 },
 "watch": ["./app", "./configs", "./app.ts"],
 "ext": "ts tsx",
 "inspect": true
}

如果有使用到tsx文件,记得在tsconfig.json文件中将jsx取消注释,否则编译时可能会提示错误。

除了上述两种方法,今天无意中试了下直接使用nodemon来执行ts文件,发现控制台报错了,原谅我是个英语渣,不明白具体说了什么,但是看到了ts-node的身影,果断安装ts-node再试,竟然成功了。

nodemon ./index.ts

但是这样修改了ts文件不会热更新,可以在nodemon.json文件中将ext属性添加上ts就可以了。

{
 "restartable": "rs",
 "ignore": [".git", "node_modules/**", "client/*", "dist", ".cache", "logs"],
 "verbose": true,
 "execMap": {
  "": "node",
  "js": "node --harmony"
 },
 "events": {
  "start": "",
  "crash": "",
  "exit": "",
  "restart": ""
 },
 "ext": "js json ts tsx",
 "watch": ["./**"],
 "env": {
  "NODE_ENV": "development",
  "PORT": "3002"
 },
 "legacy-watch": false
}

当然除了上述方式,还可以使用构建工具来进行处理,如webpack,parcel等,当然如果大家有其他好的建议,欢迎交流。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript的对话框详解与参数
Mar 08 Javascript
JS URL传中文参数引发的乱码问题
Sep 02 Javascript
javascript将数组插入到另一个数组中的代码
Jan 10 Javascript
javascript中简单的进制转换代码实例
Oct 26 Javascript
js Dialog 去掉右上角的X关闭功能
Apr 23 Javascript
JavaScript日期时间格式化函数分享
May 05 Javascript
JQuery $.each遍历JavaScript数组对象实例
Sep 01 Javascript
JS获取Table中td值的方法
Mar 19 Javascript
详解如何让Express支持async/await
Oct 09 Javascript
解决vue的 v-for 循环中图片加载路径问题
Sep 03 Javascript
微信小程序封装多张图片上传api代码实例
Dec 30 Javascript
vue插槽slot的简单理解与用法实例分析
Mar 14 Javascript
vue的三种图片引入方式代码实例
Nov 19 #Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
Nov 19 #Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
Nov 19 #Javascript
VUEX-action可以修改state吗
Nov 19 #Javascript
Vue.extend 编程式插入组件的实现
Nov 18 #Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
Nov 18 #Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
Nov 18 #jQuery
You might like
PHP判断是否连接上网络的方法
2015/07/01 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
jQuery 注意事项 与原因分析
2009/04/24 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
Python实现数据库编程方法详解
2015/06/09 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
某公司的.net工程师面试题笔试题
2013/11/22 面试题
生产内勤岗位职责
2013/12/07 职场文书
信息管理应届生求职信
2014/03/07 职场文书
办公室副主任职责范本
2014/03/08 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
道歉信怎么写
2015/05/12 职场文书
导游词之千岛湖
2019/09/23 职场文书
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
在Python 中将类对象序列化为JSON
2022/04/06 Python