웹 프론트엔드 JS 튜토리얼 npm의 모듈 설치 메커니즘에 대한 자세한 소개

npm의 모듈 설치 메커니즘에 대한 자세한 소개

Jun 26, 2017 am 10:54 AM
설치하다 기구 기준 치수 상해

종속성 트리 표면의 논리적 구조와 종속성 트리의 실제 물리적 구조
종속성 트리 표면의 논리적 구조와 종속성 트리의 실제 물리적 구조는 다음과 같습니다. 반드시 같지는 않습니다!
두 가지 명령을 먼저 언급해야 합니다: tree -d(linux) 및 npm ls(npm)
npm 프로젝트에서:
tree -d 명령트리 다이어그램 사용 물리적 구조 나열 프로젝트 아래의 모든 종속성
npm ls 명령공식 문서의 트리 다이어그램
에서 프로젝트 아래의 모든 종속성의 논리적 구조를 나열합니다. 예:
프로젝트 example1에는 두 개의 종속 모듈이 있습니다: mod-a 모듈과 mod-c 모듈
mod-a 모듈에는 종속 모듈 mod-b@1.0.0 모듈이 있습니다.
mod -c 모듈에는 종속 모듈 mod가 있습니다. -b@2.0.0 module
tree -d 및 npm ls 실행 결과는 다음과 같습니다. (npm 버전은 npm2가 아닌 npm3입니다.)
먼저 아래 빨간색 상자의 결과를 살펴보세요. 이는 "우리가 이해한 것과 가장 일치하는" 종속성 트리입니다. 먼저, 첫 번째 수준 종속성은 프로젝트(mod-a 모듈 및 mod-b 모듈) 아래에 형성됩니다. 그런 다음 이 두 모듈을 상위 모듈로 사용하고 보조 종속성 모듈 mod-b@1.0.0 및 mod-b@2.0.0
을 추가하세요! 물리적으로 형성된 종속성 트리는 위의 빨간색 상자와 다릅니다. mod-a, mod-c 및 mod-b는 실제로 동일한 수준의 종속성입니다.
왜 이런 종속성 트리가 형성되나요? 아래에 설명하겠습니다
【참고】: 다음 다이어그램은 모두 종속성 트리의 물리적 구조이지 논리적 구조가 아닙니다
npm 모듈 설치 메커니즘 정보 약간의 추측 en 모듈을 설치할 때는 두 가지 가능한 방법이 있습니다. 우리는 완전 수평 설치 방식을 채택하고 있습니까? ——못해
위와 유사한 예를 들어보겠습니다. 프로젝트 APP에는 두 개의 종속 모듈 A와 B가 있습니다. A에는 종속 모듈 Cv1.0이 있고 B에도 종속 모듈 Cv2.0이 있습니다. 분명히 동일한 node_modules 아래에 동시에 존재할 수는 없습니다. 설치 시 npm 메커니즘으로 인해 종속 모듈의 한 버전만 설치할 수 있으며, 그 중 하나가 다른 버전을 덮어씁니다. 그러나 하나의 C 의존 모듈 버전을 설치하면 모듈 A와 모듈 B가 위의 이유로 npm2는 중첩 설치 방법을 선택했습니다. -

npm2
npm2의 모듈 설치 메커니즘은 중첩 설치 방법을 사용하여 다중 레벨 종속 모듈을 설치합니다.
장점과 단점
장점: 단일 버전 사용 시 발생하는 비호환 문제 해결,
다중 버전 호환성 확보
단점: 다음과 같이 동일한 모듈의
대규모 중복성
이 발생할 수 있습니다.
위의 예를 예로 들면 다음과 같은 상황도 타당합니다.
느낌으로 압니다. 이는 좋은 현상이 아닙니다. 그렇다면 종속성 간의 다중 버전 호환성을 달성하면서 이 모듈 중복성을 어떻게 줄일 수 있습니까? 그래서 npm3은 몇 가지 개선을 했습니다
npm3의 모듈 설치 메커니즘:
npm3과 npm2의 차이점은 주로 보조 모듈 설치에 반영됩니다.
npm3 will
"Try to"
모든 모듈을 논리적, 물리적으로 프로젝트의 첫 번째 레벨에 넣으세요. 구체적으로 다음 세 가지 상황으로 요약할 수 있습니다.
1. 특정 2차 레벨 모듈, 첫 번째 레벨 에 아직 동일한 이름의 모듈
이 없는 것으로 확인되면 2차 레벨 모듈을 첫 번째 레벨
에 배치합니다. 2. 특정 두 번째 수준 모듈을 설치할 때 첫 번째 수준 의 이름과 버전이 동일한 모듈을 발견하면 해당 모듈을 직접 재사용합니다
3. 특정 두 번째 수준 모듈이 발견되었을 때 첫 번째
수준 의 이름은 같지만 모듈 의 다른 버전이 발견된 경우 는 자체 상위 모듈 에만 중첩될 수 있습니다.
처음에는 조금 이해하기 어려울 수 있으니 사진을 보면서 이야기 나눠보세요!
1부터 시작하겠습니다. 두 번째 수준 모듈을 설치할 때 첫 번째 수준에 같은 이름의 모듈이 없으면 첫 번째 수준에 두 번째 수준 모듈을 놓습니다. level
먼저 위의 예를 단순화해 보겠습니다. 이제 프로젝트 APP 아래에는 단 하나의 첫 번째 수준 종속성 모듈 A가 있고 그 아래에는 두 번째 수준 종속성 모듈 C가 있지만 npm을 설치하면 종속성이

