npm패키지 매니저에서 node_modules 디렉토리에 설치된 패키지들의 의존성 트리를 기록하는 파일
npm을 사용해서 node_modules 트리나 package.json을 수정시 자동으로 생성되며, 생성 시점의 의존성 트리에 대한 정보를 가지고 있음. 따라서, pacakge.json의 버전 범위에 따라 버전이 바뀌더라도, package-lock.json 파일이 작성된 시점의 의존성 트리가 다시 생성될 수 있게 보장됨.
node_modules
package.json에 있는 모듈과, 그 모듈들이 의존하고 있는 모든 모듈들을 포함하고 있음.
npm에 새로운 모듈이 추가될 때, 자동으로 package.json과 node_modules에 추가되게 됨.
node_modules를 git에 commit하지 않아도, pacakge.json에 설치한 패키지의 정보가 모여있기 때문에, npm i 명령어로 node_modules를 언제든지 추가함.
ES Modules(ESM)
ES6에 도입된 모듈 시스템
import, export를 사용해 분리된 자바스크립트 파일끼리 서로 접근할 수 있음.
CommonJs(CJS)
nodeJs에서 사용하는 표준 모듈 명세
require, module.exports를 사용
TypeScript 세팅
npx(node pack) : 모듈을 로컬에 저장하지 않고, 매번 최신 버전의 파일만을 임시로 불러와 실행 시킨 후에, 다시 그 파일은 없어지는 방식
주석되어있던 jsx 라인을 주석을 해제
TypeScript 컴파일을 통해 문법오류를 확인할수 있는 check 명령을 package.json에 추가
ESLint 세팅
ESLint는 코딩 컨벤션에 위배되는 코드나 안티 패턴을 자동 검출하는 도구
이전에는 Airbnb가 있었으나, 지금은 없어져서, xo로 셋팅
eslintignore 세팅
React 설치
리액트 설치 후, 리액트 기본 코드를 작성한다.
Jest(테스팅 도구) 설치
npm test를 통해 jest 실행
Parcel 설치
모듈 번들러 : 자바스크립트 파일들을 최적화, 압축하여 하나 혹은 여러개의 static 파일로 빌드해 주는 컴파일러
//tsconfig.json
// ...(전략)...
"jsx": "react-jsx", /* Specify what JSX code is generated. */
...
"types": ["node", "jest", "@testing-library/jest-dom"], /* Specify type package names to be included without being referenced in a source file. */
// ...(후략)...
npm i -D eslint
npx eslint --init
? How would you like to use ESLint? …
❯ To check syntax, find problems, and enforce code style
? What type of modules does your project use? …
❯ JavaScript modules (import/export)
? Which framework does your project use? …
❯ React
? Does your project use TypeScript?
› Yes
? Where does your code run? …
✔ Browser
? How would you like to define a style for your project? …
❯ Use a popular style guide
? Which style guide do you want to follow? …
❯ XO: https://github.com/xojs/eslint-config-xo-typescript
? What format do you want your config file to be in? …
❯ JavaScript
? Would you like to install them now with npm?
› Yes
? Which package manager do you want to use?
> npm