eslint 无法格式化ts_TypeScript + eslint 格式化代码及其它

本文介绍了如何将tslint替换为eslint,并结合prettier、husky和lint-staged来自动格式化TypeScript代码。在提交git时,通过husky和lint-staged实现代码格式化,同时使用commitlint校验提交信息的规范性。详细阐述了各个工具的安装、配置以及如何忽略不需要格式化的代码。
摘要由CSDN通过智能技术生成

缘起

之前使用 tslint 校验代码格式,后来发现 ts 官方已经放弃这个转而使用 eslint,研究了一下把相应配置调整了一下。

目标:

使用 eslint、prettier 格式化 TypeScript 代码

使用 husky、lint-staged 在提交代码到 git 的时候自动格式化代码(按需启用)

使用 commitlint 校验 git commit message(按需启用)

关于 1 做个简单说明,eslint、prettier 配合使用的方式是后者先按其规则格式化代码,然后使用 eslint --fix 再次格式化,从而达到代码兼容二者格式的目的。

依赖

npm i -D eslint prettier

npm i -D eslint-config-prettier eslint-plugin-prettier

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

npm i -D husky lint-staged

npm i -D @commitlint/cli @commitlint/config-conventional

配置

package.json 同级目录下配置如下文件

eslint

采用 .eslintrc.js(对于这些配置,优先选择 js 格式,不说别的,一个注释就比 json 格式强的多)。

module.exports = {

root: true,

parser: '@typescript-eslint/parser',

extends: [

'plugin:@typescript-eslint/recommended',

// Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier

'prettier/@typescript-eslint',

// Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.

// 此行必须在最后

'plugin:prettier/recommended',

],

env: {

es6: true,

node: true,

},

parserOptions: {

// 支持最新 JavaScript

ecmaVersion: 2018,

sourceType: 'module',

},

rules: {

// 如果有不适合的规则,可以在此调整

// ...

},

};

当然,上面是单纯的 node 下使用 TypeScript 的配置,如果是 react 之类的,可以再加上相应配置。

prettier

配置文件为:.prettierrc.js

module.exports = {

// 箭头函数只有一个参数的时候可以忽略括号

arrowParens: 'avoid',

// 括号内部不要出现空格

bracketSpacing: false,

// 行结束符使用 Unix 格式

endOfLine: 'lf',

// true: Put > on the last line instead of at a new line

jsxBracketSameLine: false,

// jsx 属性使用双引号

jsxSingleQuote: false,

// 行宽

printWidth: 100,

// 换行方式

proseWrap: 'preserve',

// 分号

semi: true,

// 使用单引号

singleQuote: true,

// 缩进

// tabWidth: 4,

// 使用空格缩进

useTabs: false,

// 后置逗号,多行对象、数组在最后一行增加逗号

trailingComma: 'es5',

// parser: 'babylon',

};

如果某些代码不需要格式化,可以在 .prettierignore 中配置,格式类似 .gitignore

git 提交时候的代码格式化

.huskyrc.js

module.exports = {

hooks: {

// git message 格式控制,参见下面的 git commit message 校验部分,如果不需要可删除

'commit-msg': 'commitlint -E HUSKY_GIT_PARAMS',

// commit 之前执行的命令

'pre-commit': 'lint-staged',

},

};

lint-staged.config.js

ts、js 之类代码使用 eslint 格式化,md、css 之类则用 prettier。

module.exports = {

linters: {

'*.{ts,tsx}': ['eslint --fix', 'git add'],

'*.{js,jsx}': ['eslint --fix', 'git add'],

'*.{md,html,json}': ['prettier --write', 'git add'],

'*.{css,scss,less}': ['prettier --write', 'git add'],

},

};

git commit message 格式控制

这个用来控制 git 提交信息是否符合规范,我一般使用 ,具体可参见说明。

简单来说,git 提交信息需符合如下规则:

type(scope?): subject

body?

footer?

.commitlintrc.js

此文件在 .huskyrc.js 中配置 commit-msg 后启用。

module.exports = {

extends: ['@commitlint/config-conventional'],

};

快捷方式

为方便检查代码格式是否存在错误,或者直接格式化所有代码,可以在 package.json 的 script 中配置如下命令:

"lint": "eslint 'src/**/*.{js,ts,tsx}'",

"format": "eslint --fix 'src/**/*.{js,ts,tsx}'",

前者用来检查代码是否存在格式问题。

后者用来修正代码格式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Vue 项目中使用 TypeScript,可以通过配置 TSLint 来进行代码规范和类型检查。以下是一些设置 TSLint 的经验总结: 1. 安装依赖 ``` npm install --save-dev tslint tslint-config-prettier tslint-plugin-prettier tslint-eslint-rules typescript ``` 2. 配置 TSLint 在项目根目录下创建 tslint.json 文件,并添加以下内容: ``` { "extends": [ "tslint:recommended", "tslint-config-prettier" ], "rules": { "interface-name": false, "no-console": false, "no-empty": false, "no-unused-expression": false, "no-unused-variable": false, "semicolon": [true, "always"] }, "linterOptions": { "exclude": [ "node_modules/**", "dist/**" ] } } ``` 以上配置文件的含义: - extends:继承的规则,包含了 TSLint 推荐的规则和 Prettier 的规则。 - rules:自定义的规则,可以根据团队的需求进行配置。 - linterOptions:指定需要忽略的文件或目录。 3. 配置 VS Code 在 VS Code 中安装以下插件: - TSLint - Prettier - Code formatter 然后在项目根目录下创建 .prettierrc 文件,并添加以下内容: ``` { "singleQuote": true, "trailingComma": "es5", "semi": true, "tabWidth": 2 } ``` 最后,在 VS Code 的设置中添加以下配置: ``` { "editor.formatOnSave": true, "vetur.validation.template": false, "prettier.eslintIntegration": true, "eslint.validate": [ "javascript", "javascriptreact", "vue", "typescript" ], "typescript.validate.enable": false, "tslint.enable": true } ``` 以上配置的含义: - editor.formatOnSave:在保存自动格式化代码。 - vetur.validation.template:禁止 Vetur 对模板的验证,因为它可能与 TSLint 发生冲突。 - prettier.eslintIntegration:启用 Prettier 和 ESLint 的集成。 - eslint.validate:指定需要验证的文件类型。 - typescript.validate.enable:禁止 VS Code 内置的 TypeScript 验证器,因为它可能与 TSLint 发生冲突。 - tslint.enable:启用 TSLint 验证器。 4. 迁移经验 如果是一个已经存在的 Vue 项目,需要将 JavaScript 代码迁移到 TypeScript,可以按照以下步骤进行: - 安装 TypeScript 和 @types/node - 将 .js 文件改名为 .ts 文件,并修改文件中的代码 - 在 Vue 组件中添加 <script lang="ts"> 标签,并将代码移到其中 - 逐步修改代码,添加类型注解和接口定义 需要注意的是,迁移过程中可能会遇到一些问题,例如: - 无法识别某些模块,需要在 tsconfig.json 中配置 paths - 需要安装额外的类型声明文件,例如 @types/vue、@types/lodash 等 - 一些 JavaScript 的语法不支持 TypeScript,需要进行调整 总之,迁移过程需要耐心和谨慎,可以先从一些简单的模块开始,逐步迁移。同,使用 TSLint 和 VS Code 可以帮助我们更方便地进行代码规范和类型检查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值