프로젝트 하위에 설치됩니다.

npm3의 2단계 모듈(C v1.0), 프로젝트의 1단계 디렉터리(node_modules)에 같은 이름의 모듈이 없는 경우, 첫 번째 레벨 디렉토리에 설치되므로 상위 모듈 A와 동일한 레벨을 따릅니다. 이 글의 시작 부분에 있는 종속성 트리의 논리적 구조와 물리적 구조가 다른 이유는 바로 이것입니다.
즉,
npm2에서 종속성 트리의 논리적 구조는 물리적 구조와 동일합니다
npm3에서 논리적 구조는 의 물리적 구조와 다를 수 있습니다
2에 대해 이야기합시다. 두 번째 수준 모듈을 설치할 때 동일한 이름과 동일한 버전의 모듈을 찾은 경우 첫 번째 수준에서는 해당 모듈을 직접 재사용할 수 있습니다.
1을 기반으로 1의 예를 이전의 더 복잡한 시나리오로 복원합니다. 프로젝트 아래에 두 개의 종속 모듈 A와 B가 있습니다. APP에는 또 다른 종속 모듈 Cv1.0이 있고 B에는 종속 모듈 C v1.0도 있습니다(두 C 모듈 버전은 동일함)

두 개의 C 패키지 동일하므로 모듈 중복성이 발생합니다
npm3에서는 모듈 A 아래의 C 모듈이 첫 번째 수준에 설치되므로 모듈 B를 동일한 수준에서 재사용하고 C 모듈을 동일한 이름으로 사용할 수 있습니다. 버전
npm3이 사용됩니다. 이 접근 방식은 npm2
[1, 2에서 3으로 전환] 이 섹션의 시작 부분에서 말했습니다. 논리적으로 특정 레벨의 "모든" 모듈은 프로젝트의 첫 번째 레벨에 배치됩니다. 1과 2를 읽으신 후에 어느 정도 이해하셔야 할 것 같습니다. "시도"의 의미 최선을 다해", 하지만 저는 "최선을 다하세요"라고 말했습니다. 이는 또한 npm3이 첫 번째 수준에 두 번째 수준 종속성을 넣을 수 없다는 의미이기도 합니다. 이에 대해서는 3:
을 참조하세요. 마지막으로 3: 보조 모듈을 설치할 때 첫 번째 수준에서 이름은 같지만 버전이 다른 모듈을 찾으면 아래에만 중첩될 수 있습니다. 자체 상위 모듈
2에서 A와 B가 의존하는 두 개의 C 모듈은 동일하지만, 그런데 두 C 모듈의 버전이 다르다면 어떨까요? 프로젝트 npm 설치 상황은 다음과 같습니다.

npm3에서는 B와 A에 필요한 종속 모듈이 다르기 때문에(B에 대한 요구 사항은 C v1.0이고, A에 대한 요구 사항은 C v2.0입니다. 따라서 B는 2
에서와 같이 A에서 C v1.0 모듈을 재사용할 수 없습니다. , 이 예와 저 예는 거의 똑같습니다)
이를 보면 npm2 및 npm3의 모듈 작동 메커니즘과 npm2에 대한 npm3의 최적화에 대한 일반적인 이해가 있습니다. 하지만 다음 질문에 대해 생각해 보십시오. npm3은 npm2의 모듈 중복성 결함을 극도로 최적화했습니까? ———답은 No입니다. 아래를 살펴보세요.
실제로: npm3에는 여전히 모듈 중복성이 있을 수 있습니다. 첫 번째 수준 디렉터리에 이미 v1이 있으므로 v1이 있습니다. .0 C 모듈, 따라서 모든 v2.0은 보조 종속성 모듈 으로만 설치할 수 있으므로 다음 상황을 볼 수 있습니다

