Несколько полезностей по работе с 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. Я здесь новичок, если карму минусуете, то хоть пишите, что не так
Поделиться публикацией
Реклама помогает поддерживать и развивать наши сервисы

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

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