Что такое pnpm?

Введение в pnpm, замену npm, которая экономит место на диске

Я недавно писал о том, что у нас огромныеnode_modulesпапки, и почему это не обязательно плохо, но это уменьшило бы потребление жесткого диска, верно?

Каждый байт, сохраненный на диске, можно использовать для чего-то другого, кроме кода библиотек, у меня есть SSD на 512 ГБ на моем MacBook Pro, который я купил в 2010 году, но некоторые совершенно новые компьютеры в 2019 году поставляются с SSD на 128 ГБ (когда дело доходит до закона Мура, что-то пошло не так. в пространство на жестком диске).

В частности, одним из способов было бы централизовать хранилище кода библиотек в одном месте и поделиться им со всеми проектами, над которыми вы работаете.

Это главное ценностное предложениепромилле, очень крутой проект, который вы можете посмотреть наhttps://pnpm.js.org.

Это в основном замена дляnpm, что означает, что после его установки вы можете вызыватьpnpm installскачать зависимости проекта, и все будет работать прозрачно для вас.

Если у вас есть 10 проектов одной версии, использующих React,pnpmустановит его один раз, а затем будет ссылаться на эту первую установку во всех других ваших проектах.

Это также означает, что часть инициализации проекта занимает гораздо меньше времени, чем если бы ей приходилось загружать ресурсы с помощью стандартногоnpmпроцедура. Это быстрее, даже еслиnpmкэшировал пакет, потому чтоpnpmделает жесткую ссылку на центральный локальный репозиторий, в то время какnpmделает копию пакета из кеша.

Вы устанавливаетеpnpmс помощьюnpmконечно

npm install -g pnpm

Тогда будучиpnpmпрямая замена, вы можете использовать всеnpmкоманды:

pnpm install react
pnpm update react
pnpm uninstall react

и так далее.

pnpmособенно ценится в тех компаниях, где необходимо поддерживать большое количество проектов с одинаковыми зависимостями.

НапримерСбой- одна из таких компаний, так как они размещают огромное количество проектов на Node.js.

pnpmдает им, в дополнение кnpmобычные команды, некоторые утилиты, в том числеpnpm recursive, который используется для запуска одной и той же команды для всех проектов в папке. Например, вы можете инициализировать 100 проектов, хранящихся в текущей папке, запустивpnpm recursive install. Удобно.

Если вы используетеnpx, который является удобным (и рекомендуемым) способом запуска таких утилит, какcreate-react-app, вы получите преимуществаpnpmиспользуяpnpxкоманда, которая идет сpnpm:

pnpx create-react-app my-cool-new-app

Где установлены пакеты? В macOS в~/.pnpm-store/папка (где~означает вашу домашнюю папку). Я установилlodashв качестве примера и получилась структура папок:

➜  ~ tree .pnpm-store/
.pnpm-store/
└── 2
    ├── _locks
    ├── registry.npmjs.org
    │   └── lodash
    │       ├── 4.17.11
    │       │   ├── integrity.json
    │       │   ├── node_modules
    │       │   │   └── lodash
    │       │   │       ├── ...
    │       │   ├── package -> node_modules/lodash
    │       │   └── packed.tgz
    │       └── index.json
    └── store.json

Есть еще много дополнительных сведений об этом инструменте, но я надеюсь, что это поможет вам начать работу с ним.pnpm!

Стоит ли использовать его для повседневного использования? Наверное, нет, просто придерживайсяnpmесли у вас нет потребностей, которые этот инструмент решает за вас - одна из них - нехватка места на диске.

Скачать мою бесплатнуюСправочник по Node.js


Дополнительные руководства по узлам: