의존성 아래 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
사본 mymodule
에 node_modules
, 변화 mymodule
의 소스가 자동으로 종속 프로젝트에서 볼 수 없습니다.
종속 프로젝트를 업데이트하는 두 가지 방법이 있습니다
-
버전을 업데이트 한
mymodule
후 다음을 사용npm update
하십시오. 위에서 볼 수 있듯이package.json
“종속성”항목에는 일반 종속성과 같이 버전 지정자가 포함되어 있지 않습니다. 대신, 지역 종속성,npm update
단지 확인을 시도 최신 의 결정에 따라 버전이 설치되어mymodule
S ‘package.json
. 이 특정 문제에 대한 chriskelly의 답변을 참조하십시오 . -
을 사용하여 다시 설치하십시오
npm install
. 이렇게하면mymodule
소스 경로에있는 것이 무엇이든 , 이전 버전이거나 대체 분기가 체크 아웃 된 경우에도 설치됩니다.
답변
답변
결국 깔끔한 방법을 찾을 수 없으므로 디렉토리를 만들고 local_modules
bashscript를 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