그래서, 이런 일을하고 싶지 npm install
도 설치 package.json
의 ../somelocallib
종속성 또는 더 중요한 것은.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
그래서, 이런 일을하고 싶지 npm install
도 설치 package.json
의 ../somelocallib
종속성 또는 더 중요한 것은.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
답변:
이 기능은 npm 버전 2.0.0에서 구현 되었습니다. 예:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
다음 경로 중 하나도 유효합니다.
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
로컬 패키지는 접두사 ( ) 로 복사 됩니다 ../node-modules
평소 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)
npm dedup
하여이 문제를 해결할 수 있습니다 . npmjs.org/doc/cli/npm-dedupe.html
npm install <folder>
description에 따르면 현재 프로젝트에서 심볼릭 링크로 디렉토리에 패키지를 설치하십시오.
이제 로컬 노드 모듈 설치 경로를 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 설치가 필요한 테스트를 작성하는 데 유용하지만 공용 레지스트리에 패키지를 공개 할 때는 사용하지 않아야합니다.
"bar": "file:///home/user/src/foo/bar"
node:onbuild
이미지는 현재 디렉토리 만 복사하므로 노드 응용 프로그램을 도킹하려고 할 때 및 / 또는 노드 응용 프로그램을 도킹하려고하면 모든 종류의 문제가 발생합니다 ../foo
.
npm install
있습니까? 따라서 로컬에서 git 저장소의 로컬 사본을 갖 거나 LAN의 다른 git 저장소를 가질 수 있습니까? 위의 git + ssh에서 npm을 설치하려고하면 node_modules 디렉토리를보고 git + ssh를 거치지 않고 최상위 패키지를 설치하는 것처럼 보입니다.
이것은 나를 위해 작동합니다.
package.json 파일에 다음을 배치하십시오.
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
.gitignore
모듈 폴더에서 제거 되어 생성 .npmignore
되었으며 처음 실행할 때 777을 제외한 모든 폴더에 777을 재귀 적으로 적용했습니다 node_modules
. 그러나 예, 의존성을 설치했습니다. npm 버전 1.4.14 사용
"dependencies": { "my-own-module": "file:../my-own-module" }
?
npm link
수행 할 필요가 없다는 것 npm install
입니다.
모듈을 버전 제어로 확인하고 npm 링크를 기억하는 개발자에게 의존하지 않기 때문에 이것을 더 자동화하려면 이것을 package.json "scripts"섹션에 추가하면됩니다.
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
이것은 해키를 넘어선 느낌이지만 "작동"하는 것 같습니다. 이 npm 문제에서 팁을 얻었습니다 : https://github.com/npm/npm/issues/1558#issuecomment-12444454
postinstall
및 postupdate
대신 preinstall
하고 preupdate
?
다음은 로컬 종속성을 추가하는 방법입니다.
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.lock
와somelocallib/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 디렉토리를 가리키는 ... 그리고 작동하는지 알려주십시오.
이것은 나를 위해 일했습니다 : 먼저 npm 디렉토리에 올바른 사용자가 있는지 확인하십시오
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
그런 다음 package.json에 디렉토리를 연결하십시오.
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
npm install
.
실제로 npm 2.0부터는 현재 로컬 경로가 지원됩니다 ( 여기 참조 ).
호기심 ..... 적어도 Windows에서 (내 npm은 3.something) 내가해야 할 일 :
"dependencies": {
"body-parser": "^1.17.1",
"module1": "../module1",
"module2": "../module2",
내가했을 때 npm install ../module1 --save
그것은 문서에 따라 상대 경로가 아닌 절대 경로를 초래했습니다.
나는 조금 더 엉망 ../xxx
으로 충분하다고 판단했다 .
특히 로컬 노드 모듈이 d : \ build \ module1, d : \ build \ module2 및 d : \ build \ nodeApp에있는 내 노드 프로젝트 (응용 프로그램)라고 체크 아웃했습니다.
'설치'하기 위해 :
d:\build\module1> rmdir "./node_modules" /q /s && npm install
d:\build\module2> rmdir "./node_modules" /q /s && npm install
d:\build\nodeApp> rmdir "./node_modules" /q /s && npm install
module1의 package.json은 "module2"의 종속성을 갖습니다. "../module2"; module2에는 로컬 종속성이 없습니다. nodeApp에는 "module1": "../module1"및 "module2": "../module2"종속성이 있습니다.
3 개의 폴더 (module1, module2 및 nodeApp)가 모두 동일한 수준에 있기 때문에 이것이 나에게만 효과가 있는지 확실하지 않습니다 ....
완벽한 지역 개발을위한 두 단계 :