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 相关文章推荐
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
Nov 30 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
Jul 11 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
Feb 28 Javascript
js操作css属性实现div层展开关闭效果的方法
May 11 Javascript
浅谈setTimeout 与 setInterval
Jun 23 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
May 25 Javascript
vue开发心得和技巧分享
Oct 27 Javascript
深入探究AngularJs之$scope对象(作用域)
Jul 20 Javascript
vue 微信授权登录解决方案
Apr 10 Javascript
vue单个组件实现无限层级多选菜单功能
Apr 10 Javascript
在Vue中使用axios请求拦截的实现方法
Oct 25 Javascript
vue组件开发之slider组件使用详解
Aug 21 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网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
与Math.pow 相反的函数使用介绍
2014/08/04 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
python正则中最短匹配实现代码
2018/01/16 Python
python调用API实现智能回复机器人
2018/04/10 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
do you have any Best Practice for testing
2016/06/04 面试题
宝宝周岁宴答谢词
2014/01/26 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
学校火灾防控方案
2014/06/09 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
好人好事演讲稿
2014/09/01 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
Python中22个万用公式的小结
2021/07/21 Python
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android