그리고 다음과 같은 특별한 경우에 표시됩니다. 위 사진을 보면 npm3과 npm2 사이에 별 차이가 없는 것 같네요
【전환】그럼 해결 방법은 없을까요? 물론 모듈 A 아래의 C v1.0 모듈이 C v2.0으로 업데이트되면 npm dedupe를 통해 C v2.0의 모든 두 번째 수준 종속 모듈을 첫 번째 수준으로 "리디렉션"할 수 있습니다.
디렉토리의 v1.0
npm dedupe를 사용하여 중복 모듈 제거:
npm dedupe는 무엇을 했나요? 제거할 수 있는 중복된 두 번째 수준 종속 모듈을 동일한 이름/버전을 가진 첫 번째 수준 모듈로 "리디렉션"할 수 있습니다

References npm 공식 문서 섹션 2 (npm 작동 방식):
[따뜻한 알림]: 무거운 책과 지루한 문서에 비교할 수 있는 인기 블로그는 없습니다
【끝】
기억하다 매일 10개의 작은 단어, 축적에 중점을 둡니다!
메모리: 메모리 종속성: 종속성 제약 조건: 제약 조건 배포: 배포 매개 변수: 매개 변수 범위: 범위
ecosystems: 생태계 접두사: 접두사 이전: 우선 순위/해지 전: revoke
 

위 내용은 npm의 모듈 설치 메커니즘에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Win11 시스템에서 중국어 언어 팩을 설치할 수 없는 문제에 대한 해결 방법 Win11 시스템에서 중국어 언어 팩을 설치할 수 없는 문제에 대한 해결 방법 Mar 09, 2024 am 09:48 AM

Win11 시스템에서 중국어 언어 팩을 설치할 수 없는 문제 해결 Windows 11 시스템이 출시되면서 많은 사용자들이 새로운 기능과 인터페이스를 경험하기 위해 운영 체제를 업그레이드하기 시작했습니다. 그러나 일부 사용자는 업그레이드 후 중국어 언어 팩을 설치할 수 없어 경험에 문제가 있다는 사실을 발견했습니다. 이 기사에서는 Win11 시스템이 중국어 언어 팩을 설치할 수 없는 이유에 대해 논의하고 사용자가 이 문제를 해결하는 데 도움이 되는 몇 가지 솔루션을 제공합니다. 원인 분석 먼저 Win11 시스템의 무능력을 분석해 보겠습니다.

VirtualBox에 게스트 추가 기능을 설치할 수 없습니다 VirtualBox에 게스트 추가 기능을 설치할 수 없습니다 Mar 10, 2024 am 09:34 AM

OracleVirtualBox의 가상 머신에 게스트 추가 기능을 설치하지 못할 수도 있습니다. Devices>InstallGuestAdditionsCDImage를 클릭하면 아래와 같이 오류가 발생합니다. VirtualBox - 오류: 가상 디스크를 삽입할 수 없습니다. C: 우분투 시스템에 FilesOracleVirtualBoxVBoxGuestAdditions.iso 프로그래밍 이 게시물에서는 어떤 일이 발생하는지 이해합니다. VirtualBox에 게스트 추가 기능을 설치할 수 없습니다. VirtualBox에 게스트 추가 기능을 설치할 수 없습니다. Virtua에 설치할 수 없는 경우

Baidu Netdisk를 성공적으로 다운로드했지만 설치할 수 없는 경우 어떻게 해야 합니까? Baidu Netdisk를 성공적으로 다운로드했지만 설치할 수 없는 경우 어떻게 해야 합니까? Mar 13, 2024 pm 10:22 PM

바이두 넷디스크 설치 파일을 성공적으로 다운로드 받았으나 정상적으로 설치가 되지 않는 경우, 소프트웨어 파일의 무결성에 문제가 있거나, 잔여 파일 및 레지스트리 항목에 문제가 있을 수 있으므로, 본 사이트에서 사용자들이 주의깊게 확인해 보도록 하겠습니다. Baidu Netdisk가 성공적으로 다운로드되었으나 설치가 되지 않는 문제에 대한 분석입니다. 바이두 넷디스크 다운로드에 성공했지만 설치가 되지 않는 문제 분석 1. 설치 파일의 무결성 확인: 다운로드한 설치 파일이 완전하고 손상되지 않았는지 확인하세요. 다시 다운로드하거나 신뢰할 수 있는 다른 소스에서 설치 파일을 다운로드해 보세요. 2. 바이러스 백신 소프트웨어 및 방화벽 끄기: 일부 바이러스 백신 소프트웨어 또는 방화벽 프로그램은 설치 프로그램이 제대로 실행되지 않도록 할 수 있습니다. 바이러스 백신 소프트웨어와 방화벽을 비활성화하거나 종료한 후 설치를 다시 실행해 보세요.

Linux에 Android 앱을 설치하는 방법은 무엇입니까? Linux에 Android 앱을 설치하는 방법은 무엇입니까? Mar 19, 2024 am 11:15 AM

