[javascript] 왜 글로벌 및 로컬로 펄프를 설치해야합니까?

gulp 에 대한 2 개의 매뉴얼에 따르면 gulp를 먼저 전역 (-g 플래그 사용)으로 설치 한 다음 로컬로 한 번 더 설치해야한다고 말합니다. 왜 이것이 필요합니까?



답변

도구를 전체적으로 설치할 때 사용자는 노드 프로젝트 외부를 포함하여 어디에서나 명령 줄 유틸리티로 사용합니다. 노드 프로젝트의 글로벌 설치는 배치를 더 어렵게하기 때문에 좋지 않습니다 .

npm 5.2 이상

npx유틸리티와 함께 번들 npm 5.2로 해결할 수있는 문제이 문제를. 그것으로 전체적으로 설치된 유틸리티와 같이 로컬로 설치된 유틸리티를 호출 할 수 있습니다 npx. 예를 들어 로컬에 설치된을 호출하려는 경우 eslint다음을 수행 할 수 있습니다.

npx eslint .

npm <5.2

A의 사용하는 경우 script당신의 package.json의 필드 npm검색 node_modules설치 로컬 그래서뿐만 아니라 전 세계적으로 설치된 모듈과 도구는 충분하다.

따라서 (package.json에) 만족한다면 :

"devDependencies": {
    "gulp": "3.5.2"
}
"scripts": {
    "test": "gulp test"
}

등으로 실행 npm run test하면 전역 설치가 전혀 필요하지 않습니다.

두 가지 방법 모두 sudo필요하지 않기 때문에 사람들이 프로젝트를 설정하는 데 유용 합니다. 또한 의미합니다gulp package.json에서 버전이 충돌하면 업데이트되므로 모든 사람이 프로젝트로 개발할 때 동일한 버전의 꿀꺽 꿀꺽 사용합니다.

추가:

꿀꺽 꿀꺽 사용하는 경우 전 세계적으로 비정상적인 동작이있는 것으로 보입니다. 전역 설치로 사용될 때 gulp는 로컬로 설치된 gulp를 찾아 제어를 전달합니다. 따라서 gulp 전역 설치에는 gulp 로컬 설치가 필요합니다. 위의 대답은 여전히 ​​선언됩니다. 로컬 설치는 항상 글로벌 설치보다 선호됩니다.


답변

TLDR; 이유는 다음과 같습니다 .

이것이 작동하는 이유는 로컬에 설치된 버전을 사용하여 gulp실행하려고하기 때문 입니다. 여기를 참조 하십시오 . 따라서 전 세계적으로 로컬에서 꿀꺽 꿀꺽 설치 한 이유입니다.gulpfile.jsgulp

기본적 gulp으로 로컬로 설치할 때 스크립트가 없으므로 쉘을 PATH입력 gulp하여 명령을 찾을 수 없습니다 . 전역 디렉토리 를 설치 하면 전역 디렉토리가 경로에있을 가능성이 높기 때문에 gulp스크립트가 시작됩니다 .PATHnode/bin/

그러나 로컬 종속성을 존중하려면 gulp로컬로 설치된 버전 자체를 사용하여을 실행하십시오 gulpfile.js.


답변

gulp로컬로 설치된 전역 링크 를

npm link gulp


답변

전역 및 로컬로 왜 꿀꺽 꿀꺽 설치해야합니까?

  1. 이미 전역에 설치 한 경우 gulp를 로컬로 설치해야하는 이유는 무엇입니까?

  2. 이미 로컬에 설치 한 경우 왜 글로벌로 설치해야합니까?

다른 여러 사람들이이 질문들에 대한 훌륭한 답변을 따로 제공했지만 통일 된 답변으로 정보를 통합하는 것이 도움이 될 것이라고 생각했습니다.

이미 전역에 설치 한 경우 gulp를 로컬로 설치해야하는 이유는 무엇입니까?

꿀꺽 꿀꺽 로컬에 설치하는 이유는 다음과 같은 몇 가지 이유로 구성됩니다.

  1. 프로젝트의 종속성을 로컬로 포함하면 사용 된 gulp 버전 (또는 다른 종속성)이 원래 의도 된 버전이됩니다.
  2. require ()를 사용할 때 노드는 기본적으로 전역 모듈을 고려하지 않습니다 (스크립트에 gulp를 포함해야 함). 궁극적으로 이는 전역 모듈에 대한 경로가 기본적으로 NODE_PATH에 추가되지 않기 때문입니다.
  3. 노드 개발 팀에 따르면 로컬 모듈이 더 빨리로드됩니다. 나는 이것이 왜 그런지 말할 수는 없지만 이것은 개발 (즉, dev 의존성)보다 생산 (즉, 런타임 의존성)에서 노드의 사용과 더 관련이있는 것 같습니다. 로컬 모듈과 전역 모듈을로드 할 때 얻을 수있는 사소한 속도 이점에 관심이있을 수 있기 때문에 이것이 합법적 인 이유라고 생각하지만이 이유로 눈썹을 자유롭게 올리십시오.

이미 로컬에 설치 한 경우 왜 글로벌로 설치해야합니까?

  1. gulp를 전 세계적으로 설치하는 이유는 실제로 시스템 경로 내에서 gulp 실행 파일을 자동으로 찾는 편의성입니다.

로컬로 설치하지 않으려면을 사용할 수 npm link [package]있지만 link 명령뿐만 아니라 명령도 install --global지원하지 않는 것 같습니다--save-dev 옵션 방법은 전 세계적으로 gulp를 설치 한 다음 쉬운 버전을 쉽게 추가 할 수있는 방법이 없다는 것을 의미합니다 로컬 package.json 파일

궁극적으로 모든 프로젝트에서 공통 도구 설치를 피할 수 있도록 글로벌 모듈을 사용하는 옵션을 사용하는 것이 더 합리적이라고 생각합니다. 특히 grunt, gulp, jshint 등과 같은 개발 도구의 경우에는 더욱 그렇습니다. 곡물에 맞서 싸울 때 도구와 약간 싸우는 것 같습니다.


답변

node_modules로컬 설치 의 폴더가에있는 경우 기술적으로 전역으로 설치할 필요가 없습니다 PATH. 일반적으로 이것은 좋은 생각이 아닙니다.

또는 npm test참조 gulp라면 다음을 입력하십시오.npm test 하면 로컬 꿀꺽 마실 것입니다.

전 세계적으로 꿀꺽 꿀꺽 꿀꺽 설치 한 적이 없습니다. 나쁜 형태라고 생각합니다.


답변

우리의 문제가 로컬에서만 gulp를 설치하는 것과 직접 관련이 있는지 확실하지 않습니다. 그러나 우리는 많은 의존성을 스스로 설치해야했습니다. 이로 인해 “거대한”package.json이 발생하며 로컬에서만 꿀꺽 꿀꺽 설치하는 것이 좋은 아이디어인지 확실하지 않습니다. 빌드 환경 때문에 그렇게해야했습니다. 그러나 꼭 필요한 것이 아니라면 꿀꺽 꿀꺽을 전 세계에 설치하지 않는 것이 좋습니다. 우리는 다음과 같이 비슷한 문제에 직면했습니다. 블로그 게시물 했습니다.

이러한 문제는 로컬 컴퓨터에서 모든 개발자가 전 세계에 꿀꺽 꿀꺽 설치했기 때문에 발생하지 않습니다. 빌드 시스템에서 설명 된 문제가있었습니다. 누군가 관심이 있다면이 문제에 대해 더 깊이 이해할 수 있습니다. 그러나 지금은 로컬에서만 꿀꺽 꿀꺽 설치하는 것이 쉽지 않다는 것을 언급하고 싶었습니다.


답변

내가 여기에서 보지 못했기 때문에 MacOS 또는 Linux를 사용하는 경우 bashrc (bashrc 등)에 이것을 추가하는 것이 좋습니다.

node_modules/.bin

이 상대 경로 항목을 사용하여 노드 프로젝트의 루트 폴더에 앉아있는 경우 “글로벌 설치”에 대해 걱정하지 않고 명령 줄 도구 (eslint, gulp 등)를 실행할 수 있습니다. npm run 등에 .

이 작업을 수행 한 후에는 전 세계적으로 모듈을 설치 한 적이 없습니다.