[node.js] package.json의 로컬 종속성

그래서, 이런 일을하고 싶지 npm install도 설치 package.json../somelocallib종속성 또는 더 중요한 것은.

"dependencies": {
    "express": "*",
    "../somelocallib": "*"
}



답변

npm> = 2.0.0

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

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

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

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

로컬 패키지는 접두사 ( ) 로 복사 됩니다 ../node-modules

npm <2.0.0

평소 somelocallib와 같이 의존성을 두십시오 package.json.

"dependencies": {
  "somelocallib": "0.0.x"
}

그런 다음 run npm link ../somelocallib및 npm은 작업중인 버전을 symlink로 설치합니다 .

app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib

참조 : link (1)


답변

이제 로컬 노드 모듈 설치 경로를 package.json직접 지정할 수 있습니다. 문서에서 :

지역 경로

버전 2.0.0부터는 패키지가 포함 된 로컬 디렉토리에 대한 경로를 제공 할 수 있습니다. 지역 경로를 사용하여 저장할 수 있습니다 npm install -S또는 npm install --save, 이러한 양식 중 하나를 사용하여 :

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

이 경우 상대 경로로 정규화되어에 추가됩니다 package.json. 예를 들면 다음과 같습니다.

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

이 기능은 로컬 오프라인 개발 및 외부 서버에 충돌하지 않고 npm 설치가 필요한 테스트를 작성하는 데 유용하지만 공용 레지스트리에 패키지를 공개 할 때는 사용하지 않아야합니다.


답변

이것은 나를 위해 작동합니다.

package.json 파일에 다음을 배치하십시오.

"scripts": {
    "preinstall": "npm install ../my-own-module/"
}


답변

모듈을 버전 제어로 확인하고 npm 링크를 기억하는 개발자에게 의존하지 않기 때문에 이것을 더 자동화하려면 이것을 package.json “scripts”섹션에 추가하면됩니다.

"scripts": {
    "postinstall": "npm link ../somelocallib",
    "postupdate": "npm link ../somelocallib"
  }

이것은 해키를 넘어선 느낌이지만 “작동”하는 것 같습니다. 이 npm 문제에서 팁을 얻었습니다 :
https://github.com/npm/npm/issues/1558#issuecomment-12444454


답변

다음은 로컬 종속성을 추가하는 방법입니다.

npm install file:src/assets/js/FILE_NAME

NPM에서 package.json에 추가하십시오.

npm install --save file:src/assets/js/FILE_NAME

package.json에 다음과 같이 직접 추가하십시오.

....
  "angular2-autosize": "1.0.1",
  "angular2-text-mask": "8.0.2",
  "animate.css": "3.5.2",
  "LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....


답변

마스터 프로젝트

마스터 프로젝트에 사용할 package.json은 다음과 같습니다.

"dependencies": {
    "express": "*",
    "somelocallib": "file:./somelocallib"
}

,이 ./somelocallib라이브러리 폴더에 대한 참조입니다 마스터 프로젝트 package.json에 상대적으로가 .

참조 : https://docs.npmjs.com/files/package.json#local-paths


하위 프로젝트

라이브러리 종속성을 처리하십시오.

달리는 것 외에도 npm install 해야합니다 (cd node_modules/somelocallib && npm install).

이것은 NPM의 알려진 버그입니다.

참조 : https://github.com/npm/npm/issues/1341 (보다 최신 참조 참조)


도커에 대한 참고 사항

마스터 package.locksomelocallib/package.lock 소스 코드 관리자에 .

그런 다음 Dockerfile에서 다음을 사용하십시오.

FROM node:10
WORKDIR /app
# ...
COPY ./package.json ./package-lock.json ./
COPY somelocallib somelocallib
RUN npm ci
RUN (cd node_modules/zkp-utils/ && npm ci)
# ...

나는 (cd A && B)구조 에서 괄호 를 사용하여 조작을 dem 등원으로 만듭니다.


답변

나는 그것이 npm install ../somelocallib작동 한다는 것을 안다 .

그러나 질문에 표시되는 구문이 작동하는지 여부는 알 수 없습니다 package.json

불행히도 doc 은 URL을 종속성으로 만 언급하는 것 같습니다.

시도 file:///.../...tar.gz압축 지역 lib 디렉토리를 가리키는 … 그리고 작동하는지 알려주십시오.