여러 프로젝트가 node_modules 디렉토리를 공유하도록 하려면 어떻게 해야 합니까?
프로젝트를 할 때마다 노드 모듈의 모든 의존성을 다운로드해야 합니다.node_modules를 복사하지 않고 여러 프로젝트에서 central node_modules를 공유할 방법이 있습니까?
다음과 같이 나는 매번 많은 명령어를 실행해야 합니다.
npm install gulp-usemin
npm install gulp-wrap
npm install gulp-connect
npm install gulp-watch
npm install gulp-minify-css
npm install gulp-uglify
npm install gulp-concat
npm install gulp-less
npm install gulp-rename
npm install gulp-minify-html
프로젝트 간에 node_modules 디렉토리를 공유할 수 있습니다.
노드의 설명서에서:
require()로 전달된 모듈 식별자가 네이티브 모듈이 아니며 '/', '../' 또는 '.'로 시작하지 않는 경우 노드는 현재 모듈의 상위 디렉터리에서 시작하여 /node_modules를 추가하고 해당 위치에서 모듈을 로드하려고 시도합니다.
여기서 찾을 수 없는 경우 파일 시스템의 루트에 도달할 때까지 상위 디렉토리로 이동합니다.
예를 들어 '/home/ry/projects/foo.js'의 파일에서 require('bar.js')를 호출하는 경우 노드는 다음 위치를 다음 순서로 찾습니다.
/home/ry/projects/node_modules/bar.js/home/ry/node_modules/bar.js/home/node_modules/bar.js/node_modules/bar.js/node_modules/bar.js/bar.js
따라서 프로젝트 디렉토리에 node_modules 폴더를 넣고 원하는 모듈을 입력하면 됩니다.그냥 평범한 것처럼 그것들을 요구합니다.노드가 프로젝트 폴더에서 node_modules 디렉토리를 찾지 못하면 자동으로 상위 폴더를 확인합니다.따라서 디렉토리 구조를 다음과 같이 만듭니다.
-myProjects
--node_modules
--myproject1
---sub-project
--myproject2
이와 같이 서브 프로젝트의 종속성조차도 메인 node_modules 저장소에 의존할 수 있습니다.
이렇게 하면 패키지를 만들어야 한다는 단점이 있습니다.json 파일을 수동으로(누군가가 불평 같은 것으로 이것을 자동화하는 방법을 알지 못하는 한).패키지를 설치하고 --save arg를 추가할 때npm install명령어를 사용하면 자동으로 종속성 섹션이나 패키지에 추가됩니다.json, 그게 편리하네요.
npm 대신 pnpm을 시도합니다.
pnpm은 하드 링크와 심볼 링크를 사용하여 디스크에 한 번만 모듈의 한 버전을 저장합니다.
npm을 설치한 경우 다음 기능을 통해 단말기에 설치할 수 있습니다.
npm install -g pnpm
기존 설치(및 하위 디렉토리)를 업데이트하려면 다음을 사용합니다.
pnpm recursive install
또는 단축 명령을 사용합니다(중지).-r하나의 디렉토리만 대상으로 지정해야 하는 경우)
pnpm -r i
한 가지 유용한 참고 사항:일부 희귀 패키지에 해당하는 종속성이 모두 정의되어 있지 않은 경우가 있습니다.그들은 아파트에 의지할지도 모릅니다.node_modulesnpm 또는 실 설치의 파일 디렉토리 구조.종속성 누락 문제가 발생할 경우 다음 명령을 사용하여 모든 하위 종속성을 플랫 파일 구조로 끌어올립니다.
pnpm install --shamefully-hoist
사용하지 않는 것이 가장 좋습니다.--shamefully-hoistpnpm을 사용하는 목적에 어긋나기 때문에 flag를 사용해보세요.pnpm i your-missing-package먼저(pnpm FAQ 참조).
트릭을 찾았습니다. Windows나 Linux의 심볼릭 링크(심볼링크)를 보십시오. 단축키처럼 작동하지만 더욱 강력합니다.
단지 당신은 당신을 위해 A를 만들 필요가 있습니다.node_modules원하는 곳에 폴더를 저장할 수 있습니다.연결은 원래 node_modules 폴더의 바로 가기에 불과합니다.실제 node_modules가 생성되었을 프로젝트 폴더 내에 생성합니다(사용된 경우).npm install.
이를 달성하기 위해서는 최소한 하나가 필요합니다.node_modulesreal folder는 다른 프로젝트에서 Junction을 만듭니다.
Windows에서는 명령 프롬프트를 사용하거나 응용 프로그램을 사용할 수 있습니다.명령 프롬프트를 사용하면 좀 더 많은 제어가 가능하고 응용 프로그램을 사용하는 것이 더 쉽습니다. 저는 Link Shell Extension을 제안합니다.
주 디렉터리는 다음과 같이 표시되어야 합니다.
node_modules
Project 1
Project 2
Project 3
Project 4
파일을 열기만 하면 됩니다.Project 1/.angular-cli.json
스키마를 바꿉니다
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
로.
"$schema": "./../node_modules/@angular/cli/lib/config/schema.json"
그리고 창조하는 것을 잊지 마세요.node_modules프로젝트 디렉토리 내의 빈 폴더
npm v7.0.0의 워크스페이스 지원도 참조
RFC https://github.com/npm/rfcs/blob/latest/implemented/0026-workspaces.md
문서 https://docs.npmjs.com/cli/v7/using-npm/workspaces
몇몇 기사를 보면 Lerna가 하나의 디렉토리 안에서 여러 프로젝트를 관리하는 데 좋은 도구인 것 같습니다. (monorepo하며 여러 모든 폴더에 패키지 전체를 중복하지 않고 모듈 공유를 지원하며 여러 프로젝트에 설치하도록 명령합니다.
또한 pnpm은 단순하고 효율적인 툴로 이미 다른 프로젝트를 위해 설치된 모듈을 복제하지 않습니다.
단일 node_modules가 있으면 모든 응용 프로그램에 대한 모든 패키지가 포함되어야 한다고 가정합니다.따라서 당신의 앱들은 또한 대부분의 독특한 패키지를 공유할 것입니다.json 항목(이름만 바뀌어야 함)
내 생각은 아래와 같이 단일 루트와 다중 src 레벨을 가지는 것입니다.
root\package.json
root\node_modules
root\\..
root\app1\src\\..
root\app2\src\\..
당신이 직면할 수 있는 유일한 문제는 모든 앱에 대한 json(또는 tsconfig)의 백업과 당신이 작업을 하거나 당신의 시작 스크립트가 모든 앱을 서비스하도록 설정할 때 그것들을 복원하는 것일 것입니다.
언급URL : https://stackoverflow.com/questions/29786887/how-can-i-make-multiple-projects-share-node-modules-directory
'programing' 카테고리의 다른 글
| swift에서 textColor of UILabel 설정 방법 (0) | 2023.10.19 |
|---|---|
| 더블/플로트를 문자열로 변환 (0) | 2023.10.19 |
| PHP를 이용한 대용량 파일 스트리밍 (0) | 2023.10.19 |
| .map() 자바스크립트 ES6 지도? (0) | 2023.10.19 |
| C++ 표준 라이브러리가 OS 대신 컴파일러와 함께 번들로 제공되는 이유는 무엇입니까? (0) | 2023.10.19 |