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.ui.dialog 增加“自动记住关闭时的位置”的功能
Nov 24 Javascript
js获取本机的外网/广域网ip地址完整源码
Aug 12 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
Nov 18 Javascript
利用Jquery实现可多选的下拉框
Feb 21 Javascript
js实现网页自动刷新可制作节日倒计时效果
May 27 Javascript
JS模拟实现Select效果代码
Sep 24 Javascript
基于javascript实现图片懒加载
Jan 05 Javascript
简单介绍jsonp 使用小结
Jan 27 Javascript
微信小程序 下拉列表的实现实例代码
Mar 08 Javascript
ES6新特性之Symbol类型用法分析
Mar 31 Javascript
JS设计模式之状态模式概念与用法分析
Feb 05 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
Oct 27 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下连接mssql2005的代码
2011/01/17 PHP
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
电台实习生求职信
2014/02/25 职场文书
农业项目建议书
2014/08/25 职场文书
英语教师求职信范文
2015/03/20 职场文书
海底两万里读书笔记
2015/06/26 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android