node.js - 차이 - package.json 사용법




npm 패키지 종속성으로 로컬 모듈을 지정하는 방법 (4)

종속성 아래 package.json 파일에 지정된 타사 모듈 (예 : 'express')에 대한 일반적인 종속성 세트가있는 응용 프로그램이 있습니다. 예 :

"express"     : "3.1.1"

내 자신의 코드를 모듈화하여 구조화하고 package.json에 의해 모듈이 설치 될 로컬 (한 파일 시스템에 대한 의미) 세트를 갖고 싶습니다. 나는 다음을 실행하여 로컬 모듈을 설치할 수 있음을 알고있다.

npm install path/to/mymodule

그러나 package.json 종속성 구조를 통해이 작업을 수행하는 방법을 알지 못합니다. 이 명령에서 --save 옵션을 사용하는 것은 단순히 "mymodule": "0.0.0" 을 내 package.json에 넣는 것입니다 (파일 경로 위치를 참조하지 않음). 그런 다음 node_modules에서 설치된 버전을 제거하고 package.json에서 다시 설치하려고하면 (중앙 레지스트리에서 "mymodule"을 찾고 로컬에서 보이지 않으므로) 실패합니다.

필자는 이것이 "dependencies": {} 구조가 파일 시스템 경로에서 설치되기를 원하지만 어떻게해야 할지를 알리는 방법이라고 확신합니다.

다른 누구든지이 문제가 있었습니까? 감사.


NPM 2.0.0부터 로컬 종속성 가져 오기가 기본적으로 지원됩니다. 이것은 비슷한 질문에 대한 답변으로 danilopopeye에 의해 문서화되었습니다 . 나는이 질문이 Google 검색 결과에서 매우 높은 순위에 올랐기 때문에 정답을 찾을 필요가있는 사람을 돕기 위해 그의 응답을 여기에 복사했습니다.

이 기능은 npm 2.0.0 버전에서 구현되었습니다. 예 :

{
  "name": "baz",
  "dependencies": {
    "bar": "file:../foo/bar"
  }
}

다음 경로 중 하나라도 유효합니다.

../foo/bar
~/foo/bar
./foo/bar
/foo/bar

node_modules에 사전 설치된 모듈을 다른 파일과 함께 게시하는 것이 좋으면 다음과 같이 할 수 있습니다.

// ./node_modules/foo/package.json
{ 
  "name":"foo",
  "version":"0.0.1",
  "main":"index.js"
}

// ./package.json
...
"dependencies": {
  "foo":"0.0.1",
  "bar":"*"
}

// ./app.js
var foo = require('foo');

git에 모듈을 저장하고 부모 package.json에게 git에서 종속성을 설치하도록 요청할 수도 있습니다. https://npmjs.org/doc/json.html#Git-URLs-as-Dependencies



npm link 명령 (레지스트리에 공개하지 않거나 node_modules 폴더에 별도의 복사본을 유지하지 않고 로컬 모듈을 개발할 때 권장되는 솔루션)을 사용하여 많은 어려움을 겪은 후에이 문제를 해결할 수있는 작은 npm 모듈을 만들었습니다.

수정에는 두 가지 간단한 단계 가 필요 합니다 .

먼저:

npm install lib-manager --save-dev

둘째, package.json 다음을 추가합니다.

{  
  "name": "yourModuleName",  
  // ...
  "scripts": {
    "postinstall": "./node_modules/.bin/local-link"
  }
}

자세한 내용은 https://www.npmjs.com/package/lib-managerhttps://www.npmjs.com/package/lib-manager . 누군가가 도움이되기를 바랍니다.





npm