Linux에 Android 애플리케이션을 설치하는 것은 항상 많은 사용자의 관심사였습니다. 특히 Android 애플리케이션을 사용하려는 Linux 사용자의 경우 Linux 시스템에 Android 애플리케이션을 설치하는 방법을 익히는 것이 매우 중요합니다. Linux에서 직접 Android 애플리케이션을 실행하는 것은 Android 플랫폼에서만큼 간단하지는 않지만 에뮬레이터나 타사 도구를 사용하면 여전히 Linux에서 Android 애플리케이션을 즐겁게 즐길 수 있습니다. 다음은 Linux 시스템에 Android 애플리케이션을 설치하는 방법을 소개합니다.

Oracle SQL의 나누기 연산에 대한 자세한 설명 Oracle SQL의 나누기 연산에 대한 자세한 설명 Mar 10, 2024 am 09:51 AM

OracleSQL의 나눗셈 연산에 대한 자세한 설명 OracleSQL에서 나눗셈 연산은 두 숫자를 나눈 결과를 계산하는 데 사용되는 일반적이고 중요한 수학 연산입니다. 나누기는 데이터베이스 쿼리에 자주 사용되므로 OracleSQL에서 나누기 작업과 사용법을 이해하는 것은 데이터베이스 개발자에게 필수적인 기술 중 하나입니다. 이 기사에서는 OracleSQL의 나누기 작업 관련 지식을 자세히 설명하고 독자가 참고할 수 있는 특정 코드 예제를 제공합니다. 1. OracleSQL의 Division 연산

Ubuntu 24.04에 Podman을 설치하는 방법 Ubuntu 24.04에 Podman을 설치하는 방법 Mar 22, 2024 am 11:26 AM

Docker를 사용해 본 적이 있다면 데몬, 컨테이너 및 해당 기능을 이해해야 합니다. 데몬은 컨테이너가 시스템에서 이미 사용 중일 때 백그라운드에서 실행되는 서비스입니다. Podman은 Docker와 같은 데몬에 의존하지 않고 컨테이너를 관리하고 생성하기 위한 무료 관리 도구입니다. 따라서 장기적인 백엔드 서비스 없이도 컨테이너를 관리할 수 있는 장점이 있습니다. 또한 Podman을 사용하려면 루트 수준 권한이 필요하지 않습니다. 이 가이드에서는 Ubuntu24에 Podman을 설치하는 방법을 자세히 설명합니다. 시스템을 업데이트하려면 먼저 시스템을 업데이트하고 Ubuntu24의 터미널 셸을 열어야 합니다. 설치 및 업그레이드 프로세스 중에 명령줄을 사용해야 합니다. 간단한

Ubuntu 24.04에서 Ubuntu Notes 앱을 설치하고 실행하는 방법 Ubuntu 24.04에서 Ubuntu Notes 앱을 설치하고 실행하는 방법 Mar 22, 2024 pm 04:40 PM

고등학교에서 공부하는 동안 일부 학생들은 매우 명확하고 정확한 필기를 하며, 같은 수업을 받는 다른 학생들보다 더 많은 필기를 합니다. 어떤 사람들에게는 노트 필기가 취미인 반면, 어떤 사람들에게는 중요한 것에 대한 작은 정보를 쉽게 잊어버릴 때 필수입니다. Microsoft의 NTFS 응용 프로그램은 정규 강의 외에 중요한 메모를 저장하려는 학생들에게 특히 유용합니다. 이 기사에서는 Ubuntu24에 Ubuntu 애플리케이션을 설치하는 방법을 설명합니다. Ubuntu 시스템 업데이트 Ubuntu 설치 프로그램을 설치하기 전에 Ubuntu24에서 새로 구성된 시스템이 업데이트되었는지 확인해야 합니다. 우분투 시스템에서 가장 유명한 "a"를 사용할 수 있습니다

Win7 컴퓨터에 Go 언어를 설치하는 자세한 단계 Win7 컴퓨터에 Go 언어를 설치하는 자세한 단계 Mar 27, 2024 pm 02:00 PM

Win7 컴퓨터에 Go 언어를 설치하는 세부 단계 Go(Golang이라고도 함)는 Google에서 개발한 오픈 소스 프로그래밍 언어로, 간단하고 효율적이며 뛰어난 동시성 성능을 갖추고 있으며 클라우드 서비스, 네트워크 애플리케이션 및 개발에 적합합니다. 백엔드 시스템. Win7 컴퓨터에 Go 언어를 설치하면 언어를 빠르게 시작하고 Go 프로그램 작성을 시작할 수 있습니다. 다음은 Win7 컴퓨터에 Go 언어를 설치하는 단계를 자세히 소개하고 특정 코드 예제를 첨부합니다. 1단계: Go 언어 설치 패키지를 다운로드하고 Go 공식 웹사이트를 방문하세요.

See all articles