npm 모듈을 설치할 때 -g 옵션을 주면 프로젝트마다 모듈을 따로 설치할 필요가 없다.
하지만 이는 그렇게 좋은 방법이 아니라고 한다.
이유는 아래와 같다.
모듈이 업데이트 되었는지 아닌지 확인이 불가능하다.
-g 옵션을 주면, 개발자가 다시 global로 최신 버전을 재설치하여 사용하지 않는 이상 같은 모듈을 계속 사용하게 된다. 이러면 모듈이 업데이트 되었는지 아닌지 알 수가 없다.
여러 프로젝트를 만들 때 어쩔 수 없이 같은 버전의 모듈을 사용하게 된다.
여러 개의 프로젝트를 만들면 각각의 프로젝트가 다른 버전을 필요로할 수 있다. 이럴 때 글로벌 모듈을 쓰게 되면 문제가 생긴다.
보일러 플레이트에게 global 모듈은 좋지 않다.
'create-react-app'같은 모듈의 경우, 변경사항이 꽤나 잦다. 이렇게 업데이트가 잦은 모듈은 -g 옵션을 주어 설치했을 때, 재설치를 하지 않는 이상 이전 버전을 사용할 수가 있다. 따라서 이러한 보일러 플레이트 모듈은 최신버전을 유지하는 것이 좋다.
npm 5.2 버전부터 npx가 기본 패키지로 제공되기 시작했다. npx도 모듈의 일종인데, 이 모듈은 npm을 통해 모듈을 로컬에 설치했어야만 실행할 수 있었던 문제를 해결해준다. 모듈을 로컬에 저장하지 않고 매번 최신 버전의 파일을 임시로 불러와서 실행시킨 후에 그 파일은 없어지는 방식으로 돌아가고 있다.
출처: https://ljh86029926.gitbook.io/coding-apple-react/undefined/npm-npx