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 相关文章推荐
跨浏览器开发经验总结(四) 怎么写入剪贴板
May 13 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
Jul 09 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
Jun 26 Javascript
用jQuery获取table中行id和td值的实现代码
May 19 Javascript
AngularJS 服务详细讲解及示例代码
Aug 17 Javascript
JS输出空格的简单实现方法
Sep 08 Javascript
微信端开发--登录小程序步骤
Jan 11 Javascript
最常用的jQuery表单验证(简单)
May 23 jQuery
JS获取一个表单字段中多条数据并转化为json格式
Oct 17 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
详解在vue-test-utils中mock全局对象
Nov 07 Javascript
Vue中keep-alive组件作用详解
Feb 04 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单例模式示例分享
2015/02/12 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
javascript几个易错点记录
2014/11/26 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
Python全局变量用法实例分析
2016/07/19 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
tensorflow如何批量读取图片
2019/08/29 Python
python绘制雪景图
2019/12/16 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
大学生应聘自荐信
2013/10/11 职场文书
影视动画专业个人的自我评价
2013/12/31 职场文书
团日活动总结
2014/04/28 职场文书
幼儿园课题实施方案
2014/05/14 职场文书
校园安全标语
2014/06/07 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
法定代表人身份证明书
2014/09/10 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
MySQL创建定时任务
2022/01/22 MySQL
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS