탈TSLint하여 ESLint TypeScript Plugin으로 마이그레이션
왜 탈 TSLint 하는가
지금까지 TypeScript의 Linter로 TSLint를 사용했습니다.
하지만 TSLint는 개발 커뮤니티가 활발하다고 할 수 없다는 것이 이전부터 지적되었습니다.
그 중 TSLint 개발 팀은 ESLint 플러그인으로 TSLint 기능을 통합하는 typescript-eslint 프로젝트를 시작했으며 TSLint는 2019년에 더 이상 사용되지 않을 것으로 발표되었습니다.
또한 Microsoft의 TypeScript 자체의 리포지토리도 이전에는 TSLint를 사용하고 있었지만, 2019년 9월경에 ESLint로 이행했습니다.
ESLint는 JavaScript 개발의 강력한 생태계로서의 지위를 이미 확립했습니다. ESLint와 TSLint의 목적은 동일하며, 무리하게 차별화하는 것이 아니라 공존을 목표로 해야 한다는 판단은 타당하다고 생각합니다.
이 문서에서는 TSLint에서 ESLint로 실제로 마이그레이션하는 방법을 보여줍니다. 간단합니다.
환경
마이그레이션 방법
먼저 TSLint를 제거합니다. 미안해.
package.json
- "tslint": "^5.17.0",
- "tslint-config-prettier": "^1.18.0",
- "tslint-plugin-prettier": "^1.3.0",
새
eslint
또는 @typescript-eslint/eslint-plugin
등 필요한 패키지를 설치합니다.$ npm install --save-dev eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser prettier eslint-config-prettier eslint-plugin-prettier
TSLint 구성 파일인
tslint.json
를 삭제합니다.그리고 새로운
.eslintrc.json
를 추가합니다.TSLint 와 ESLint 로 마이그레이션 전후로 규칙의 호환성이 필요한 경우는 typescript-eslint/tslint-to-eslint-config 를 사용하거나 하면(자) 잘 동작할지도 모릅니다.
(참고: tslint-to-eslint-config에서 tslint.json을 eslintrc로 변환 - Qiita )
이번은 과감히 ESLint의 Recommended 설정에 모든 것을 맡깁니다.
.eslintrc.json
설정 내용의 예는 이런 느낌입니다.eslintrc.json
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended",
"prettier/@typescript-eslint"
],
"plugins": [
"@typescript-eslint"
],
"env": { "node": true, "es6": true },
"parser": "@typescript-eslint/parser",
"parserOptions": {
"sourceType": "module",
"project": "./tsconfig.json"
},
"rules": {
}
}
필요에 따라 npm scripts 등도 변경합니다.
package.json
"scripts": {
- "lint": "tslint src/index.ts",
+ "lint": "eslint src/index.ts",
- "lint:fix": "tslint --fix src/index.ts"
+ "lint:fix": "eslint --fix src/index.ts"
VSCode 확장 기능을 사용하고 있다면 ESLint 확장로 변경하십시오.
.vscode/extensions.json
"recommendations": [
- "eg2.tslint"
+ "dbaeumer.vscode-eslint"
VSCode 이외의 도구의 확장 기능은 아래에 소개되어 있습니다.
이것으로 준비가 완료됩니다.
$ npm run lint
명령이 되어 VSCode의 Probrems 탭에 지적사항이 나올 것이라고 생각하기 때문에 수정해 갈 뿐입니다.예
아래는
@typescript-eslint/no-unused-vars
규칙에 걸어 본 예입니다. 그런 다음 ESLint와 Prettier도 오류를 발생시켰음을 알 수 있습니다.src/index.ts
var hoge = 1
$ head -n 1 src/index.ts
var hoge = 1
$ npx eslint src/index.ts
/path/to/src/index.ts
1:1 error Unexpected var, use let or const instead no-var
1:5 warning 'hoge' is assigned a value but never used @typescript-eslint/no-unused-vars
1:13 error Replace `⏎` with `;` prettier/prettier
✖ 3 problems (2 errors, 1 warning)
2 errors and 0 warnings potentially fixable with the `--fix` option.
만약 수정할 수 없는 내용이 있으면, TSLint 와 같이 Disabling comments 를 사용하면 에러를 멈출 수가 있습니다.
-// tslint:disable-next-line:no-var-requires
+// eslint-disable-next-line @typescript-eslint/no-var-requires
const commander = require("commander");
간단하네요.
실제로 필자가 TSLint 에서 ESLint 로의 이행시에 수정한 내용은 아래와 같습니다.
TypeScript ESLint fix · s2terminal/i-read-u@191d349
참고
Reference
이 문제에 관하여(탈TSLint하여 ESLint TypeScript Plugin으로 마이그레이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suzuki_sh/items/fe9b60c4f9e1dbc5d903텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)