Programing

여러 프로젝트가 node_modules 디렉토리를 공유하도록하려면 어떻게해야합니까?

lottogame 2020. 11. 12. 07:41
반응형

여러 프로젝트가 node_modules 디렉토리를 공유하도록하려면 어떻게해야합니까?


프로젝트를 만들 때마다 노드 모듈의 모든 종속성을 다운로드해야합니다. node_modules를 복사하지 않고 여러 프로젝트에서 중앙 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 폴더를 넣고 원하는 모듈을 넣으십시오. 평상시처럼 그들을 요구하십시오. 노드가 프로젝트 폴더에서 node_modules 디렉토리를 찾지 못하면 자동으로 상위 폴더를 확인합니다. 따라서 다음과 같이 디렉토리 구조를 만드십시오.

-myProjects --node_modules --myproject1 ---sub-project --myproject2

따라서 이와 같이 하위 프로젝트의 종속성도 기본 node_modules 저장소에 그릴 수 있습니다.

이 방법의 한 가지 단점은 package.json 파일을 수동으로 빌드해야한다는 것입니다 (누군가가 grunt 등으로이를 자동화하는 방법을 알지 않는 한). 패키지를 설치하고 npm install명령에 --save arg를 추가하면 종속성 섹션 또는 package.json에 자동으로 추가되므로 편리합니다.


트릭을 찾았습니다 . Windows 또는 Linux 에서 Symbolic Links (symlinks)를 살펴보면 바로 가기처럼 작동하지만 더 강력합니다.

간단하게 당신이 할 필요가 Junction당신을 위해 node_modules당신이 원하는 폴더 어디서나. 접합은 원래 node_modules 폴더에 대한 지름길 일뿐입니다. 실제 node_modules가 사용 된 경우 생성되었을 프로젝트 폴더 내에 생성합니다 npm install.

이를 위해서는 적어도 하나의 node_modules실제 폴더 가 필요하며 다른 프로젝트에서 접합을 만드십시오.

Windows에서는 명령 프롬프트를 사용하거나 응용 프로그램을 사용할 수 있습니다. 명령 프롬프트를 사용하면 좀 더 제어 할 수 있으며 응용 프로그램을 사용하는 것이 더 쉽습니다 . Link Shell Extension을 제안 합니다.


npm 대신 pnpm사용해보십시오 .

pnpm은 하드 링크와 심볼릭 링크를 사용하여 모듈의 한 버전을 디스크에 한 번만 저장합니다.

다음으로 설치 :

npm install -g pnpm

기존 설치 (및 하위 디렉토리)를 업데이트하려면 다음을 사용하십시오.

pnpm recursive install

기본 디렉토리는 다음과 같아야합니다.

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프로젝트 디렉토리 안에 빈 폴더 를 만드는 것을 잊지 마십시오


By looking at some articles it seems that Lerna is a good tool for managing multiple projects inside a single directory (monorepo). It supports modules sharing without duplicating the entire packages in every folder and commands to install them in multiple projects.


Let's assume that having a single node_modules it should contain all the packages for all applications. thus your apps will also share most of the unique package.json entries (just the name should change)

my idea would be to have a single root and multiple src level as below

root\package.json
root\node_modules
root\\..
root\app1\src\\..
root\app2\src\\..

the only issue you might face would be having a backup of json (or tsconfig) for any app and restore them when you work on it or setup your startup scripts to serve any app

참고URL : https://stackoverflow.com/questions/29786887/how-can-i-make-multiple-projects-share-node-modules-directory

반응형