현대 응용 프로그램 개발에서는 처음부터 모든 것을 작성하지 않습니다. 대신 기존 오픈 소스 패키지를 사용하는 것을 선호합니다. 이러한 각 패키지에는 자체 유지 관리자와 커뮤니티가 있습니다. 그래서,패키지를 사용하여 우리의 프로젝트에 우리에게 어떤 장점을 빠르게 개발,새로운,정기적으로 업데이트하고,더 나은 안전보다는 사용자 정의 만든 스크립트입니다.하나의 패키지가 올바르게 작동하려면 다른 많은 패키지에 의존하는 것이 일반적입니다. 마찬가지로 다른 패키지도 lodash 와 같은 것에 의존 할 수 있지만 lodash 자체도 여러 패키지에 의존합니다. 즉,중첩 된 종속성은 때로는 종속성 관리를 수동으로 처리 할 수 없을 정도로 복잡해질 수 있습니다.패키지 관리자가 매우 유용 할 때입니다. 패키지 관리자는 프로젝트의 종속성을 자동으로 처리하는 도구입니다.
예를 들어,패키지 관리자를 설치할 수 있는 새로운 또는 기존 업데이트 패키지와 함께 하나의 명령입니다. 왜냐하면 모든 것이 자동화되어 있기 때문에 인적 오류에 대한 기회가 없기 때문입니다. 자바 스크립트 개발자로서 우리는 여러 패키지 관리자에 액세스 할 수 있습니다. 하지만,이 안내서에서,우리는 비교하는 세 가지 가장 인기있는 것들:
- 본원
- 실
- pnpm
개요 패키지 관리자
npm 첫 번째 패키지 관리자를 소개하는 개념의 프로토콜로 레지스트리와 포장 기준입니다. 그것은 2010 년에 다시 출시되었으며 노드에 의해 공식적으로 채택되었습니다.js 팀은 얼마 지나지 않아 npm 의 전환점이었습니다.
노드의 대규모 성공 후.js,npm 은 또한 개발자 커뮤니티로부터 견인을 받았습니다. 제공하는 온라인 레지스트리에 대한 JavaScript 패키지뿐만 아니라는 명령행 도구를 함께 작동하는 레지스트리 설치 및 업데이트를 종속성입니다.
그러나 Yarn 과 pnpm 의 개발을 촉발시킨 npm 의 단점은 거의 없습니다. 예를 들어,npm 은 대응 제품보다 상당히 느립니다. 또한 심각한 보안 취약점의 역사가 있습니다.
그래서 Facebook 과 Google 과 같은 대기업 기술 회사는 npm 을 계속 사용하는 것을 주저했습니다. 차례 차례로,그들은 npm 의 더 나은 버전을 개발하고 그것을 Yarn 이라고 부르기위한 노력에 동참했습니다. 한편 우크라이나 개발자 Zoltan Kochan 은 pnpm 을 개발했습니다.
의 특징 npm,원사,그리고 pnpm
이러한 모든 패키지 관리자들은 오픈 소스 의 전체에 액세스크의 내부 동작합니다. 때때로 이것은 엔터프라이즈 수준의 응용 프로그램 개발에서도 요구 사항입니다.
Npm 의 장점:
- 는 자동으로
package-lock.json
파일을 생성합니다. 버전 제어 시스템에 커밋하는 것이 유용합니다. 이 방법은,다른 개발자들이 쉽게 설치할 수 있습의 종속성의 로컬 컴퓨터에 - 로컬 또는 글로벌 종속성으로 용이성
- npm 만을 처리하는 여러 버전의 종속성
- 그것은 공식 서비스를 제공하는 데 도움이 더 이상 pypi,rubygems,또는 packagist
의 혜택을 털실:
- 실 많은 문제를 해결에 나타나는 Monorepo. 예를 들어,당신은 유지하는 여러 개의 패키지에서 같은 저장소 및 그들 모두가 별도의
package.json
파일 업데이트할 수 있습니다 모든 패키지로 쉽게 털실,덕분에 작업 공간의 개념을 설치할 수 있는 종속성의 모든 패키지에서 저장소에서 이루어진다. Npm 을 사용하면 각 패키지 폴더 내에서npm install
명령을 수동으로 실행해야합니다. - 털실을 사용한 오프라인 캐시 메커니즘을 의미를 설치하면 패키지에 대한 첫 번째 시간,원사합니다 캐시 아래의 폴더
~/.yarn-cache
. 따라서 다음 번에이 패키지가 필요할 때 Yarn 은 서버에 HTTP 요청을하는 대신 로컬 캐시에서 검색합니다. 이 작은 크게 향상의 성능을 향상 원사에 비해 본원 - 원사를 사용하여 잠금 이라는 파일
yarn.lock
도록 귀하의 프로젝트에 대해서도 정상적으로 작동하는 모든 팀원이 있습니다. 이 개념은 이라고도 결정적으로 설치하는 알고리즘 - 그것은 포장과 내장된 라이센스 검사할 수 있는 편리한 다른 시나리오를 때 개발 중인 응용 프로그램
- 과는 달리 고궁,실을 사용하여 접근 방식이라는 병렬 다운로드가 있습니다. 그것은 사용 원사를 활용하는 리소스를 더은 빌드 프로세스를 단축
- 그것은 자동으로 다시 시도할 수 있는 HTTP 요청에서 실패하는 경우. 이 기능은 일시적인 인터넷 문제에 직면 할 때 특히 유용합니다
pnpm 의 이점:
- 호환으로 고궁뿐만 아니라 제공뿐만 아니라 또한 크게 더 나은 디스크 공간 사용량과 속도
- pnpm 설치하는 모든 패키지에 위치한 후 사용하여 심볼릭 링크를 참조하다. 그것은 완전히 새로운 개념 라는 콘텐츠를 어드레스로 불러낼 수 있는 저장할 수 있는 시스템 pnpm 을 감지하는 사이의 차이를 파일이 있습니다. 에,그 복제하지 않 변경되지 않은 파일에 두 개의 서로 다른 버전의 패키지
- 그것의 최신 버전,5.8.0,새로운 원사-bash 같은 설정이라는 셸-에뮬레이터,크로스-플랫폼 쉘 환경
- pnpm 는 엄격한 액세스 제어 메커니즘을 의미하는 패키지에만 액세스할 수 있습니다 의존성에 정의되어 있는 그것의
package.json
파일
패키지 관리자에 비
사용의 용이성
npm,원사, 고 pnpm 제공 거의 동일한 명령을 위해 그들의 다양한 작업,그리고 그들은 모두 사용하기 쉽습니다. 다음은 일반적으로 사용되는 명령의 예입니다:
본원 | 실 | pnpm |
---|---|---|
npm | 실 설치 | pnpm 설치 |
npm 업데이트 | 원사 업그레이드 | pnpm 업데이트 |
속
가 일치하지 않을 pnpm 때의 속도와 성능한 패키지 관리자입니다. 다른 유스 케이스의 벤치 마크에 따르면 pnpm 은 npm 보다 최대 3 배 빠른 성능 속도를 보였습니다.
Yarn 과 npm 의 속도는 비교할 수 있습니다. 경우에 따라 Yarn 은 npm 에 비해 상당한 이점이 있지만 npm 이 더 적합한 선택 인 시나리오가 있습니다. 예를 들어,만약 우리가 수행하는 설치 작업하여 사용하는node_modules
cache
lock file
기능,다음 본원을 제공할 수 있 5 배 더 나은 속도입니다. 마찬가지로 세 가지 기능을 모두 사용하면 Yarn 이 성능을 향상시킬 수 있으며 npm 보다 11 배 빨라집니다.
보안
Npm 보다 Yarn 의 가장 큰 장점은 체크섬을 사용하여 각 패키지의 무결성을 검증한다는 것입니다. 검증 프로세스는 패키지에서 코드를 실행하기 전에 수행되므로 패키지 하이재킹 취약점의 가능성을 버립니다.반면에 npm 은 나쁜 패키지로 작업 할 때 조금 더 용서합니다. 보안을위한 모범 사례를 제공하기 위해 여전히 진화하고 있습니다. 그러나 npm 은 일반적으로 보안 측면에서 나쁜 평판을 얻습니다.
과거에는 npm 에서 많은 프로젝트에 직접적인 영향을 미치는 몇 가지 보안 취약점이있었습니다. 예를 들어,npm 버전 5.7.0 실행할 때는sudo npm
명령에는 리눅스 기반의 운영체제(OS),가능성이 있었을 소유권을 변경 시스템의 파일을 렌더링 OS 사용할 수 없습니다.
마찬가지로 bitcoins 를 훔치는 또 다른 사건이 2018 년에 일어났습니다. 기본적으로,인기있는 노드입니다.js 패키지 EventStream 은 버전 3.3.6 에서 악의적 인 종속성flatmap-stream
를 추가했습니다. 이 악성 패키지는 개발자의 컴퓨터에서 비트 코인을 훔치려 고 시도하는 암호화 된 페이로드로 포장되었습니다.
pnpm 은 npm 과 Yarn 의 긍정적 인 특성을 결합하여 더 나은 보안을 제공합니다. 도를 구현하는 엄격한 액세스 제어 메커니즘을 결합 패키지에서만 사용하여 자신의 의존성에 정의되어 있는 그것의package.json
파일입니다.
안정성
npm,Yarn 및 pnpm 은 지난 몇 년 동안 여러 단계를 거쳤습니다. 그들은 오픈 소스 커뮤니티에서 기여의 톤을 받았기 때문에 시간이 지남에 따라,그들의 코드베이스는 성숙했다.
그리고 시간의 흐름에 따라 깨는 변화를 도입 할 수있는 새로운 개념과 아이디어가 나타납니다. 이 글을 쓰는 시점에서 이 가이드를,이러한 모든 패키지 관리자에서 좋은 모양과에서 사용할 수 있습니다 귀하의 프로젝트 없이 문제입니다.
Yarn 은 Facebook 및 Google 의 지원을받으며 npm 은 Microsoft 및 Node 의 지원을받습니다.js 및 pnpm 은 대부분에 의해 개발되는 개인이지만,그것은 지금 75+기여—그래서 당신은에 따라 달라질 수 있습니다 이 패키지 관리자를 만들려는 당신의 다음 프로젝트입니다.
monorepos 에 대한 지원
Monorepos 는 대부분 대규모 코드베이스를 저장하고 관리하는 대형 기술 회사에서 선호합니다. npm 은 개별 프로젝트를 관리하도록 설계되었습니다. 현재로서는 monorepos 를 지원하는 기능이 없습니다. 그러나 Yarn 과 pnpm 모두 작업 공간 개념 덕분에 monorepos 를 완벽하게 지원합니다.
결정 론적-잠금 파일
세 패키지 관리자는 모두 잠금 파일의 기능으로 포장됩니다. 그것은 다른 개발자가 프로젝트의 정확한 동일한 복사본을 설치할 수 있습니다. npm 은package-lock.json
파일을 사용하고 Yarn 은yarn.lock
를 사용하고 pnpm 은pnpm-lock.yaml
를 사용합니다.
결론
는 경우 검색에 대한 솔루션을 제공하는 당신은 더 나은 속도와 효율적인 메모리 사용량을 사용하는 것이 좋을 사용하여 pnpm.
monorepos 를 다루는 경우 pnpm 또는 Yarn 을 사용하여 그렇게 할 수 있습니다. 그러나 Yarn 은 facebook 에 사용 데이터를 전송하므로 일부 시나리오에서 Yarn 을 적절한 선택으로 만들지 못할 수 있음을 명심하십시오.
Yarn 도 Node 의 버전 5 를 지원하지 않습니다.js 입니다. 이와 관련하여 Npm 은 노드에 대해 선호되는 옵션입니다.js 기반 프로젝트는 노드에서 권장하기 때문입니다.js 팀. 요즘,노드.js 는 기본적으로 npm 과 함께 제공됩니다.
과 고궁,고려해야 할 역사를 가진 보안 문제는 개발의 실도 만들었 많이 해결하기 위해 발행에 존재하는 고궁. 따라서 프로젝트의 보안이 염려되는 경우 npm 대신 Yarn 을 사용하는 것이 좋습니다.
LogRocket:Debug 자바 스크립트 오류를 쉽게 의 컨텍스트를 이해
코드를 디버깅 항상 지루한 작업입니다. 그러나 오류를 더 많이 이해할수록 오류를 수정하는 것이 더 쉬워집니다.
LogRocket 을 사용하면 이러한 오류를 새롭고 독특한 방식으로 이해할 수 있습니다. 우리는 프 모니터링 솔루션 트랙을 사용하여 사용자의 참여는 당신의 JavaScript 경을 제공할 수 있을 정확히 알아보십시 사용자에게도 오류가 있습니다.
LogRocket 레코드가 콘솔 로그,페이지 로딩 시간,stacktraces,느린 네트워크를 요청/응답 헤더+체,브라우저 메타데이터,사용자 정의 로그입니다. 당신의 자바 스크립트 코드의 영향을 이해하는 것은 결코 쉽게되지 않습니다!
무료로 사용해보십시오.