Я недавно писал о том, как у нас огромные node_modules папки и почему это не обязательно плохо, но это уменьшило бы потребление жесткого диска, верно?
Каждый байт, сохраненный на диске, может быть использован для чего-то другого, кроме кода библиотек, у меня есть твердотельный накопитель емкостью 512 ГБ на моем MacBook Pro, который я купил в 2010 году, но некоторые совершенно новые компьютеры в 2019 году поставляются с твердотельным накопителем емкостью 128 ГБ (что-то пошло не так с Законом Мура, когда дело доходит до места на жестком диске).
В частности, одним из способов было бы централизовать хранилище кода библиотек в центральном месте и поделиться им со всеми проектами, над которыми вы работаете.
Это основное ценностное предложение pnpm , очень классного проекта, с которым вы можете ознакомиться на Это основное ценностное предложение pnpm
Это в основном замена для npm , что означает, что после его установки вы можете вызвать npm install для загрузки зависимостей проекта, и все будет работать прозрачно для вас.
Если у вас есть 10 проектов, использующих React, в одной и той же версии, pnpm установит его один раз, а затем будет ссылаться на эту первую установку во всех других ваших проектах.
Это также означает, что часть инициализации проекта занимает гораздо меньше времени, чем если бы ей приходилось загружать ресурсы с использованием стандартной процедуры npm . Это быстрее, даже если npm кэшировал пакет, потому что pnpm создает жесткую ссылку на центральный локальный репозиторий, в то время как npm создает копию пакета из кэша.
Вы устанавливаете npm с помощью npm , конечно 😁
npm install -g pnpm
Затем, будучи заменой pnpm , вы можете использовать все команды npm :
pnpm install react pnpm update react pnpm uninstall react
и так далее.
pnpm особенно ценится в тех компаниях, где необходимо поддерживать большое количество проектов с одинаковыми зависимостями.
Например, Glitch – одна из таких компаний, так как у них есть миллион Node.js проекты.
pnpm предоставляет им, в дополнение к обычным командам npm , некоторые утилиты, включая pnpm рекурсивный , который используется для выполнения одной и той же команды во всех проектах в папке. Например, вы можете инициализировать 100 проектов, хранящихся в текущей папке, запустив рекурсивную установку pnpm . Удобный.
Если вы используете npx , что является удобным (и рекомендуемым) способом запуска утилит, таких как create-react-app , , вы получите преимущества pnpm , используя команду pnp , которая поставляется с 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 , если у вас нет потребностей, которые этот инструмент решает для вас – одной из них является нехватка места на диске.
Оригинал: “https://flaviocopes.com/pnpm/”