이번 글은 2020년 1월 15일에 서울대 SKT연구소에서 T아카데미 주관으로 진행된 <모던 프론트엔드 개발 환경의 이해>(강사: 김정환 님)라는 세미나의 필기 내용이다. 주요 내용 위주로 필기했기 때문에, 다른 글에 비해 흐름이 다소 병렬적일 수 있음에 양해바란다.
NPM(Node Package Manager)
- 프론트엔드 개발자가 Node.js를 최소한이라도 배워야 하는 이유는, 모던 프론트엔드 개발을 위한 개발 환경을 셋팅하려면 적어도 NPM은 쓰게 되는 등 자연스럽게 접하게 되기 때문이다.
- NPM은 Node.js를 설치하면 함께 설치된다.
- NPM은 PHP의 컴포져(Composer)나 자바의 그래들(Gradle)과 같은 역할이다.
- React.js를 다룰 때, CRA(Create React App)를 쓰는 경우가 많아 직접
npm init부터 해볼 기회가 많지 않을 수 있는데 그러한 boilerplate의 도움없이 프로젝트를 시작하는 방법을 배워보자.
프로젝트 초기화
npm init이라는 명령어를 쓰고, 이어 등장하는 정보입력란에 답하면 package.json이 생긴다.- 모두 기본값을 사용할 것이라면
npm init -y명령어로 질문을 스킵할 수 있다.
package.json와 scripts
-
프로젝트의 핵심 정보들을 담고 있다.
name : 프로젝트 이름 version : 프로젝트 버전 정보 description : 프로젝트 설명 main : 노드 어플리케이션일 경우 진입점 경로. 프론트엔드 프로젝트일 경우 사용하지 않는다. scripts : 프로젝트 명령어를 등록할 수 있다. 초기화시 test 명령어가 샘플로 등록되어 있다. author : 프로그램 작성자 license : 라이센스 -
참고로, 이 중 scripts 부분은
npm init을 했다면 아래와 같이 되어있을 텐데,npm test명령어를 쓰게 되면 “Error: no test specified”라는 메시지를 출력한 뒤 에러 코드 1을 던진다.{ "scripts": { "test": "echo \"Error: no test specified\" && exit 1" } } -
사용 가능한 NPM 명령어는 다음과 같다. 이 중에서
start,test,install,uninstall을 많이 쓴다. 이 명령어들은npm start처럼, 앞에npm을 붙여 쓴다.access, adduser, audit, bin, bugs, c, cache, ci, cit, clean-install, clean-install-test, completion, config, create, ddp, dedupe, deprecate, dist-tag, docs, doctor, edit, explore, get, help, help-search, hook, i, init, install, install-ci-test, install-test, it, link, list, ln, login, logout, ls, org, outdated, owner, pack, ping, prefix, profile, prune, publish, rb, rebuild, repo, restart, root, run, run-script, s, se, search, set, shrinkwrap, star, stars, start, stop, t, team, test, token, tst, un, uninstall, unpublish, unstar, up, update, v, version, view, whoami - 위 명령어 리스트 중
build는 없음을 알 수 있다. 커스텀으로 작성해야하는 명령어이기 때문이다. 커스텀 명렁어의 경우npm run을 앞에 붙여서 사용한다. - 이 npm script에 커스텀 명령어
"transfile" : "babel"써두고npm run transfile을 실행하면, 먼저./node_modules에서 babel을 찾고 거기서 못찾으면전역으로 설치한 babel을 찾아 실행하게 된다.
npx는 뭐야?
매번 ./node_modules/.bin/babel app.js와 같이 쓰긴 힘드니, npx babel app.js라고 대체해서 쓸 수 있다. npm을 깔았으면 npx는 쓸 수 있게 된다.
[참고자료]
김정환, 모던 프론트엔드 개발 환경의 이해, 68차 토크ON세미나(2020. 1. 15.), T아카데미(SK Planet).