패키지의 로컬 종속성입니다.제이손
거 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠnpm install 은(는) 을(를).package.json../somelocallib또는 더 중요한 것은 의존성입니다.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
npm >= 2.0.0
이 기능은 npm 버전 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 ls:
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
npm < 2.0.0
다놓을 .somelocallib당신의 에대의서에 으로서.package.json정상:
"dependencies": {
"somelocallib": "0.0.x"
}
다음 그럼실을 실행합니다.npm link ../somelocallib그리고 npm은 당신이 작업 중인 버전을 심볼 링크로 설치할 것입니다.
참조: 링크(1)
제로 노모 경를 있지다에서 설치 할 수 있습니다.package.json문서에서:
로컬 경로
버전 2.0.0부터 패키지가 포함된 로컬 디렉터리의 경로를 제공할 수 있습니다.로컬 경로는 다음을 사용하여 저장할 수 있습니다.
npm install -S또는npm install --save다음 양식 중 하나를 사용합니다.../foo/bar ~/foo/bar ./foo/bar /foo/bar▁to▁and다▁in▁be것에 추가됩니다.
package.json예:{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }이 기능은 로컬 오프라인 개발 및 외부 서버를 타격하지 않을 곳에 npm을 설치해야 하는 테스트를 생성하는 데 유용하지만 패키지를 공용 레지스트리에 게시할 때 사용하면 안 됩니다.
이것은 나에게 효과가 있습니다.
다음을 패키지에 넣습니다.json 파일
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
로컬 종속성을 추가하는 방법은 다음과 같습니다.
npm install file:src/assets/js/FILE_NAME
패키지에 추가합니다.NPM의 json:
npm install --save file:src/assets/js/FILE_NAME
패키지에 직접 추가합니다.이런 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"
....
모듈을 버전 제어에 체크인하고 개발자가 npm 링크를 기억하지 않도록 하기 위해 이를 더욱 자동화하려면 패키지에 이를 추가할 수 있습니다.json "dll" 섹션:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
이것은 진부한 것 이상으로 느껴지지만, "효과가 있는" 것처럼 보입니다.이번 npm 호에서 팁을 받았습니다. https://github.com/npm/npm/issues/1558#issuecomment-12444454
마스터 프로젝트
여기 소포가 있습니다.마스터 프로젝트에 사용할 json:
"dependencies": {
"express": "*",
"somelocallib": "file:./somelocallib"
}
거기../somelocallib마스터 프로젝트 package.json에 대한 라이브러리 폴더의 참조입니다.
참조: https://docs.npmjs.com/cli/v7/configuring-npm/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소스 코드 관리자로 이동합니다.
그런 다음 Docker 파일에서 다음을 사용합니다.
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)작업을 동일하게 만들기 위한 구성입니다.
완벽한 로컬 개발을 위한 두 단계:
{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
-
cd ~/projects/node-redis # go into the package directory npm link # creates global link cd ~/projects/node-bloggy # go into some other package directory. npm link redis # link-install the package
여기 2020년에 Windows 10에서 작업할 때, 저는 사용하려고 했습니다.
"dependencies": {
"some-local-lib": "file:../../folderY/some-local-lib"
...
}
나서 를 하는 거.npm설치하다.그 결과 폴더에 대한 바로 가기가 생성됩니다.node-modules이거 안 돼요.Windows에서 지원하는 하드 링크가 필요하지만 하드 심볼릭 링크를 만들려면 창에서 추가 작업을 수행해야 합니다.
하드 링크를 원하지 않기 때문에 대신 URL을 사용해 보았습니다.
"dependencies": {
"some-local-lib": "file:///D:\\folderX\\folderY\\some-local-lib.tar"
....
}
그리고 이것은 잘 작동합니다.
tar폴더에 함는 노드 모든 수 . tar("build/dist"라는 의 tar"라는 뜻의 tar를 사용합니다.
분명히 tar 부분은 조금 귀찮지만, 'some-local-lib'은 라이브러리(어차피 구축해야 함)이기 때문에 하드 링크를 만들거나 로컬 npm을 설치하는 것보다 이 솔루션을 선호합니다.
실을 사용하면 다음과 같이 할 수 있습니다.
yarn add file:../somelocallib
나는 그것을 알고 있습니다.npm install ../somelocallib작동하다.
하지만, 당신이 질문에서 보여준 구문이 작동할지는 모르겠습니다.package.json...
안타깝게도 doc은 URL을 종속성으로만 언급하는 것 같습니다.
ㅠㅠfile:///.../...tar.gz효과가.효과가 있는지 알려주세요.
궁금한 점은... 적어도 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의 노드 프로젝트(애플리케이션)를 확인합니다.
'설치'하기, I:
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
모듈 1의 패키지json의 종속성은 "module2": "..../module2"이고, module2는 로컬 종속성이 없으며, nodeApp의 종속성은 "module1": "..../module1" 및 "module2"입니다.
세 개의 폴더(module1, module2 및 nodeApp)가 모두 동일한 수준에 있기 때문에 이것이 나에게만 효과가 있는지 확신할 수 없습니다...
이것은 저에게 효과가 있었습니다. 먼저, npm 디렉토리에 올바른 사용자가 있는지 확인하십시오.
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
그러면 당신의 소포 안에.json은 디렉토리를 합니다.
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
저는 TypeScript로 작성된 로컬 종속성 집합을 사용하기를 원했지만, 여기에 나와 있는 답변 중 어떤 것도 저에게 맞지 않았습니다. npm install단순히 의존관계 구축을 거부할 것입니다.
을 사용해야 했습니다.tsconfig.json패키지를 종속성으로 표시하지 않고 프로젝트에 추가합니다.제 사용 사례는 일부 종속성이 서로 종속되어 있기 때문에 더욱 복잡합니다. 모든 종속성이 로컬 폴더에서 제공되기를 원했습니다.
제 솔루션은 다음과 같습니다.
// tsconfig.json
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@tiptap/*": [
"tiptap/packages/*/src"
]
}
}
}
에서, 폴더인 위의예에로프하같다다습니음과이름이폴더의위로컬트젝는서▁named▁a▁have▁in▁projectfolder▁sub▁local▁i다니같을 가지고 있습니다.tiptap/그리고 많은 패키지들이 있습니다.tiptap/packages/*."paths"은 모든 옵은모다씁니다시를 다시 .@tiptap/foo의 ./tiptap/packages/foo/src과 내파과모서에에 있는 에 걸쳐.tiptap/.
그것은 좋은 해결책은 아니지만, 저에게 효과가 있었던 유일한 방법입니다.
작업 공간 사용
을 file:../path/to/your-library당신이 아니면 해야 한다는 것입니다.npm install 는사용을 사용합니다.npm link패키지를 가져오는 패키지에서 변경 사항을 적용하려면 다음과 같이 하십시오.
pnpm을 사용하는 경우: 더 나은 솔루션은 프로토콜을 사용하는 것입니다.workspace:../path/to/your-library디렉터리를 복사하는 대신 node_dll에 심볼릭으로 연결하므로 소스의 모든 변경 사항이 즉시 적용됩니다.
예:
...
"dependencies": {
...
"my-package": "workspace:../../dist"
},
참고:이공간에서 이므로, 는 참고: 션은솔작사서위기용것생다할있을 해야 할 .pnpm-workspace.yaml(빈 파일이라도) 프로젝트 루트에 있습니다.
실제로 npm 2.0부터는 로컬 경로를 지원합니다(여기 참조).
로컬 패키지를 관리하는 데 도움이 되는 훌륭한 yalc가 있습니다.나중에 배포하는 local lib에 도움이 되었습니다.프로젝트를 .yalc 디렉터리(/node_modules 유무에 관계없이)로 패킹하기만 하면 됩니다.그러니 그냥 하라:
npm install -g yalc
in directory lib/$ yalc publish
프로젝트:
project/$ yalc add lib
project/$ npm install
바로 그겁니다.
업데이트할 항목:
lib/$ yalc push //this will updated all projects that use your "lib"
project/$ npm install
Docker를 사용하여 포장 및 배포
tar -czvf <compresedFile> <directories and files...>
tar -czvf app.tar .yalc/ build/ src/ package.json package-lock.json
참고: .yalc 디렉터리를 추가해야 합니다.
도커에서:
FROM node:lts-alpine3.9
ADD app.tar /app
WORKDIR /app
RUN npm install
CMD [ "node", "src/index.js" ]
2021년에는 다음과 같이 사용해야 합니다.
npm i my-pkg@file:./path-to-my-pkg.js
# To remove it later
npm un my-pkg
사용하다.js에 대한 경로가 "" "로 구성된 인 경우 package.json.
사용.
const myPkg = require('my-pkg')
그것은 매력적으로 작용합니다!
실 사용자를 위한 완전한 현지 개발 가이드:
먼저 기본 프로젝트에 종속성을 추가합니다.
cd main-project
yarn add file:../path/to/your-library
다음으로 소스를 변경할 때마다 이 종속성을 다시 작성하지 않으려면 다음을 수행합니다.
cd your-library
yarn link
라이브러리에 대한 링크가 등록됩니다.다음으로, 기본 프로젝트에서 방금 만든 링크를 사용합니다.
cd main-project
yarn link your-library
라이브러리에서 코드를 변경할 때마다 다시 빌드할 필요가 없으며 자동으로 기본 프로젝트에 포함됩니다.yarn 링크는 node_symplink 폴더에 심볼 링크를 생성하여 작동합니다. 자세한 내용은 여기를 참조하십시오. https://classic.yarnpkg.com/lang/en/docs/cli/link/
모듈 별칭 사용
모듈 별칭 패키지를 설치합니다.
npm i --save module-alias패키지에 경로를 추가합니다.이런 json:
{ "_moduleAliases": { "@lib": "app/lib", "@models": "app/models" } }require()가 호출하기 전에 진입점 파일에서 다음을 수행합니다.
require('module-alias/register')이제 다음과 같은 파일이 필요합니다.
const Article = require('@models/article');
언급URL : https://stackoverflow.com/questions/14381898/local-dependency-in-package-json
'programing' 카테고리의 다른 글
| Swift에서 NSDocument Directory를 찾는 방법은 무엇입니까? (0) | 2023.06.03 |
|---|---|
| Android 응용 프로그램에서 인터넷에 액세스하려면 어떤 권한이 필요합니까? (0) | 2023.06.03 |
| 이클립스의 SVN 비난 (0) | 2023.06.03 |
| 백그라운드에서 CSS 이미지 확장 및 축소 - CSS만 사용 (0) | 2023.06.03 |
| 모듈에 중첩된 클래스 및 클래스를 사용해야 하는 경우 (0) | 2023.06.03 |