이러한 역량들은 개발자가 혼자서만 작업하는 것이 아닌 팀과의 협업과 소통이 필요한 환경에서 중요하게 작용합니다. 개발자는 기술적인 역량 뿐만 아니라 다른 직군과의 협업을 통해 효율적으로 프로젝트를 진행하고 완성도 높은 제품을 개발하기 위해 소프트 스킬도 함께 갖추어야 합니다.
과거에는 개발자들이 고독하게 모니터만 쳐다보면서 일하는 스테레오 타입이 있을 수도 있었지만, 현재에는 그런 개발자의 존재는 드물어졌습니다. 개발자들은 지적 능력뿐만 아니라 소프트 스킬과 커뮤니케이션 능력도 함께 갖추어야 합니다. 지적인 역량만 있고 소통과 협업 능력이 부족한 개발자는 실제로 뛰어난 능력을 발휘하기 어려울 수 있습니다. 발휘하지 못하는 능력은 실제로는 쓸모가 없을 수 있으며, 실제로 잘하고 인정받는 개발자가 되기 위해서는 기술적 역량과 소프트 스킬을 모두 갖추어야 합니다. 개발자로서 스스로를 증명하고 성장하기 위해서는 하드 스킬과 소프트 스킬을 골고루 발전시켜야 합니다.
Git
의 Commit Message
가 중요한 역할을 한다.git blame
명령어를 통해 코드 수정자와 커밋 기록을 확인할 수 있다.squash
명령을 통해 여러 커밋을 하나로 합칠 수 있다.ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code, with the goal of making code more consistent and avoiding bugs
Prettier removes all original styling and ensures that all outputted code conforms to a consistent style. (Prettier 공식 문서)
“It reminds me of how Steve Jobs used to wear the same clothes every day because he has a million decisions to make and he didn’t want to be bothered to make trivial ones like picking out clothes. I think Prettier is like that.”
npm install eslint --save-dev
npm install prettier --save-dev
npm install eslint-config-prettier --save-dev
코드의 linting과 formatting을 위해 ESLint와 Prettier를 사용하는데, eslint-config-prettier 플러그인을 설치하여 둘의 충돌을 해결할 수 있습니다. 또한, IDE나 텍스트 에디터에서도 이 도구들을 사용할 수 있도록 플러그인을 설치할 수 있습니다.
Prettier 설정은 프로젝트의 루트 디렉토리에 .prettierrc 확장자 파일을 통해 설정할 수 있습니다.
설정 파일의 확장자 형식은 다양하게 지원되며, JSON, YAML, JS, TOML 등을 사용할 수 있습니다.
Prettier의 설정은 주로 코드의 포맷팅에 관련되어 있어 비교적 간단한 룰을 가지고 있습니다.
예시로는 다음과 같은 설정을 사용할 수 있습니다:
// .prettierrc.js
module.exports = {
printWidth: 100, // printWidth를 기본값 80에서 100으로 변경
singleQuote: true, // 큰따옴표(")를 작은따옴표(')로 변경
arrowParens: "avoid", // 화살표 함수의 파라미터가 하나일 경우 괄호 생략
};
npx prettier --write .
ESLint 설정은 많은 커스터마이징 옵션을 가지고 있으며, 언어별 (JavaScript, TypeScript 등) 및 환경별 (웹, 노드, 리액트 등) 설정을 해주어야 하는 복잡성이 있습니다.
모든 규칙을 하나하나 설정하는 것이 불편하다면, 다른 사람들이 이미 정의해둔 구성(config)을 설치한 후 확장하여 사용할 수 있습니다.
특정 환경을 위한 규칙을 추가하고 싶을 때는 플러그인(plugin)을 사용할 수 있습니다.
예시로는 다음과 같은 ESLint 설정을 사용할 수 있습니다:
// .eslintrc.json
{
"extends": ["react-app", "eslint:recommended", "prettier"],
"rules": {
"no-var": "error", // var 키워드 금지
"no-multiple-empty-lines": "error", // 여러 줄 공백 금지
"no-console": ["error", { "allow": ["warn", "error", "info"] }], // console.log() 허용하지 않음
"eqeqeq": "error", // 일치 연산자 사용 필수
"dot-notation": "error", // 가능하면 도트 표기법 사용
"no-unused-vars": "error" // 사용하지 않는 변수 금지
}
}
이와 같이 설정 파일을 사용하여 ESLint의 동작 방식을 정의하고, 필요한 규칙을 추가하거나 변경할 수 있습니다.
참고자료
npx prettier --write .
npx eslint .
Modern native git hooks made easy
npm install husky --save-dev
(처음 husky 세팅하는 사람만 실행 필요) npx husky install
npx husky install
: husky에 등록된 hook을 실제 .git에 적용시키기 위한 스크립트
add postinstall script in package.json
이후에 clone 받아서 사용하는 사람들은 npm install후에 자동으로 husky install
이 될 수 있도록 하는 설정
// package.json
{
"scripts": {
"postinstall": "husky install"
},
}
scripts 설정
// package.json
{
"scripts": {
"postinstall": "husky install",
"format": "prettier --cache --write .",
"lint": "eslint --cache .",
},
}
add pre-commit, pre-push hook
npx husky add .husky/pre-commit "npm run format"
npx husky add .husky/pre-push "npm run lint"
pre-commit 추가 설명
node_modules/
.eslintcache
위의 파일이 존재한다면, 꼭 설정하기
"no-console": ["warn", { "allow": ["warn", "error", "info"] }]
error
로 설정할 경우 console.log가 하나라도 있으면 푸쉬가 안됨"no-console": ["error", { "allow": ["warn", "error", "info"] }]
eslint --max-warings=0
으로 옵션을 붙여서 스크립트를 실행하면 됨// package.json
{
"scripts": {
"lint": "eslint --cache --max-warnings=0",
},
}