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 相关文章推荐
QQ登录简单实现代码
Mar 09 Javascript
IE8 引入跨站数据获取功能说明
Jul 22 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
Apr 16 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
JS实现可关闭的对联广告效果代码
Sep 14 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
Feb 23 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 Javascript
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
基于datepicker定义自己的angular时间组件的示例
Mar 14 Javascript
vue实现重置表单信息为空的方法
Sep 29 Javascript
js JSON.stringify()基础详解
Jun 19 Javascript
微信小程序中wxs文件的一些妙用分享
Feb 18 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学习之 认清变量的作用范围
2010/01/26 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
php多进程应用场景实例详解
2019/07/22 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
2019/09/05 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
js内置对象 学习笔记
2011/08/01 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
详解vue axios二次封装
2018/07/22 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python数据封装json格式数据
2018/03/04 Python
flask-restful使用总结
2018/12/04 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
python如何导入依赖包
2020/07/13 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物
计算机专业学生的自我评价
2013/12/15 职场文书
环保证明
2015/06/23 职场文书
公司老总年会致辞
2015/07/30 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS