나는에서 모듈의 로컬 버전을 어떻게 사용합니까 node.js
. 예를 들어 앱에서 커피 스크립트를 설치했습니다.
npm install coffee-script
이것은 그것을 설치 ./node_modules
하고 coffee 명령은에 ./node_modules/.bin/coffee
있습니다. 프로젝트의 기본 폴더에있을 때이 명령을 실행하는 방법이 있습니까? 번 bundle exec
들러 와 비슷한 것을 찾고 있다고 생각 합니다. 기본적으로 프로젝트와 관련된 모든 사람이 사용해야하는 커피 스크립트 버전을 지정하고 싶습니다.
-g
플래그를 추가하여 전 세계에 설치할 수 있으므로 커피가 어디서나 잘 작동하지만 프로젝트마다 다른 버전의 커피를 원한다면 어떻게해야합니까?
답변
업데이트 : 정세 정은 아래 답변에서 지적했듯이 npm 5.2.0부터 사용할 수 있으므로 npx [command]
더 편리합니다.
5.2.0 이전 버전의 경우 오래된 답변 :
퍼팅 문제
./node_modules/.bin
PATH는 현재 작업 디렉토리가 프로젝트 디렉토리 구조의 루트 (즉, 위치 node_modules
) 인 경우에만 작동한다는 것입니다
작업 디렉토리가 무엇이든, 로컬로 설치된 바이너리 경로를 얻을 수 있습니다.
npm bin
coffee
프로젝트 디렉토리 계층 구조에 관계 없이 로컬로 설치된 바이너리 를 실행하려면 이 bash 구성을 사용할 수 있습니다
PATH=$(npm bin):$PATH coffee
나는 이것을 npm-exec에 별명을 붙였다.
alias npm-exec='PATH=$(npm bin):$PATH'
이제는 할 수 있습니다
npm-exec coffee
내가 어디에 있든 커피의 올바른 사본을 실행
$ pwd
/Users/regular/project1
$ npm-exec which coffee
/Users/regular/project1/node_modules/.bin/coffee
$ cd lib/
$ npm-exec which coffee
/Users/regular/project1/node_modules/.bin/coffee
$ cd ~/project2
$ npm-exec which coffee
/Users/regular/project2/node_modules/.bin/coffee
답변
$PATH
더 이상 조작 할 필요가 없습니다 !
에서 npm@5.2.0 , NPM 과 함께 제공 npx
할 수 있습니다 패키지는 로컬에서 명령을 실행 node_modules/.bin
하거나 중앙 캐시를.
간단히 실행하십시오.
$ npx [options] <command>[@version] [command-arg]...
기본적으로, 또는 로컬 프로젝트 바이너리에 존재 npx
하는지 확인 하고 실행합니다.<command>
$PATH
호출 npx <command>
할 때 <command>
당신에없는 $PATH
자동으로 당신을 위해 NPM 레지스트리에서 해당 이름의 패키지를 설치하고 호출합니다. 설치가 완료되면 설치된 패키지가 전 세계 어디에도 없으므로 장기적으로 오염에 대해 걱정할 필요가 없습니다. --no-install
옵션 을 제공하여이 동작을 방지 할 수 있습니다 .
의 경우 다음 명령을 실행하여 패키지를 수동으로 npm < 5.2.0
설치할 수 있습니다 npx
.
$ npm install -g npx
답변
npm bin
명령을 사용 하여 프로젝트의 노드 모듈 / bin 디렉토리를 가져 오십시오.
$ $(npm bin)/<binary-name> [args]
예 :
$ $(npm bin)/bower install
답변
사용하다 npm run[-script] <script name>
npm을 사용하여 bin 패키지를 로컬 ./node_modules
디렉토리 에 설치 한 후 다음과 같이 package.json
추가 하도록 수정 <script name>
하십시오.
$ npm install --save learnyounode
$ edit packages.json
>>> in packages.json
...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"learnyounode": "learnyounode"
},
...
$ npm run learnyounode
npm install에 –add-script 옵션이나 그 밖의 것이 있거나 scripts 블록에 추가하지 않고 npm run이 작동하면 좋을 것입니다.
답변
사용하십시오 npm-run
.
읽어보기에서 :
npm-run
node_modules에서 로컬 실행 파일 찾기 및 실행
npm 수명주기 스크립트에 사용 가능한 모든 실행 파일을 사용할 수 있습니다 npm-run
.
용법
$ npm install mocha # mocha installed in ./node_modules
$ npm-run mocha test/* # uses locally installed mocha executable
설치
$ npm install -g npm-run
답변
업데이트 : 언급 된 보안상의 이유로 최소한 최신 npm bin
명령이 아닌이 방법을 더 이상 권장하지 않습니다 . 아래의 원래 답변 :
알다시피, 로컬로 설치된 바이너리는에 ./node_modules/.bin
있습니다. 전역 적으로 사용 가능한 이진 파일이 아닌이 디렉토리에서 이진 파일을 항상 실행하려면 ./node_modules/.bin
먼저 경로를 먼저 입력하는 것이 좋습니다 .
export PATH="./node_modules/.bin:$PATH"
당신이 당신이를 넣어 경우 ~/.profile
, coffee
항상 될 것입니다 ./node_modules/.bin/coffee
가능한 경우 그렇지 않은 경우 /usr/local/bin/coffee
(또는 당신이 무엇을 아래 노드 모듈을 설치하는 접두사).
답변
PATH 솔루션에는 $ (npm bin)이 .profile / .bashrc / etc에 배치되면 한 번 평가되고 경로가 처음 평가 된 디렉토리로 영원히 설정되는 문제가 있습니다. 대신 현재 경로를 수정하면 스크립트를 실행할 때마다 경로가 커집니다.
이러한 문제를 해결하기 위해 함수를 작성하여 사용했습니다. 환경을 수정하지 않고 사용하기 쉽습니다.
function npm-exec {
$(npm bin)/$@
}
그러면 환경을 변경하지 않고도 다음과 같이 사용할 수 있습니다.
npm-exec r.js <args>