-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
frontend-week01-과제 #104
frontend-week01-과제 #104
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
/node_modules/ | ||
/dist/ | ||
.parcel-cache |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,189 @@ | ||
# frontend-survival-week01 | ||
# Node 세팅 | ||
* * * | ||
|
||
``` | ||
# Node 설치 여부 확인 | ||
node -v | ||
|
||
# NVM 설치 여부 확인 | ||
nvm --version | ||
|
||
# 설치 안되어 있으면 NVM 설치 | ||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash | ||
|
||
# 환경 변수 새로고침 ( bashrc 안된다면 zshrc - mac OS 기본 쉘에 따라서) | ||
source ~/.bashrc | ||
source ~/.zshrc | ||
|
||
# Node 버전 확인 및 설치 가능 버전 | ||
nvm ls-remote | ||
|
||
# 특정 버전 설치(20버전 설치함) | ||
nvm install 20 | ||
|
||
# Node 버전 확인 | ||
node -v | ||
``` | ||
|
||
# TypeScript 세팅 | ||
* * * | ||
|
||
``` | ||
# my-app 폴더 생성 | ||
mkdir my-app | ||
|
||
# 코딩 프로그램 열기 (vsCode / webstorm) | ||
|
||
# npm 패키지 설치 (package.json 파일 생성 됨) | ||
npm init -y | ||
|
||
# .gitignore 파일 생성 | ||
# 복붙 | ||
/node_modules/ | ||
/dist/ | ||
.parcel-cache | ||
|
||
# TypeScript 도구 설치 | ||
npm i -D typescript | ||
|
||
# 타입스크립트 컴파일러 초기화 (tsconfig.json 파일 생성 됨) | ||
npx tsc --init | ||
|
||
# tsconfig.json 파일에서 jsx 주석 풀기 | ||
"jsx": "react-jsx", | ||
|
||
``` | ||
|
||
# ESLint 설정 | ||
* * * | ||
|
||
``` | ||
# ESLint 설치 (^8.32.0 버전 설치 함) | ||
npm i -D eslint | ||
|
||
# 설정 초기화 (eslint.config.mjs 파일 생성 됨) | ||
npx eslint --init | ||
|
||
# 설정 초기화 실행 시 선택한 답 | ||
problems | ||
javascript => esm | ||
React | ||
Yes => typescript | ||
Browser | ||
Yes | ||
npm | ||
|
||
# .eslintignore 파일 생성 | ||
/node_modules/ | ||
/dist/ | ||
.parcel-cache | ||
``` | ||
|
||
# React 설치 | ||
* * * | ||
|
||
``` | ||
# 리액트 설치 | ||
npm i react react-dom | ||
|
||
# types 도구 설치 | ||
npm i -D @types/react @types/react-dom | ||
``` | ||
|
||
# 테스팅 도구 설치 | ||
* * * | ||
|
||
``` | ||
# 테스팅 도구 설치 | ||
npm i -D jest @types/jest @swc/core @swc/jest \ | ||
jest-environment-jsdom \ | ||
@testing-library/react @testing-library/jest-dom@5.16.4 | ||
|
||
# jest.config.js 파일 생성 (경로 안에 내용 복붙) | ||
https://github.com/megaptera-kr/textbook/blob/main/usestore-ts-example/jest.config.js | ||
``` | ||
|
||
# Parcel 설치 | ||
* * * | ||
|
||
``` | ||
npm i -D parcel | ||
``` | ||
|
||
# 명령어 세팅 | ||
* * * | ||
|
||
``` | ||
# package.json 파일 명령어 수정 (scripts 명령어 복붙) | ||
"scripts": { | ||
"start": "parcel --port 8080", | ||
"build": "parcel build", | ||
"check": "tsc --noEmit", | ||
"lint": "eslint --fix --ext .js,.jsx,.ts,.tsx .", | ||
"test": "jest", | ||
"coverage": "jest --coverage --coverage-reporters html", | ||
"watch:test": "jest --watchAll" | ||
}, | ||
|
||
# "main": "index.js" > "source": "index.html"로 변경 | ||
|
||
# 파일생성 및 코드 작성 | ||
index.html | ||
src/main.tsx | ||
src/App.test.ts | ||
``` | ||
|
||
# 현재 버전에 맞게 수정해야 되는 부분 | ||
* * * | ||
|
||
``` | ||
# package.json lint 명령어 수정 | ||
# 기존 {js,jsx,ts,tsx}를 체크해야되지만 파일이 생성되어 있지 않다면 오류가 나기 때문에 생성된 파일의 확장자만 작성 | ||
"lint": "eslint --fix src/**/*.{ts,tsx}", | ||
|
||
# jest.config.js 파일에서 ./jest.setup 삭제 | ||
|
||
# eslint.config.mjs 파일에서 세팅 변경 | ||
import globals from 'globals'; | ||
import pluginJs from '@eslint/js'; | ||
import tseslint from 'typescript-eslint'; | ||
import pluginReact from 'eslint-plugin-react'; | ||
|
||
export default [ | ||
{ files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'] }, | ||
{ languageOptions: { globals: globals.browser } }, | ||
pluginJs.configs.recommended, | ||
...tseslint.configs.recommended, | ||
pluginReact.configs.flat.recommended, | ||
{ | ||
settings: { | ||
react: { | ||
version: 'detect', | ||
}, | ||
}, | ||
rules: { | ||
'react/react-in-jsx-scope': 'off', | ||
}, | ||
}, | ||
]; | ||
``` | ||
|
||
|
||
# 명령어 실행 | ||
* * * | ||
|
||
``` | ||
# test 실행 | ||
npm run test | ||
|
||
# eslint 실행 | ||
npm run lint | ||
|
||
# 화면 실행 | ||
npm run start | ||
|
||
# 빌드 실행 | ||
npm run build | ||
``` | ||
|
||
|
||
프론트엔드 생존코스 1주차 과제 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import globals from 'globals'; | ||
import pluginJs from '@eslint/js'; | ||
import tseslint from 'typescript-eslint'; | ||
import pluginReact from 'eslint-plugin-react'; | ||
|
||
export default [ | ||
{ files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'] }, | ||
{ languageOptions: { globals: globals.browser } }, | ||
pluginJs.configs.recommended, | ||
...tseslint.configs.recommended, | ||
pluginReact.configs.flat.recommended, | ||
{ | ||
settings: { | ||
react: { | ||
version: 'detect', | ||
}, | ||
}, | ||
rules: { | ||
'react/react-in-jsx-scope': 'off', | ||
}, | ||
}, | ||
]; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<!DOCTYPE html> | ||
<html lang="ko"> | ||
<head> | ||
<meta charset="UTF-8"> | ||
<title>Sample</title> | ||
</head> | ||
<body> | ||
화면 | ||
</body> | ||
</html> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
module.exports = { | ||
testEnvironment: 'jsdom', | ||
setupFilesAfterEnv: [ | ||
'@testing-library/jest-dom/extend-expect', | ||
], | ||
transform: { | ||
'^.+\\.(t|j)sx?$': ['@swc/jest', { | ||
jsc: { | ||
parser: { | ||
syntax: 'typescript', | ||
jsx: true, | ||
decorators: true, | ||
}, | ||
transform: { | ||
react: { | ||
runtime: 'automatic', | ||
}, | ||
}, | ||
}, | ||
}], | ||
}, | ||
testPathIgnorePatterns: [ | ||
'<rootDir>/node_modules/', | ||
'<rootDir>/dist/', | ||
], | ||
}; | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
파일 끝에 붙어 있는 ⛔️ (No newline at end of file) 를 보신적이 있으신가요??
Files changed 를 유심히 보셨다면 한 번씩은 보셨을텐데요.
항상 Pull Request를 보내고 나서 자신이 작성한 코드를 Files changed 에서 다시 한번 살펴보는 습관을 들이시길 추천해요.
파일 끝에 개행을 추가하지 않으면 파일 끝에 ⛔️ (No newline at end of file) 경고 문구가 붙어요.
파일 끝에 개행을 추가 하는 이유는 예전에는 컴파일러가 파일 끝에 개행문자가 없으면 한 줄이 끝나지 않은 것으로 인식해서 에러가 발생하는 이슈가 있었기 때문이에요.
최근에는 파일 끝에 개행문자가 없어도 컴파일러에서 별다른 문제가 발생하지 않지만 혹시나 모를 잠재적인 에러나 POSIX 에 명세되어 있기 때문에 개인적으로는 파일 끝에 개행문자를 추가 하시길 권장해요.