[node.js] 로컬 모듈을 npm 패키지 종속성으로 지정하는 방법

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

"express"     : "3.1.1"

내 코드를 모듈 식으로 구성하고 package.json에 의해 로컬 (현재있는 파일 시스템에서 의미) 모듈 세트를 설치하고 싶습니다. 다음을 실행하여 로컬 모듈을 설치할 수 있음을 알고 있습니다.

npm install path/to/mymodule

그러나 package.json dependencies 구조를 통해이를 수행하는 방법을 모르겠습니다. --save이 명령 에서 옵션을 사용하면 단순히 "mymodule": "0.0.0"package.json 에 넣 습니다 (파일 경로 위치를 참조하지 않음). 그런 다음 node_modules에서 설치된 버전을 제거하고 package.json에서 다시 설치하려고하면 실패합니다 (중앙 레지스트리에서 “mymodule”을 찾고 로컬로 보이지 않기 때문에).

나는 "dependencies": {}이것이 파일 시스템 경로에서 설치되기를 원하는 구조를 알려주는 방법이라고 확신 하지만 방법을 모른다.

다른 사람 이이 문제가 있었습니까? 감사.



답변

npm install 이제 이것을 지원합니다

npm install --save ../path/to/mymodule

이를 위해서는 mymodule자체 모듈을 사용하여 모듈을 구성해야합니다 package.json. NodeJS 모듈 작성을 참조하십시오 .

npm 2.0부터는 로컬 종속성이 기본적으로 지원됩니다. 비슷한 질문에 대한 danilopopeye의 답변을 참조하십시오 . 이 질문이 웹 검색 결과에서 매우 높은 순위에 올랐으므로 여기에 그의 답변을 복사했습니다.

이 기능은 npm 버전 2.0.0에서 구현되었습니다. 예를 들면 다음과 같습니다.

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

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

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

업데이트 동기화

이후 npm install사본 mymodulenode_modules, 변화 mymodule의 소스가 자동으로 종속 프로젝트에서 볼 수 없습니다.

종속 프로젝트를 업데이트하는 두 가지 방법이 있습니다

  • 버전을 업데이트 한 mymodule후 다음을 사용npm update 하십시오. 위에서 볼 수 있듯이 package.json“종속성”항목에는 일반 종속성과 같이 버전 지정자가 포함되어 있지 않습니다. 대신, 지역 종속성, npm update단지 확인을 시도 최신 의 결정에 따라 버전이 설치되어 mymoduleS ‘ package.json. 이 특정 문제에 대한 chriskelly의 답변을 참조하십시오 .

  • 을 사용하여 다시 설치하십시오 npm install. 이렇게하면 mymodule소스 경로에있는 것이 무엇이든 , 이전 버전이거나 대체 분기가 체크 아웃 된 경우에도 설치됩니다.


답변

참조 : package.json의 지역 의존성

대답은 다음과 같습니다 npm link. https://docs.npmjs.com/cli/link


답변

결국 깔끔한 방법을 찾을 수 없으므로 디렉토리를 만들고 local_modulesbashscript를 scripts-> preinstall의 package.json에 추가했습니다.

#!/bin/sh
for i in $(find ./local_modules -type d -maxdepth 1) ; do
    packageJson="${i}/package.json"
    if [ -f "${packageJson}" ]; then
        echo "installing ${i}..."
        npm install "${i}"
    fi
done


답변

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-manager 에서 확인하십시오 . 그것이 누군가를 돕기를 바랍니다.


답변

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


답변