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 无符号右移赋值操作
Apr 17 Javascript
JQuery 操作select标签实现代码
May 14 Javascript
一个JavaScript函数把URL参数解析成Json对象
Sep 24 Javascript
node.js中的console.info方法使用说明
Dec 09 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
Mar 25 Javascript
EasyUI在表单提交之前进行验证的实例代码
Jun 24 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
JavaScript封闭函数及常用内置对象示例
May 13 Javascript
如何阻止小程序遮罩层下方图层滚动
Sep 05 Javascript
js DOM的事件常见操作实例详解
Dec 16 Javascript
JavaScript常用工具函数库汇总
Sep 17 Javascript
浅谈JSON5解决了JSON的两大痛点
Dec 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
php实现微信公众号无限群发
2015/10/11 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
javascript的内存管理详解
2013/08/07 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
2015/12/14 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
Python Sleep休眠函数使用简单实例
2015/02/02 Python
Python3使用requests发闪存的方法
2016/05/11 Python
python:print格式化输出到文件的实例
2018/05/14 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
python conda操作方法
2019/09/11 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
自荐书范文
2013/12/08 职场文书
留学自荐信写作方法
2014/01/27 职场文书
善意的谎言事例
2014/02/15 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
同志主要表现材料
2014/08/21 职场文书
银行授权委托书范本
2014/10/04 职场文书
自我检讨报告
2015/01/28 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js