19 декабря 2013 в 20:00

Несколько полезностей по работе с NPM из песочницы

image

NPM — пакетный менеджер для node.js, аналог GEM в RoR. В статье несколько советов по его использованию.

Установка пакетов


Все знают
# Устанавливает пакет express
npm install express

Какие варианты еще есть?

# Устанавливает все пакеты, перечисленные в package.json
npm install

# Устанавливает express и вносит запись о нем в package.json в секцию dependencies
npm install express --save

# Устанавливает grunt и вносит запись о нем в package.json в секцию devDependencies
npm install grunt --save-dev

Варианты с --save и --save-dev сделают запись в package.json только, если он уже существует.

Чтобы не утруждать себя, каждый раз указывая --save, можно прописать:
# Все - теперь все устанавливаемый пакеты будут автоматом прописываться в package.json
npm config set save true

Кстати, насчет --save
# Кроме того, что все пакеты обновятся, если в package.json в качестве 
# версии была прописана "*" - теперь туда попадут конкретные версии
npm update --save

Сокращенные варианты команд


Для ускорения процесса ввода команд удобно использовать сокращения. Самое полезное в виде таблички:
Ключ Сокращение
install i
uninstall r
config c
update up
list ls
--save -S
--save-dev -D

Пример:
npm install express --save

# Совершенно то же самое

npm i express -S

Подготовка к npm init


Не очень удобно при создании package.json при помощи npm init каждый раз вводить персональные данные. Чтобы этого избежать, сделаем настройку:
# Внесем информацию об авторе "по умолчанию"
npm set init.author.name "$NAME"
npm set init.author.email "$EMAIL"
npm set init.author.url "$SITE"

Вместо переменных среды $NAME и т.д. можно внести и сами данные. Все, теперь мы готовы к npm init

А что еще можно настраивать?


# Выведет список всех возможных настроек
npm config ls -l

Проверить, не устарели ли пакеты


# Бывает полезно сделать прежде чем делать update
npm outdated

Фиксируем версии пакетов


# Все, можно передавать в продакшен
npm shrinkwrap

Прежде чем передавать продукт в промышленную эксплуатацию, по хорошему, нужно зафиксировать точные версии пакетов с которыми все 100% работает. Эта команда так и сделает. После ее выполнения будет создан shrinkwrap.json, в котором будут прописаны точные версии ваших пакетов, теперь npm install будет устанавливать именно их.

Обновление версии NPM


# NPM вполне может обновлять сама себя
npm update npm -g


P.S. Я здесь новичок, если карму минусуете, то хоть пишите, что не так
Иван Петров @tankerme
карма
19,0
рейтинг 0,0
Похожие публикации
Самое читаемое Разработка

Комментарии (12)

  • +2
    Спасибо, полезно, хоть и очень похоже на строчки из манула!
    • +5
      Ну так мануал большой, а здесь только то, что действительно полезно.
  • 0
    Спасибо большое! Все никак руки не доходили почитать мануал по npm (package.json делал по старинке — ручками). Плюсанул:)
  • +9
    npm install --production

    Устанавливает только зависимости, перечисленные в подразделе «dependencies» в package.json, а зависимости из раздела «devDependencies» не устанавливает.
  • +2
    недавно заметил что можно и так:
    npm isntall express
    
  • +4
    Обычно получается быстрее отредактировать package.json, удалить ненужные пакеты, добавить новые, подкорректировать версии и сделать:
    npm prune
    npm install
    

    чем ставить / удалять каждый пакет отдельно.
  • –6
    Написали бы, что это, в двух словах.
    • +1
      В шапке написал.
  • 0
    Про npm shrinkwrap полную ерунду написали. Он ничего не делает с package.json, он создает файл shrinkwrap.json в котором фиксируются также все версии ВСЕХ зависимостей. И это его основное достоинство, мал-мальски гарантирующее что в продакшене будет все работать также как и на твоей машине.
    После этого npm install будет делать установку по этому файлу.
    • 0
      Спасибо, сейчас поправлю.
  • +1
    Две полезности: использовать npmd для разгрузки сервера npm и задонатить на те же сервера. Еще можно использовать зеркало npmjs.eu, преимущества его использования указаны на сайте.
  • 0
    оставлю это здесь — package.json cheatsheet

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.