当前位置: 首页 > article >正文

TypeScript 后端开发中的热重载编译处理

在一些除了nest框架外的一些其他nodejs框架中没有提供对ts编译和热重载,如果使用typescript我们需要自己进行配置。

方法一(推荐)

使用bun运行环境(快)。注:一些不是使用js,ts代码编写的第三方包,可能会有兼容性问题。

bun run --hot index.ts

构建为js代码 

bun build index.ts --target node --outdir ./dist

编译成可执行文件

bun build --compile --minify index.ts --outfile ./dist/web

方法二(推荐)

使用deno运行环境(安全) 。deno2.x和bun有同样兼容性问题,deno1.x兼容性更差。

deno run --allow-net --watch ./src/index.ts 

 编译成可执行文件

deno compile --output ./dist/app --allow-net --allow-read ./src/index.ts

 方法三(推荐)

使用 ts-node-dev,npm i ts-node-dev安装。

ts-node-dev --respawn --transpile-only src/index.ts

方法四 

使用tsc配置增量编译,配合concurrently 实现。

tsconfig.json

{
  "compilerOptions": {
    "target": "es2016", // 输出目标 JavaScript 版本
    "module": "CommonJS", // 使用 ES 模块
    "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
    "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
    "lib": [
      "ES2016",
      "DOM"
    ],
    "moduleResolution": "node", // 使用 Node.js 模块解析策略
    "outDir": "./dist", // 输出目录
    "rootDir": "./src/", // TypeScript 源代码目录
    "baseUrl": "./", // 设置模块解析的基本路径
    "resolveJsonModule": true, // 支持导入 JSON 文件
    // "emitDeclarationOnly": false, // 只生成声明文件
    "allowJs": true, // 允许导入 JS 文件
    "checkJs": true,
    "sourceMap": true,
    "importHelpers": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true, // 支持与 CommonJS 模块互操作
    "strict": true, // 启用严格模式
    "listEmittedFiles": true, // 打印输出文件
    "listFiles": true,
    "declaration": false, 
    "composite": false, // 启用增量构建
    "incremental": true, // 启用增量编译
    "tsBuildInfoFile": "./.tsbuildinfo", // 增量编译信息文件
    "skipLibCheck": true, // 跳过库类型检查
    "forceConsistentCasingInFileNames": true, // 强制文件名大小写一致
    "paths": {
      "*": [
        "node_modules/*"
      ] // 配置模块路径
    }
  },
  "include": [
    "src/**/*" // 包含所有 src 目录下的文件
  ],
  "exclude": [
    "node_modules" // 排除 node_modules 目录
  ]
}

package.json

"a": "concurrently \"npm run c\" \"npm run n\"",
"c": "tsc --watch",
"n": "nodemon --exec node ./dist/bin/www.js --watch ./src --ext ts --legacy-watch",
    

其它方法 

 也可以使用webpack、vite、gulp等一些构建工具实现,不是很推荐。


http://www.kler.cn/a/463392.html

相关文章:

  • ArcgisServer过了元旦忽然用不了了?许可过期
  • kafka开机自启失败问题处理
  • JVM实战—9.线上FGC的几种案例
  • Linux-掉电保护方案
  • DevOps工程技术价值流:Ansible自动化与Semaphore集成
  • 企业二要素如何用C#实现
  • Linux(Ubuntu)下ESP-IDF下载与安装完整流程(1)
  • 基于canvas实现的图片加水印功能
  • 单片机从入门到放弃教程001
  • 代码随想录算法训练营第二十天-二叉树-669. 修剪二叉搜索树
  • 如何使用 JPA 实现分页查询并返回 VO 对象
  • 东部新区文化旅游体育局莅临园区考察入驻企业
  • springboot534售楼管理系统(论文+源码)_kaic
  • 关于HarmonyOS Next中卡片的使用方法
  • ctr方法下载的镜像能用docker save进行保存吗?
  • 【老张的程序人生】一天时间,我成软考高级系统分析师
  • 6.若依数据字典
  • 日本IT|敏捷开发指的到底是什么?
  • 青少年编程与数学 02-005 移动Web编程基础 09课题、地理定位
  • 【分布式缓存中间件Memcached原理与应用】
  • leetcode 1315.祖父结点值为偶数的和
  • 【 Sonarqube】可视化Java项目单元测试覆盖率统计框架搭建
  • MySQL数据库的日志
  • typora+picgo core+minio自动上传图片
  • SqlSession的线程安全问题源码分析
  • 2025.01.01(IO模型分类,超时检测,抓包分析,机械臂客户端)