Вернуться назад

Пакетные менеджеры NodeJS

// package.json

"devDependencies": {
  "gulp": "^5.0.1"
}

npm

# Запуск локального приложения:

npm install --save-dev gulp
npx gulp --version
# Запуск локального gulp:
npx gulp --version

# скачать последнюю версию, выполнить и потом удалить:
npx gulp@latest --version
# Устанавливаю gulp локально  (ставится версия "^5.0.1"):
npm install gulp --save-dev

# В репозитории появилась версия "5.0.2"
# Обновляюсь до версии "5.0.2":
npm update gulp --save-dev

# Вышла версия "6.0.0"
# Теперь обновляться до неё надо так:
npm install gulp@latest --save-dev


# Если gulp не найден на компьютере, то 
# временно его устанавливает, выводит версию и удаляет gulp
npx gulp --version
    # а если gulp найден, то просто выводится его версия 

# Временно установливает gulp, выводит версию и удаляет gulp –
# независимо от того, найден gulp на компьютере, или нет:
npx gulp@latest --version

Куда всё ставится:

node_modules/gulp/  # сама библиотека gulp, импорт в коде (import gulp from 'gulp')
node_modules/.bin/gulp/  # тут исполняемый файл (CLI) gulp, запуск gulp из терминала и npm-скриптов

КЭШ npm


# КЭШ npm:
~/.npm/_cacache/

# Файлы .tgz с пакетами (например gulp-5.0.1.tgz) находятся в папке:
~/.npm/_cacache/content-v2/

# а их индексы и метаданные — в:
~/.npm/_cacace/index-v5/
# Но содержимое в "content-v2/" хранится в зашифрованном виде по хэшам (sha512),
# поэтому там не видно имён вроде gulp.tgz — только длинные хэш-пути
# (например ~/.npm/_cacache/content-v2/sha512/ff/9f/...).
# Проверка целостности КЭШа, очистка мусора, сжатие КЭШа:
npm cache verify

# Очистить КЭШ:
npm cache clean --force

pnpm

# Устанавливает gulp с дев-зависимостями:
pnpm add gulp --save-dev

# Устанавливается gulp в раздел с зависимостями для продакшена:
pnpm add gulp --save-prod

# То же самое:
pnpm add gulp

# ... в раздел с optional-зависимостями:
pnpm add gulp --save-optional

# только запускает установленный gulp (не скачивает):
pnpm exec gulp --version

# Скачивает и запускает gulp в песочнице:
pnpm dlx gulp

# Удалить gulp:
pnpm remove gulp
    # удаляет символическую ссылку на store (глобальный кэш) из node_modules
    
# Полностью удалить (в т.ч. и из store):
pnpm store prune
    # то есть, сначала надо удалить символическую ссылку из node_modules, ...
    # ... а потом запустить эту команду. И если gulp больше не используется ...
    # ... другими проектами, то он удалится и из Store.

Либо можно запустить через package.json:

// package.json

"scripts": {
  "build": "gulp"
}

А затем просто выполнить:

pnpm run build

КЭШ pnpm

# Узнать путь к store
pnpm store path

# pnpm store:
.local/share/pnpm/store/v10
    # хранилище всех пакетов на уровне пользователя

# А здесь хранятся жёсткие ссылки (symlink) на пакеты в store:
node_modules/

# КЭШ:
~/.cache/pnpm/