tsconfig 实践 热启动
ts-node 是干什么的
ts-node是一个命令行工具,用于在Node.js环境下运行TypeScript代码。通常情况下,在Node.js中运行TypeScript需要先将TypeScript代码编译成JavaScript代码,然后再用Node.js去执行编译后的JavaScript代码。而使用ts-node则可以直接运行TypeScript代码,而无需先编译成JavaScript代码。
ts-node使用TypeScript自带的编译器,可以直接将TypeScript代码解析为JavaScript代码并执行。它还提供了一些额外的功能,例如支持在REPL中直接使用TypeScript代码进行交互式开发,支持动态模块导入等。
需要注意的是,由于ts-node在运行时需要对TypeScript代码进行解析和编译,所以相比于直接运行JavaScript代码,它的启动速度可能会稍慢一些。但是,在开发阶段中,使用ts-node可以提高开发效率,同时也能避免手动进行编译的烦恼。
热重启的 typescript express 开发环境要怎么配置
在 TypeScript Express 开发环境中使用热重启,需要使用 nodemon、ts-node 和 tsconfig-paths 等工具来配合实现。具体步骤如下:
- 安装依赖
在项目根目录下执行以下命令安装所需依赖:
npm install nodemon ts-node tsconfig-paths -D
- 配置
tsconfig.json
在 tsconfig.json 文件中添加以下配置:
json
1 | { |
其中:
esModuleInterop配置为true,使 TypeScript 可以正确地与 CommonJS 模块交互;baseUrl配置为.,指定了默认的路径解析规则;paths配置用于解析路径,其中"*": ["node_modules/*", "src/types/*"]表示任意路径都会先在node_modules和src/types目录下寻找。
- 配置
nodemon
在项目根目录下创建 nodemon.json 文件,并添加以下配置:
json
1 | { |
其中:
watch配置用于指定监视文件变化的目录;ext配置用于指定监视的文件扩展名;ignore配置用于指定不需要监视的文件;exec配置用于指定在重启应用程序时要执行的命令,其中-r tsconfig-paths/register参数用于在运行时使用tsconfig-paths来解析路径。
- 配置
package.json
在 package.json 文件中添加以下脚本:
json
1 | { |
其中:
start命令使用nodemon启动应用程序,并实现热重启;build命令用于将 TypeScript 代码编译成 JavaScript 代码,生成的代码会保存在./build目录下。
现在你就可以使用 npm run start 启动应用程序了。当你修改了代码后,nodemon 会自动重启应用程序,使修改生效。
继续
- 编写 TypeScript 代码
在 src 目录下编写 TypeScript 代码,例如:
typescript
1 | import express from 'express'; |
这是一个简单的 Express 应用程序,当访问根路径时会返回一个 “Hello, World!” 的响应。
- 启动应用程序
执行 npm run start 命令启动应用程序。当你修改代码后,nodemon 会自动重启应用程序,使修改生效。
访问 http://localhost:3000,你应该能看到 “Hello, World!” 的响应。
以上就是在 TypeScript Express 开发环境中使用热重启的配置方法。通过这种方式,你可以方便地进行开发,并且在修改代码后不需要手动重启应用程序。
之后的所有的回答请使用yarn作为包管理器,谢谢。
好的,后续的回答我会使用 Yarn 作为包管理器。
给出一个比较适合用来作后端开发的 tscongfig 配置
以下是一个比较适合用来作后端开发的 tsconfig.json 配置:
json
1 | { |
其中:
target:编译目标为 ES2020。module:输出模块为 CommonJS。lib:使用 ES2020 标准库。allowJs:不允许编译 JavaScript 文件。checkJs:不检查 JavaScript 文件。sourceMap:生成 sourcemap。outDir:输出目录为dist。rootDir:源代码目录为src。esModuleInterop:允许导入 CommonJS 模块。resolveJsonModule:允许导入 JSON 文件。declaration:生成类型声明文件。declarationDir:类型声明文件的输出目录为types。strict:启用严格模式。noImplicitAny:禁止隐式的 any 类型。noImplicitThis:禁止隐式的 this 类型。strictFunctionTypes:函数类型的参数受到严格的检查。strictNullChecks:禁止 null 和 undefined 类型的赋值。strictPropertyInitialization:类的属性必须在构造函数中初始化。noImplicitReturns:函数必须显式返回类型。noUnusedLocals:禁止未使用的局部变量。noUnusedParameters:禁止未使用的函数参数。experimentalDecorators:启用实验性装饰器。emitDecoratorMetadata:启用装饰器元数据的生成。forceConsistentCasingInFileNames:禁止大小写不一致的文件名。
这个配置文件启用了 TypeScript 的严格模式,并禁止了一些常见的 TypeScript 编程错误。同时,它也会生成类型声明文件,便于其他开发人员在使用你的代码时能够获得更好的类型提示。
那么你认为 tsconfig 是设置松一点还是严格一些比较好
对于 TypeScript 的 tsconfig.json 配置,应该根据具体项目的需求进行配置,既不能过于严格,也不能过于松散。
过于严格的配置可能会导致编译错误,使开发过程变得困难,而过于松散的配置则可能导致代码质量下降,难以维护。
一般来说,在一个新项目中,应该先采用比较严格的配置,并根据实际情况逐步放宽一些限制。例如,可以先开启严格模式,禁用隐式的 any 类型,并启用一些常见的 TypeScript 编程错误检查。如果在开发过程中发现某些错误不是真正的错误,可以逐步调整配置,放宽限制。
另外,也可以参考社区的一些最佳实践来配置 TypeScript 的 tsconfig.json 文件,以便保证代码质量和可维护性。
给出一个社区的最佳实践的示例呗,谢谢
以下是一份社区推荐的 TypeScript tsconfig.json 文件的示例:
json
1 | { |
该配置文件中包含以下特点:
target:编译目标为 ES2019。module:输出模块为 CommonJS。lib:使用 ES2019 标准库。outDir:输出目录为dist。rootDir:源代码目录为src。strict:启用严格模式。esModuleInterop:允许导入 CommonJS 模块。resolveJsonModule:允许导入 JSON 文件。sourceMap:生成 sourcemap。declaration:生成类型声明文件。moduleResolution:模块解析方式为 Node.js。noUnusedLocals:禁止未使用的局部变量。noUnusedParameters:禁止未使用的函数参数。strictNullChecks:禁止 null 和 undefined 类型的赋值。noImplicitReturns:函数必须显式返回类型。noImplicitThis:禁止隐式的 this 类型。noImplicitAny:允许隐式的 any 类型(因为在某些情况下 any 类型是必须的)。experimentalDecorators:启用实验性装饰器。emitDecoratorMetadata:启用装饰器元数据的生成。forceConsistentCasingInFileNames:禁止大小写不一致的文件名。skipLibCheck:跳过库文件的类型检查(加快编译速度)。
这份配置文件旨在提供一种保证代码质量和可维护性的方式,同时也允许一些常见的编程错误。但需要注意的是,具体的配置还需要根据项目的实际情况进行调整。