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 DOM 添加事件
Feb 14 Javascript
jQuery 表格插件整理
Apr 27 Javascript
IE 当eval遇上function的处理
Aug 09 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
Jul 09 Javascript
jQuery内部原理和实现方式浅析
Feb 03 Javascript
原生JavaScript制作微博发布面板效果
Mar 11 Javascript
jQuery实现文档树效果
Feb 20 Javascript
jQuery is not defined 错误原因与解决方法小结
Mar 19 Javascript
浅谈sass在vue注意的地方
Aug 10 Javascript
vue引入jq插件的实例讲解
Sep 12 Javascript
vue-cli + sass 的正确打开方式图文详解
Oct 27 Javascript
vue下载excel的实现代码后台用post方法
May 10 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
随机广告显示(PHP函数)
2006/10/09 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
2016/05/21 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
永不消失的title提示代码
2007/02/15 Javascript
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
python正则表达式之作业计算器
2016/03/18 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
python中自带的三个装饰器的实现
2019/11/08 Python
python脚本和网页有何区别
2020/07/02 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
什么是.net的Remoting技术
2016/07/08 面试题
EJB的激活机制
2013/10/25 面试题
预备党员转正思想汇报
2014/01/12 职场文书
个人优缺点自我评价
2014/01/27 职场文书
财务会计自荐信范文
2014/02/21 职场文书
环保倡议书格式范文
2014/05/14 职场文书
白血病募捐倡议书
2014/05/14 职场文书
环保项目建议书
2014/08/26 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL