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 相关文章推荐
学习ExtJS Window常用方法
Oct 07 Javascript
jquery图片不完全按比例自动缩小的简单代码
Jul 29 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
Jan 13 Javascript
jQuery实现打开页面渐现效果示例
Jul 27 Javascript
AngularJS过滤器filter用法总结
Dec 13 Javascript
jQuery滚动监听实现商城楼梯式导航效果
Mar 06 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
Aug 08 jQuery
js 取消页面可以选中文字的功能方法
Jan 02 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
Apr 10 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
Jul 20 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
js+html+css实现手动轮播和自动轮播
Dec 30 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
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
JavaScript之自定义类型
2012/05/04 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
node.js中的http.response.getHeader方法使用说明
2014/12/14 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
一个简单的python程序实例(通讯录)
2013/11/29 Python
Python实现基于HTTP文件传输实例
2014/11/08 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
校园创业策划书
2014/01/14 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
会计专业导师推荐信
2014/03/08 职场文书
保证书格式范文
2014/04/28 职场文书
我的祖国演讲稿
2014/05/04 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
教师个人师德总结
2015/02/06 职场文书
2015年新教师工作总结
2015/04/28 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL