Введение в 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
Дополнительные руководства по узлам:
- Введение в менеджер пакетов npm
- Введение в Node.js
- HTTP-запросы с использованием Axios
- Где разместить приложение Node.js
- Взаимодействовать с Google Analytics API с помощью Node.js
- Средство выполнения пакетов npx Node
- Руководство по package.json
- Где npm устанавливает пакеты?
- Как обновить Node.js
- Как использовать или выполнить пакет, установленный с помощью npm
- Файл package-lock.json
- Семантическое управление версиями с использованием npm
- Следует ли зафиксировать папку node_modules в Git?
- Обновите все зависимости Node до последней версии
- Разбор JSON с помощью Node.js
- Найдите установленную версию пакета npm
- Node.js потоки
- Установите старую версию пакета npm
- Получить текущую папку в Node
- Как зарегистрировать объект в Node
- Предоставление функциональности из файла узла с помощью экспорта
- Различия между узлом и браузером
- Сделайте HTTP-запрос POST с помощью Node
- Получить данные тела HTTP-запроса с помощью Node
- Буферы узлов
- Краткая история Node.js
- Как установить Node.js
- Сколько JavaScript вам нужно знать, чтобы использовать Node?
- Как использовать Node.js REPL
- Узел, принимать аргументы из командной строки
- Вывод в командную строку с помощью Node
- Принять ввод из командной строки в Node
- Удаление пакетов npm с помощью `npm uninstall`
- npm глобальные или локальные пакеты
- зависимости npm и devDependencies
- Цикл событий Node.js
- Понимание process.nextTick ()
- Понимание setImmediate ()
- Эмиттер событий узла
- Создайте HTTP-сервер
- Выполнение HTTP-запросов с помощью Node
- Модуль Node fs
- HTTP-запросы в Node с использованием Axios
- Чтение файлов с помощью Node
- Пути к файлам узлов
- Написание файлов с помощью Node
- Статистика файла узла
- Работа с файловыми дескрипторами в Node
- Работа с папками в Node
- Модуль пути к узлу
- Модуль Node http
- Использование WebSockets с Node.js
- Основы работы с MySQL и Node
- Обработка ошибок в Node.js
- Путеводитель по мопсу
- Как читать переменные среды из Node.js
- Как выйти из программы Node.js
- Модуль Node os
- Модуль событий узла
- Узел, разница между разработкой и производством
- Как проверить, существует ли файл в Node.js
- Как создать пустой файл в Node.js
- Как удалить файл с помощью Node.js
- Как получить дату последнего обновления файла с помощью Node.js
- Как определить, сегодня ли дата в JavaScript
- Как записать объект JSON в файл в Node.js
- Почему вам следует использовать Node.js в вашем следующем проекте?
- Запускайте веб-сервер из любой папки
- Как использовать MongoDB с Node.js
- Используйте Chrome DevTools для отладки приложения Node.js
- Что такое pnpm?
- Список параметров среды выполнения Node.js v8
- Как исправить ошибку «Отсутствует доступ для записи» при использовании npm
- Как включить модули ES в Node.js
- Как создать дочерний процесс с помощью Node.js
- Как получить в Express и разобранное, и необработанное тело
- Как обрабатывать загрузку файлов в Node.js
- Каковы одноранговые зависимости в модуле Node?
- Как написать файл CSV с помощью Node.js
- Как читать CSV-файл с помощью Node.js
- Модули ядра узла
- Увеличение номеров сразу нескольких папок с помощью Node.js
- Как распечатать холст по URL-адресу данных
- Как создать и сохранить изображение с помощью Node.js и Canvas
- Как скачать изображение с помощью Node.js
- Как массово переименовывать файлы в Node.js
- Как получить имена всех файлов в папке в Node
- Как использовать обещания и ожидания с функциями обратного вызова Node.js
- Как протестировать пакет npm локально
- Как проверить текущую версию Node.js во время выполнения
- Как использовать Sequelize для взаимодействия с PostgreSQL
- Обслуживайте HTML-страницу с помощью Node.js
- Как устранить ошибку `util.pump is not a function` в Node.js