사이드 프로젝트에 backend를 node.js로 개발하면서, 코드를 더 안전하고 가독성 좋게 작성할 수 있도록 eslint와 typescript를 적용하기로 했다.
적용했던 과정을 정리하고자 한다.
참고로, 사이드 프로젝트에서 node.js의 모듈 시스템은 ES6을 사용
(Node.js의 기본 모듈 시스템은 commonJS)
npm install @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint eslint-config-prettier eslint-plugin-prettier prettier -D
{
"root": true,
"env": {
"node": true,
"browser": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/eslint-recommended"
],
"plugins": ["prettier", "@typescript-eslint"],
"parserOptions": {
"parser": "@typescript-eslint/parser",
"sourceType": "module"
},
"rules": {
"no-console": "off",
"no-debugger": "warn",
"prettier/prettier": [
"error",
{
"singleQuote": true,
"semi": true,
"useTaps": true,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"bracketSpacing": true,
"arrowParens": "avoid"
}
]
}
}
{ ecmaVersion: 2015 }
to the parser optionsnpm install typescript -D
{
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"target": "es5",
"outDir": "./dist",
"moduleResolution": "Node",
"lib": ["ES2015", "DOM", "DOM.Iterable"],
"noImplicitAny": true,
"typeRoots": ["./node_modules/@types", "types"],
"strict": true,
"useUnknownInCatchVariables": false,
"esModuleInterop": true
},
}
참고
https://velog.io/@kyusung/eslint-config-2
https://velog.io/@josworks27/ESLint-Prettier-%EC%84%A4%EC%A0%95-%EB%B0%B1%EC%97%94%EB%93%9C
https://stackoverflow.com/questions/36001552/eslint-parsing-error-unexpected-token
https://r4bb1t.tistory.com/68
https://eslint.org/docs/user-guide/configuring/language-options