LHJ

I'm a FE developer.

노드 프로젝트의 설정 파일들

14 Sep 2020 » node

노드 프로젝트의 설정 파일들

각종 유명한 오픈 소스 프로젝트를 보면, 최상위 폴더에 수많은 설정 파일들이 존재합니다.

노드 관련 파일

package.json

package.json은 노드를 하시는 분들이라면 다 아는 파일일 겁니다.
노드 프로젝트에 대한 정보, 설정, 사용중인 패키지를 기록하는 파일입니다.

package-lock.json, yarn.lock

노드 패키지 간의 의존 관계를 고정시켜둔 파일입니다.
npm 대신 yarn을 패키지 매니저로 사용한다면 yarn.lock이 대신 있습니다.

.env

프로젝트 환경 변수를 저장한 파일입니다.
이름 앞에 점이 붙은 건 숨김 파일이기 때문입니다.
사실 이 파일은 깃허브에 올라와 있으면 안 됩니다.
백번 양보해서 올라와 있더라도 내부에 비밀 키가 적혀 있으면 안됩니다.
혹시나 비밀 키를 안에 넣어 깃허브에 올린 정신 나간 프로그래머가 있다면 얼른 얘기해 줍시다.

.nvmrc

노드 버전 관리자로 nvm을 사용하는 경우 어떤 노드 버전을 사용할 지 적혀있습니다.

.npmignore

npm에 패키지를 배포할 때 배포하지 않을 파일들 목록입니다.

lerna.json

하나의 프로젝트에서 여러 패키지를 관리할 수 있게 해주는 lerna입니다.
그에 관한 설정 파일입니다.

자바스크립트 관련 파일

.babelrc

이름 뒤에 rc가 붙은 파일들은 설정 파일들입니다.
바벨은 최신 자바스크립트 문법을 지원하지 않는 브라우저에도 최신 문법의 코드를 쓸 수 있게 도와주는 도구입니다.
최신 코드를 구버전 코드로 변환해줍니다.
.babelrc는 그에 대한 설정입니다.

tsconfig.json, typings.json

타입스크립트는 자바스크립트의 수퍼셋입니다.
자바스크립트에 강타입을 추가해줍니다.
바벨처럼 자바스크립트로 변환하는 기능이 있기 때문에 설정 파일이 필요합니다.
tsconfig는 타입스크립트 설정 파일입니다.
typings.json은 타입을 정의해둔 파일 위치를 기록하는 파일입니다.

.flowconfig

플로우는 페이스북에서 개발한 타입 체커입니다.
타입스크립트랑 라이벌 관계입니다.
물론 타입스크립트한테는 쨉도 안됩니다.
flowconfig는 그에 관한 설정파일입니다.

.eslintrc, .eslintignore, tslint.json, .jshintrc

eslint는 자바스크립트 코딩 스타일 검사기입니다.
팀원들 간의 서로 다른 코딩 스타일을 하나로 통일해줍니다.
eslintrc는 그 코딩 스타일을 적어둔 설정 파일이고, eslintignore는 코딩 스타일을 검사하지 않을 파일 목록입니다.
tslint는 타입스크립트용 코드 스타일 검사기이고, tslint.json으로 설정합니다.
jshint나 jslint도 eslint가 나오기 전에 유명했던 검사기입니다.

.prettierrc

prettier는 자바스크립트 코딩 스타일을 알아서 적용해주는 도구입니다.
eslint가 검사 위주라면 prettier는 알아서 바꾸는 것까지 해주는 것입니다.
그에 관한 설정 파일이 prettierrc입니다.

.bowerrc, bower.json

bower은 요즘 거의 망해가고 있지만 예전에 핫했던 프론트엔드 자바스크립트 라이브러리 관리 도구였습니다.
bowerrc는 그에 관한 설정 파일입니다.
bower.json는 라이브러리 리스트입니다.

gulpfile.js, Gruntfile.js, Jakefile.js, webpack.config.js

테스크 러너인 gulp, grunt와 빌더인 jake, 번들러인 webpack의 설정 파일입니다.
어떤 테스크를 실행하고, 어떻게 번들을 만들지 정의합니다.

jest.config.js

테스크 도구인 제스트에 관한 설정파일입니다.
jest 말고도 karma, mocha, jasmine 등이 있으니 그에 관한 설정 파일들도 있을 수 있겠죠?

프로젝트 및 깃허브 관련 파일

.editorconfig

에디터 설정에 관한 파일입니다.
이 세상에 수 많은 에디터들이 있는데 그 에디터들 간에 공통된 설정을 할 수 있게 도와줍니다.

README.md

프로젝트에 대한 설명을 적은 마크다운 형식 파일입니다.
README.md에 적은 설명은 깃허브에 설명서처럼 표시됩니다.

LICENSE

프로젝트의 라이센스입니다.
오픈 소스라고 무제한 무료인 것은 아니니 꼭 라이센스를 확인하세요.

CONTRIBUTING.md, CODE_OF_CONDUCT.md 등등

오픈 소스에 기여하고자 하는 사람들이 꼭 읽어봐야 하는 문서입니다.
규칙 등이 적혀 있습니다.

CHANGELOG.md, History.md

프로젝트의 새 버전이 나올 때마다 어떤 부분이 바뀌었는지를 알려주는 파일입니다.

Authors.md, .mailmap

프로젝트에 기여한 사람들 목록과 주소록입니다.

.gitignore, .gitattributes

사실 깃허브는 아니고 깃 관련 파일입니다.
깃과 깃허브는 구분하셔야 합니다.
.gitignore는 깃으로 관리하지 않을 파일이나 폴더 목록을 적어두는 파일이고,
.gitattributes는 깃에 대한 설정을 하는 파일입니다.

.gitbook.yaml

혹시 깃북으로 프로젝트 설명서를 만들었다면 이 설정 파일이 있을 수도 있습니다.

클라우드 및 CI/CD 관련 파일

app.yaml, dispatch.yaml

구글 클라우드 플랫폼에 배포할 때 필요한 파일들입니다.
app.yaml은 앱 엔진, dispatch.yaml은 앱 엔진 주소 설정입니다.

appveyor.yml, .circleci/config.yml, .travis.yml 등등

CI/CD 서비스의 설정 파일들입니다.
CI/CD 서비스는 빌드, 테스트, 배포 등을 자동으로 해주는 서비스입니다.
유명한 것으로 젠킨스, 트래비스, 서클 등이 있습니다.
그리고 gcp, aws, azure도 CI/CD를 지원합니다.