답변:
로부터 NPM-링크 문서 :
로컬 모듈 디렉토리에서 :
$ cd ./package-dir
$ npm link
프로젝트 디렉토리에서 모듈을 사용하십시오.
$ cd ./project-dir
$ npm link package-name
또는 한 번에 상대 경로를 사용하십시오.
$ cd ./project-dir
$ npm link ../package-dir
이것은 후드에서 위의 두 명령을 사용하는 것과 같습니다.
npm link
외부 종속성의 두 번째 인스턴스가 작성됩니다. 따라서 패키지 A에 B와 C가 필요한 경우 B가 C가 필요합니다. B를 연결하면 응용 프로그램 A에 두 개의 C 인스턴스가있게됩니다.
<folder>
인수 하나만 제공하면 npm install
인수는 패키지 이름 대신 로컬 폴더를 가리켜 야합니다.
npm install /path
rm -rf node_modules
전에 npm install
당신이 대답의 스크립트를 실행 한 후.
같은 사람이 묻고 대답했기 때문에 npm 링크를 추가하겠습니다. 대안으로 를 .
문서에서 :
이것은 자신의 물건을 설치하는 데 편리하므로 지속적으로 다시 빌드하지 않고도 작업하고 반복적으로 테스트 할 수 있습니다.
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[편집] NPM 2.0부터 package.json에서 로컬 종속성을 선언 할 수 있습니다.
"dependencies": {
"bar": "file:../foo/bar"
}
npm link
. 폴더에 대해 한 번 실행 하고 (글로벌 심볼릭 링크를 만들려면) npm link package-name
프로젝트 폴더 내에서 실행 해야합니다 (프로젝트에서 글로벌 심볼릭 링크를 사용하려면). 아래 답변이 정답입니다.
file:
접근법 사용)은 내 앱과 로컬 모듈이 종속성을 공유하도록 허용했습니다. 내 테스트 npm link
에서 종속성이 중복되어 종속성을 싱글 톤으로 사용해야하는 경우 문제가 발생합니다.
npm pack
+ package.json
이것이 나를 위해 일한 것입니다.
module project
을 실행하십시오 npm pack
.<package-name>-<version>.tar.gz
파일 이 생성 됩니다.
consumer project
이상적으로는 모든 파일을 루트 의 tmp
폴더에 넣을 수 있습니다 consumer-project
.
package.json
:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Install
패키지 :npm install
또는 npm i
또는yarn
consumer-project's node_modules
폴더 에 있어야 합니다.행운을 빕니다...
로컬 모듈에 프로젝트 범위에만 설치하려는 피어 종속성이있는 경우 이러한 접근 방식 ( npm link
또는 package.json
파일 종속성)이 작동 하지 않습니다 .
예를 들면 다음과 같습니다.
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
이 시나리오에서는 NPM 세트 업 myproject
의 node_modules/
다음과 같이 :
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
노드가로드 mymodule
되고 수행 될 때 노드 require('foo')
는 mymodule
심볼릭 링크를 확인한 다음 찾을 수없는 /local/mymodule/node_modules/
(및 해당 상위 항목) 만 찾습니다 foo
. 대신 노드를 살펴보고 /local/myproject/node_modules/
싶습니다. 프로젝트가 실행되는 위치 foo
와 설치되어 있기 때문입니다 .
그래서,에 우리는 두 노드를 알 수있는 방법이 필요 없는 이 심볼릭 링크를 해결할를 찾을 때 foo
, 또는 우리가 설치하는 NPM을 알 수있는 방법이 필요 복사본 의 mymodule
파일 종속성 구문에서 사용되는 경우를 package.json
. 불행히도, 할 수있는 방법을 찾지 못했습니다 :(
NODE_PATH
를 가리 키도록 설정하는 해결 방법을 찾았습니다 . 따라서 위 경우에,이 것 : 즉, 수 있습니다 찾을 . node_modules/
foo
NODE_PATH=/dev/myproject/node_modules/
mymodule
foo
이전 사람들이 대답했듯이 npm --save ../location-of-your-packages-root-directory
. 는 ../location-of-your-packages-root-directory
그러나 그것이 작동하기 위해서는 두 가지가 있어야합니다.
1) package.json
해당 디렉토리에서
2) main
이 재산 package.json
설정해야 작업 IG "main": "src/index.js",
경우에 대한 항목 파일 ../location-of-your-packages-root-directory
IS../location-of-your-packages-root-directory/src/index.js