当前位置:首页 > Web开发 > 正文

json --exec node --inspect -r ts-node/register ./src/app.ts

2024-03-31 Web开发

比来把之前自用的一个小型nodejs框架(koa2+mongo)升级为了ts,在此记录一下大抵法式。

安置typescript

直接使用npm 安置

npm i -S -D typescript

建议不要只安置到全局,制止差别机器上的typescript版本不一致。
安置完之后,我们新建一个tsconfig.json(或者tsc init),这是我的内容:

{ "compilerOptions": { // "incremental": true, /* 增量编译 提高编译速度*/ "target": "ES2017", /* 编译方针ES版本*/ "module": "commonjs", /* 编译方针模块系统*/ // "lib": [], /* 编译过程中需要引入的库文件列表*/ "declaration": true, /* 编译时创建声明文件 */ "outDir": "dist", /* ts编译输出目录 */ "baseUrl": "src", "paths": { "@/*": ["*"], }, // "importHelpers": true, /* 从tslib导入帮助工具函数(如__importDefault)*/ "strict": false, /* 严格模式开关 等价于noImplicitAny、strictNullChecks、strictFunctionTypes、strictBindCallApply等设置true */ "noImplicitAny": false, "noUnusedLocals": false, /* 未使用局部变量报错*/ "noUnusedParameters": false, /* 未使用参数报错*/ "noImplicitReturns": true, /* 有代码路径没有返回值时报错*/ "noFallthroughCasesInSwitch": true, /* 不允许switch的case语句贯穿*/ "moduleResolution": "node", /* 模块解析计谋 */ "typeRoots": [ /* 要包罗的类型声明文件路径列表*/ "./typings", "./node_modules/@types" ], "allowSyntheticDefaultImports": true, /* 允许从没有设置默认导出的模块中默认导入,仅用于提示,不影响编译功效*/ "esModuleInterop": true /* 允许编译生成文件时,在代码中注入工具类(__importDefault、__importStar)对ESM与commonjs混用情况做兼容措置惩罚惩罚*/ }, "include": [ /* 需要编译的文件 */ "src/**/*.ts", "typings/**/*.ts" ], "exclude": [ /* 编译需要排除的文件 */ "node_modules/**" ], } 集成eslint代码规范

其实ts最早都是使用tslint,但2019开始ts官方决定投奔eslint,嗯,所以我们必定也用eslint了。

1.安置依赖

首先安置eslint以及ts的parser、plugin:

npm i eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin -D

说白了,就是eslint需要配置ts的parser、以及ts的法则,这是我的.eslintrc.js文件内容:

module.exports = { 'parser':'@typescript-eslint/parser', 'extends': ['standard', 'plugin:@typescript-eslint/recommended'], 'env': {'node': true}, 'rules':{ '@typescript-eslint/ban-ts-ignore': 0 } }

extends里面很明显多了一个standard,这是因为@typescript-eslint/recommended的法则并不完善,所以我们还需要使用eslint的standard法则,安置以下依赖:

npm i eslint-config-standard eslint-plugin-import eslint-plugin-node eslint-plugin-promise eslint-plugin-standard -D

除了eslint-config-standard,后面几个都是standard的依赖
rules是用来笼罩法则的,我这里加了一个ban-ts-ignore,因为我有的处所要写ts-ignore,不加他就报错了

都配置好后,我们再来package.json的scripts中追加两行命令:

"lint": "eslint --ext .js --ext .ts src/", "lint-fix": "eslint --fix --ext .js --ext .ts src/",

lint用来检测代码格局问题,lint-fix用来自动修复代码格局

2.配置vscode

ts的标配,毫无疑问是vscode。
vscode中需要安置eslint插件(插件搜索安置即可),安置完成之后 首选项-> 设置 -> 扩展 -> eslint,我们直接点击 在settings.json 中编纂 ,打开编纂文件进行编纂,这是我的配置文件(备注中有追加说明):

{ "workbench.colorTheme": "One Dark Pro", "editor.codeActionsOnSave": { "source.fixAll.eslint": true // 生存文件时,自动eslint修复格局 }, "eslint.enable": true, // 开启eslint "eslint.options": { "extensions": [ // eslint检测的文件格局 ".js", ".ts", ".tsx", ], }, "eslint.validate": [ // eslint检测的语法 "javascript", "javascriptreact", "typescript", "typescriptreact", ] }

这里需要说明的是,eslint插件2.0.4开始,生存时自动修复文件是通过 editor.codeActionsOnSave 进行配置了,以前是 "eslint.autoFixOnSave": true 。
描述里还说只要在eslint中正确配置了ts,就不需要在eslint.validate中配置了,不过我都不管了,还是统统加上了。

源码调解

这部分就略繁琐了,需要把原代码全部改削成ts,让我们一步步来

1.改削文件后缀

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31739.html