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 相关文章推荐
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
Aug 27 Javascript
js Event对象的5种坐标
Sep 12 Javascript
jsp+javascript打造级连菜单的实例代码
Jun 14 Javascript
JS调试必备的5个debug技巧
Mar 07 Javascript
基于jQuery滑动杆实现购买日期选择效果
Sep 15 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
Aug 02 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
Vue.js在数组中插入重复数据的实现代码
Nov 17 Javascript
详解vue-cli官方脚手架配置
Jul 20 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
vue iview实现动态新增和删除
Jun 17 Javascript
Vue Element plus使用方法梳理
Dec 24 Vue.js
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之对抗Web扫描器的脚本技巧
2008/10/01 PHP
PHP四大安全策略
2014/03/12 PHP
初识php MVC
2014/09/10 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
JS中 用户登录系统的解决办法
2013/04/15 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
python实现封装得到virustotal扫描结果
2014/10/05 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
基于Python实现简单学生管理系统
2020/07/24 Python
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
金融专业大学生自我评价
2014/01/09 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
起诉意见书范文
2015/05/19 职场文书
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL