[macos] npm 전역 경로 접두사

나는 npm과거 의 행동으로 혼란스러워서 평소보다 더 조심 스럽습니다 .

나는 Mac에 있고를 통해 node.js를 설치했습니다 brew install node.

이제 jslint.js명령으로 명령 행 에서 실행하고 싶습니다. jslint이 작업을 수행하는 정식 방법은 sudo npm install -g jslint이 출력에서 ​​성공적으로 실행 된 것입니다.

$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)

그후

$ jslint ply.js
zsh: command not found: jslint

때문에이하는 /usr/local/share/npm/bin내에있는 없습니다 $PATH.

1) brew전역 npm bin경로를 설치 하지 않은 이유는 무엇 입니까? 어쩌면 그럴 수도 있지만 무언가 zsh가 엉망입니다. 어디서 찾을 수 있을까요?
2) 내가해야합니까? ( 내 바닥에 내 :/usr/local/share/npm/bin보낸 부분 $PATH에 추가 ~/.zshrc)

나중에 다른 것을 설치하면 (Homebrew 또는 다른 것을 사용하여) 경로를 설정하기 위해 zsh 시작 스크립트에 추가해야하기 때문에 이것이 올바른 방법이 아닌 것 같습니다. 이 특별한 경우에는 npm install -g“적절한”위치에서 올바른 심볼릭 링크를 만들지 않는 것의 문제 일뿐 /usr/local/bin입니다.

내가 할 일은 /usr/local/bin문제가있는 모든 프로그램에 대한 심볼릭 링크를 수동으로 작성하는 것이며 내 목적에 충분해야한다고 생각합니다.

편집 : 나는이 오래된 질문이 대중적이지만 지금은 내 개인 워크 플로우와 노드 설치 및 다양한 종속성 관리에 대한 최선의 방법 측면에서 구식이기 때문에 2019 년에 이것을 업데이트하고 있습니다.

내 개인 워크 플로는 이제 nodejs.org에서 얻은 설치 프로그램을 사용하여 시스템에 노드를 설치합니다. 필자는 실제로 파일을 관리하는 방법을 가장 잘 알고 있기 때문에 homebrew 패키지 자체보다 이것을 신뢰합니다. Mac 또는 Windows에서 시스템 노드를 8.10에서 10.15로 변경하려면 OS 용 10.15의 nodejs.org에서 설치 프로그램을 다운로드하십시오. homebrew를 통해 설치된 노드를 업그레이드하려고 시도하는 것은 항상 내 경험상 더 어려운 접근법으로 입증되었습니다.

또한, 가장 큰 지적은 위의 jslint 예제의 npm 설치에 표시된 것처럼 sudo를 사용하지 않는 것이 좋습니다. 수퍼 유저를 사용하여 홈 브루 크 패키지를 설치하거나 상호 작용해서는 안된다는 것이 확실합니다. 필요하지 않아야하며 파일 권한 두통으로 이어질 것입니다!

또한 jslint보다 ESLint를 권장하며 몇 년 동안 jslint를 사용하지 않았습니다.



답변

당신의 확장 PATH:

export PATH=/usr/local/share/npm/bin:$PATH

끔찍한 생각이 아닙니다. 그렇게 말한 후에는 할 필요가 없습니다.

이것을 실행하십시오 :

npm config get prefix

OS X의 기본값은 /usr/local입니다. 즉, npm은 바이너리를로 연결합니다 /usr/local/bin.이 바이너리 는 이미 PATH(특히 Homebrew를 사용하는 경우) 에 있어야합니다 .

그래서:

  1. npm config set prefix /usr/local 다른 것이면
  2. sudonpm과 함께 사용하지 마십시오 ! jslint docs 에 따르면 , 당신은 그것을 할 수 있어야 npm install합니다.

npm을 sudo ( sudo brew install)로 설치 한 경우 일반 ol ‘로 다시 설치하십시오 brew install. Homebrew는 당신을 sudo자유롭게 해줄 것 입니다.


답변

이 문제에 시간을 보냈는데 PATH 스위치가 도움이되지 않았습니다. 내 문제는 브루 / 노드 / 고궁 박물원 버그가 여기 있었다 – https://github.com/npm/npm/issues/3794

Homebrew를 사용하여 이미 노드를 설치 한 경우 **** 안전하지 않을 수도 있다는 설명에 따라 참고하십시오. 그것은 나를 위해 일했지만 의도하지 않은 결과를 초래할 수 있습니다. 또한 최신 버전의 Homebrew가 npm을 올바르게 설치하는 것으로 보입니다. 그래서 아마 내가 시도 할 것이다 brew update, brew doctor, brew upgrade node**** 시도하기 전에 등 :

npm update -gf

또는 Homebrew로 노드를 설치하고 npm이 작동하려면 다음을 사용하십시오.

brew install node --without-npm
curl -L https://npmjs.org/install.sh | sh


답변

brew를 사용하고 접두사가 이미 다음과 같이 설정되었습니다.

$ npm config get prefix
/Users/[user]/.node

bin 및 lib 폴더가 root가 소유하고 있음을 알았으므로 일반적인 비 sudo 설치를 막았으므로 사용자에게 다시 소유했습니다.

$ cd /Users/[user]/.node
$ chown -R [user]:[group] lib
$ chown -R [user]:[group] bin

그런 다음 / Users / [user]에있는 .bash_profile에 경로를 추가했습니다.

PATH=$PATH:~/.node/bin


답변

brew는 -g와 함께 npm을 실행할 때에도 sudo를 사용할 필요가 없습니다. 실제로 실제로 더 많은 문제가 발생할 수 있습니다.

일반적으로 brew 또는 port를 사용하면 경로를 업데이트하여 .zshrc, .bashrc, .cshrc 또는 사용하는 쉘의 종류를 망칠 위험이 없습니다.


답변

다음을 수행하여 Vue Cli no 명령 오류를 수정했습니다.

  • 터미널 sudo nano ~/.bash_profile에서 bash 프로파일을 편집하십시오.
  • 더하다 export PATH=$PATH:/Users/[your username]/.npm-packages/bin
  • 파일 저장 및 터미널 재시작
  • 지금 당신은 사용할 수 있어야합니다 vue create my-projectvue --version

https://cli.vuejs.org/ 에서 최신 Vue Cli를 설치 한 후이 작업을 수행했습니다.

나는 일반적으로 원사를 사용하지만 전 세계적으로 npm으로 이것을 설치했습니다 npm install -g @vue/cli. 원한다면 원사도 사용할 수 있습니다yarn global add @vue/cli

참고 : 이미 설치 한 경우 먼저 전역으로 제거해야 할 수 있습니다. npm uninstall -g vue-cli

도움이 되었기를 바랍니다!


답변

brew와 npm 간의 충돌과 관련된 동일한 문제가 발생했습니다.이 솔루션을 확인하십시오 https://gist.github.com/DanHerbert/9520689


답변

달리기를 시도하십시오.

PATH=$PATH:~/npm/bin

그런 다음 express명령 행에서 실행하여 테스트를 수행 하십시오. 이것은 나를 위해 일했습니다.