npm deps와 pnpm deps의 비교

10873 단어 beginnersnpmpnpmwebdev

pnpm.io/benchmarks

pnpm is a fast, disk space-efficient package manager.


npm는 내 패키지였습니다. yarnnpm 보다 빠르고 유용하다는 글을 많이 보았지만 그냥 기본 관리자를 사용하고 싶었습니다. 그리고 최근에 동료로부터 새로운 패키지 관리자에 대해 들었습니다. "pnpmyarn보다 빠르고 흥미로운 구조를 가지고 있습니다."라고 그는 말했습니다. 다른 패키지 관리자로 넘어갈 때가 된 것 같다는 생각이 들었습니다.
pnpm는 저장소 저장, 설치 없이 패키지 연결, 임의 패키지 액세스 방지 등을 위해 심볼릭 링크를 활용합니다.
pnpm에 대해 잘 설명하기에는 지식이 부족합니다. pnpm.io에 좋은 설명이 있습니다.

문서를 읽은 후 이미 설치된 다른 버전의 종속성을 설치할 때 npmpnpm가 어떻게 다른지 직접 확인하고 싶었습니다.

패키지express로 해본 테스트를 보여드리겠습니다.

npm



npm install express



node_modules에는 express와 관련된 많은 종속성이 있습니다.

종속성 중 하나는 debug 이며 많은 패키지에는 debug가 종속성으로 있습니다.

...
 "body-parser": {
      "version": "1.20.0",
      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
      "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
      "requires": {
...
        "debug": "2.6.9",
...
      }
    },
...
 "express": {
      "version": "4.18.1",
      "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
      "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
      "requires": {
...
        "debug": "2.6.9",
...
    "finalhandler": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
      "requires": {
        "debug": "2.6.9",
...
      }
    },
...
      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
    },
    "send": {
      "version": "0.18.0",
      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
      "requires": {
        "debug": "2.6.9",
...
      },
...




보시다시피 debug 가 없습니다.


debug는 node_modules에 있습니다. 그들은 debug 의 동일한 버전을 가지고 있습니다.

이 경우 내 프로젝트에 debug의 다른 버전을 설치하면 어떻게 됩니까?


[email protected] 를 설치했고 node_modules의 debug 버전이 2.6.8 에서 2.6.9 로 변경되었습니다. 프로젝트에 2.6.8 이 필요하기 때문입니다.

그래서 [email protected]는 어디에 있습니까?



각 패키지에는 [email protected]가 있습니다.


pnpm


pnpm와 같은 과정을 해보자!

pnpm add express




.pnpm이 있고 node_modules에 express가 있는데 깨끗해 보입니다.



.pnpm에는 패키지의 실제 버전이 있습니다.



실제로 node_modules의 express는 링크입니다. 아래 이미지를 찾아보세요.



https://pnpm.io/motivation

그리고 종속성으로 debug가 있는 패키지는 이미 node_modules에 링크 파일로 debug가 있습니다.


[email protected]를 설치하면 .




[email protected]가 .pnpm에 설치되었고, node_modules에 링크 파일이 추가되었으며, body-parser , send 와 같은 패키지에는 변경 사항이 없습니다.


결론



아직 내 프로젝트에서 pnpm를 사용하지 않았지만 이 패키지 관리자를 빨리 사용하고 싶습니다. 멋지고 흥미롭고 실제로 pnpm에는 더 강력한 기능이 있습니다. 문서에서 찾을 수 있습니다.

누군가에게 도움이 되길 바랍니다.

행복한 코딩!

좋은 웹페이지 즐겨찾기