programing

로컬 모듈을 npm 패키지 종속성으로 지정하는 방법

powerit 2023. 5. 13. 11:01
반응형

로컬 모듈을 npm 패키지 종속성으로 지정하는 방법

패키지에 지정된 타사 모듈(예: 'express')에 대한 일반적인 종속성 집합을 가진 응용 프로그램이 있습니다.json 파일 종속성입니다.예.

"express"     : "3.1.1"

나는 나만의 코드를 모듈식으로 구성하고 package.json에 의해 로컬(현재 내가 있는 파일 시스템에 대한 의미) 모듈 세트를 설치하고 싶습니다.다음을 실행하여 로컬 모듈을 설치할 수 있습니다.

npm install path/to/mymodule

하지만, 저는 패키지를 통해 이것을 어떻게 해야 하는지 모르겠습니다.json 종속 구조. --save 이명의옵단입것는다입니하력순히션은령▁putting를 넣는 입니다."mymodule": "0.0.0"파일 위치를 하지 않음json파일 경로 위치를 하지 않음).node_module.에서 "로컬로합니다.json, 실패합니다(중앙 레지스트리에서 "mymodule"을 찾고 로컬로 보이지 않기 때문입니다).

나는 그것이 그들에게 말할 수 있는 방법이라고 확신합니다."dependencies": {}파일 시스템 경로에서 설치하기를 원하지만 방법을 알 수 없습니다.

이 문제를 가진 사람이 또 있습니까?감사해요.

npm install 은(는) 이를 지원합니다.

npm install --save ../path/to/mymodule

이 작업을 수행하기 위해mymodule.package.json노드 생성 참조JS 모듈.

npm 2.0 기준으로 로컬 종속성은 기본적으로 지원됩니다.비슷한 질문에 대한 다닐로포피의 대답을 보세요.이 질문이 웹 검색 결과에서 매우 높은 순위를 차지하기 때문에 저는 그의 답변을 여기에 복사했습니다.

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

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

다음 경로도 유효합니다.

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

업데이트 동기화

디렉토리에 있는 패키지를 현재 프로젝트의 심볼 링크로 추가하기 때문에 로컬 패키지의 변경 내용은 자동으로 동기화됩니다.

참조: 패키지의 로컬 종속성.제이손

은 답은다과같습다니음다같▁like▁the니습인 것 같습니다.npm link: https://docs.npmjs.com/cli/link

나는 결국 깔끔한 방법을 찾지 못해서 라는 디렉토리를 만들었습니다.local_modules그리고 나서 이 bashscript를 패키지에 추가했습니다.스크립트의 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 linkcommand 하지 않고 폴더에 의 복사본을 하기 위한 ), 이 npm . command (node_modules라는 이름의 node_modules라는 이름의 ),

수정에는 두 가지 간단한 단계가 필요합니다.

첫 번째:

npm install lib-manager --save-dev

둘째, 이것을 당신의 것에 추가합니다.package.json:

{  
  "name": "yourModuleName",  
  // ...
  "scripts": {
    "postinstall": "./node_modules/.bin/local-link"
  }
}

자세한 내용은 https://www.npmjs.com/package/lib-manager 을 참조하십시오.누군가에게 도움이 되길 바랍니다.

패키지에 추가하면 됩니다.프로젝트의 json 파일

"package-name" : "path/to/package"

그리고 나서 뛰어요.npm i프로젝트에서

작업 중에는 단일 저장소에 있는 몇 가지 다른 프로젝트에서 사용되는 공통 라이브러리가 있습니다.원래는 공개된(개인) 버전(npm install --save rp-utils)을 사용했지만 개발 과정에서 불필요한 버전 업데이트가 많이 발생했습니다.라이브러리는 응용프로그램에 대한 자매 디렉토리에 있으며 버전 대신 상대 경로를 사용할 수 있습니다."rp-utils" 대신: 패키지의 "^1.3.34".json 그것은 지금:

{ 
  "dependencies": { ...
    "rp-utils": "../rp-utils",
   ...

rp-sys 디렉터리에 게시 가능한 npm 패키지가 포함되어 있습니다.

다음은 도움이 될 것입니다(라이브러리와 앱이 동일한 상위 폴더를 공유한다고 가정).

라이브러리에서:

npm pack // this will pack the library in a .tgz file

라이브러리가 필요한 앱에서

npm i ../mylibrary/../library-package-X.X.tgz

이렇게 하면 앱에서 다음과 같은 변경 사항이 발생합니다.

package.json이제 가질 것입니다.

 "@mylibrary": "file:../mylibrary/library-package-X.X.tgz",

install-local 사용

로컬 종속성에서 충돌하는 대응 설치에 문제가 있었습니다.사용하여 오류를 해결했습니다.install-localnpm 패키지이 패키지는 심볼 링크를 생성하지 않아 문제가 해결되었습니다.

단계:

  1. 달려.npm i -g install-local
  2. 달려.npx install-local --save <local-path>로컬 종속성을 설치할 대상 리포지토리 내부

추가 읽기: https://www.npmjs.com/package/install-local

로컬 패키지를 설치할 때 받은 오류입니다.npm install --save <local-directory>:

오류: 잘못된 후크 호출입니다.후크는 함수 구성 요소의 본문 내부에서만 호출할 수 있습니다.이 문제는 다음 이유 중 하나로 인해 발생할 수 있습니다.

  1. React 및 렌더러 버전이 일치하지 않을 수 있습니다(예: React DOM).
  2. 훅스의 법칙을 어길 수도 있습니다.
  3. 동일한 앱에 둘 이상의 React 복사본이 있을 수 있습니다.

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에 모듈을 저장하고 상위 패키지에 알릴 수도 있습니다.git의 종속성을 설치하는 json: https://npmjs.org/doc/json.html#Git-URLs-as-Dependencies

언급URL : https://stackoverflow.com/questions/15806241/how-to-specify-local-modules-as-npm-package-dependencies

반응형