npm 내용들

KHW·2021년 6월 3일
0

Node.js

목록 보기
6/19

1. npm install

기존의 npm install 목적은 node_modules 내에 패키지를 설치 후 어떠한 dependencies에도 목적이 추가되지 않았었다.

현재는 npm 5버전 이후부터는 npm install만 적어도 dependencies에 추가가 된다(현재 최신은 6.xx 버전이다).
=> 즉, npm installnpm install --save가 같다는 의미이다.
(어쩐지 npm install crawler만 해도 dependency에 업데이트가 되더라)


2. npm install --save / npm install --save-dev

  • npm install --save : package.json의 "dependencies" 부분에 설치된다.

  • npm install --save-dev : package.json의 "devDependencies" 부분에 설치된다.


3. dependencies / devDependencies

"dependencies"

프로덕션 환경에서 응용 프로그램에 필요한 패키지.
내가 packaging한 module을 다른 사람들이 다운받아서 활용할 때
설치가 필요한 library 모음

"devDependencies"

로컬 개발 및 테스트에만 필요한 패키지.
개발단계에서만 사용하는 패키지들
ex) eslint(코드 가독성 높여주는 역할), webpack


4. package.json / package.lock.json

npm init

해당 명령어를 통해서 package.json 파일이 만들어진다.


npm install

해당 명령어를 통해서 package.lock.json 파일이 만들어진다.

  • 기본적으로 npm init 이후 npm install을 해야한다.

5. package.json

npm 패키지들을 관리하는 파일


package.json 왜필요해?

개발할 때 엄청 크고 무거운 node-modules를 공유할 필요 없이 package.json만 공유하면 동일한 환경에서 작업할 수 있다.

(실제로 압축된 파일을 다운받고 npm install하니 기존에 package.json에 있는 ejs를 통해 ejs폴더를 포함한 무거운 파일의 node_modules가 설치되는 것을 확인 했다. )


6. package.lock.json

node_modules 트리나 package.json 파일을 수정하게 되면 자동으로 생성되는 파일
(즉, npm install과 같이 무엇인가를 설치하여 node_module이나 혹은 package.json에 영향을 끼칠때 작성되는 의존성을 가진다.)


package.lock.json 왜필요해?

git 저장소에 node.js 프로젝트를 커밋할 때
보통 node_modules 폴더는 부피가 커서 commit에 포함시키지 않습니다.
이 때 package-lock.json 파일은 꼭 함께 커밋을 해주어야 합니다.
다른 팀원이 이 프로젝트를 처음 pull 받아서 npm install 을 했을 때 개발 당시의 동일한 버전의 모듈들이 설치됨을 보장하기 위함

ex) package.json은 패키지의 정보를 담고 있으나 해당 ^4.16.4라면 버전이 달라지고 이는 에러를 야기한다.
즉, node_modules나 package.json이 변경되면 이를 적용하는 역할을 하는 package.lock.json은 필수적이다.

ex) package.json 파일의 의존성 선언에는 version range가 사용됩니다. version range란 특정 버전이 아니라 버전의 범위를 의미합니다.
가장 흔한 예로 npm install express를 실행하게 되면 package.json 파일에는 “^4.16.3”(Caret Ranges)로 버전 범위가 추가됩니다.

쓴이는 기존에 nodemon에서 2.0.12에서 발생한 문제가 2.0.7에서 문제가 해결되는 것을 확인 했다.
즉, 같은 전반적으로 버전의 범위를 포함하는 package.json에 추가적으로 정확한 부분까지 영향을 받는 package.lock.json이 필요했다.
nodemon 버전 에러


7. 예시 작성하기

새로운 폴더이다.


npm init을 통해 package.json생성


npm install을 통해 package.lock.json 생성


다른 사람의 git코드에서 package.json을 받아왔다 가정(복사)


다른 사람의 git코드에서 package.lock.json을 받아왔다 가정(복사)


npm install 명령어 실행시 node_modules이 새롭게 만들어지는 것을 알 수 있다.


8. 정리

서로간의 버전 문제를 해결하면서 무거운 node_modules를 git에 올릴 필요 없이
package.json의 "dependencies"에 필요한 역할을 하는 프레임워크가 존재하고
ex) express , crawler

package.lock.json의 내용들로 필요한 node_modulesnpm install 명령어를 통해 package.json이 기존에서 수정되었으므로
다시 package.lock.json 안에있는 내용들이 node_modules를 새롭게 생성해준다. (기존 내용이 있다면 업데이트 부분만 업데이트 해준다.)


9. nvm은 왜 필요한가?

멘토님 : 실제 프로젝트는 node버전을 올리면 에러가 나는 예외적인 경우가 발생할 수 있어서
프로젝트에 따라 최적화된 버전이 있어요
그렇다면 프로젝트를 여러개 관리를 하는 입장에서는 그 버전에 따라 맞춰서 개발을 진행해야 하는 경우가 발생하는데
그때마다 내 컴퓨터의 버전을 다운그레이드 했다가 업그레이드 했다가 할 수는 없으니까
해당 패키지를 사용합니다


출처

dependencies와 devDependencies 차이
package-lock.json 파일은 무엇인가?
package.json 파헤치기
package-lock.json은 왜 필요할까?
package-lock.json 에 관하여

profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글