Как установить библиотеку в node js

npm для простых смертных

Эта статья предназначена для тех, кто не очень дружит с Node.js, но хочет использовать приложения вроде Grunt, Gulp и тому подобные. Процесс работы с этими приложениями подразумевает редактирование файла package.json и использование команд npm, так что понимание принципов работы npm поможет вам справиться с трудностями.

Node.js за 5 минут

Понимание того, что такое Node.js поможет вам лучше разобраться с npm. В двух словах — Node.js это интерпретатор языка JavaScript. Сам по себе Node.js является приложением, которое получает на входе и выполняет его.
Давайте создадим простую программу. Создайте файл helloworld.js и поместите в него следующий код:

Теперь откройте терминал, зайдите в папку с вашей программой и выполните команду node helloworld.js . Вместо helloworld.js может быть любой другой файл с . Убедитесь, что у вас установлен Node.js. Результат выполнения программы будет выглядеть примерно так:

Результат выполнения helloworld.js

Программа просто выведет строку «Hello World» в терминал.

Пакеты в Node.js

Вкратце, пакетом в Node.js называется один или несколько , представляющих собой библиотеку или инструмент.
npm (аббр. node package manager) — это стандартный менеджер пакетов, автоматически устанавливающийся вместе с Node.js. Он используется для скачивания пакетов из облачного сервера npm, либо для загрузки пакетов на эти сервера.

Файл package.json

Файл package.json содержит в себе информацию о вашем приложении: название, версия, зависимости и тому подобное. Любая директория, в которой есть этот файл, интерпретируется как Node., даже если вы не собираетесь публиковать его.
Способ использования файла package.json зависит от того, собираетесь ли вы скачивать пакет или публиковать его.

Скачивание пакетов

Если вы хотите скачать пакет вручную, вам необязательно использовать для этого package.json. Вы можете выполнить в терминале команду npm с названием нужного пакета в качестве аргумента команды, и пакет будет автоматически скачан в текущую директорию. Например:

Также для скачивания пакетов вы можете использовать package.json. Создайте в директории вашего проекта файл package.json, и добавьте в него следующий код (мы не указываем название нашего пакета и версию, мы не собираемся его публиковать; мы указываем название и версию пакетов для загрузки):

Затем сохраните файл и выполните в терминале команду npm install .
Если вы хотите использовать в своём проекте множество пакетов, то лучше указать их package.json вместо того, чтобы каждый раз скачивать их через терминал.
Если вы используете package.json для скачивания пакетов, то получается, что вы создаёте пакет для скачивания пакетов. Я знаю, что это странно, но это работает.
Если пакет имеет зависимости, то npm найдёт их через package.json загружаемого пакета и скачает их. В нашем случае у пакета тоже есть файл package.json с прописанными в нём зависимостями.

Публикация пакета

Чтобы опубликовать пакет, вам потребуется собрать все исходные коды и файл package.json в одной директории. В package.json должны быть указаны название, версия и зависимости пакета. Например:

Посмотрев на этот код, мы можем сказать, что пакет зависит от пакета . Опубликовать пакет можно с помощью комадны npm publish .

Использование пакета в качестве исполняемого файла

Когда npm скачивает пакет, он ищет свойство «bin» в файле package.json. Если он находит это свойство, то он конвертирует этот пакет в исполняемый файл и размещает его в указанной директории.
Например, команда ниже загружает в текущую директорию и конвертирует исходники в исполняемый файл, который затем помещается в папку со всеми исполняемыми файлами. Вследствие этого мы сможем вызвать команду .

Теперь вы знаете, что такое пакет и как он может зависеть от других пакетов. Также вы узнали, как npm работает с пакетами. Давайте перейдём от теории к практике и установим Grunt.

Установка Grunt с помощью npm

  • Создайте директорию для вашего проекта. С точки зрения сервера эта директория будет корневой.
  • Откройте эту директорию через терминал.
  • Теперь скачайте и установите Grunt. Аргумент -g указывает npm на то, что пакет следует скачивать в основную папку для хранения пакетов, а не в текущую директорию.

Добавить библиотеку в проект Node.js Express app

Пытаюсь освоить WebStorm. Создал проект Node.js Express App.

Хочу добавить библиотеку.

Установил ее: $ npm install vsvg-paths

Я как понимаю, нужно в app.js ее подключить. Пытаюсь сделать это так:

var vsvg_paths = require("vsvg-paths");

Но мне тактично сообщают, что я делаю, что-то не так (говорит, что decode() не является функцией или просто ошибка подключения библиотеки, если укажу decode не как функцию).

Подскажите, как правильно подключить библиотеку или где почитать об этом?

Node.js. Утилиты npm и npx

Утилита npm — это менеджер пакетов, который входит в состав Node.js. Пакетом называется один или несколько js-файлов, представляющих собой какую-то библиотеку или инструмент. Менеджер пакетов предназначен для скачивания пакетов из облачного сервера, либо для загрузки (публикации) пакетов на этот сервер.

1. Инициализация проекта

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

В процессе инициализации, npm задаст несколько вопросов на тему того как должен называться проект, какая у него должна быть версия, описание и тому подобное. В конце npm спросит все ли правильно и покажет содержимое файла package.json , который и станет основой нового проекта.

2. Файл package-lock.json

Сразу после установки хотя бы одного пакета, рядом с package.json будет создан файл package-lock.json , который будет обновляться каждый раз при добавлении новой зависимости. В этом файле содержится описание состояния текущей иерархии используемых в приложении модулей: их точные версии и точные версии используемых ими пакетов и так до конца. При развертывании приложения в новой среде наличие файла package-lock.json гарантирует, что будут установлены версии тех пакетов, которые использовались в разработке в последний раз.

3. Установленные пакеты

Получить список всех установленных в директории проекта npm-пакетов можно с помощью команды

Дополнительная опция —all команды list выводит все пакеты в виде дерева

Получить список всех установленных глобально npm-пакетов (см.ниже) можно с помощью команды

4. Подробная информация о пакете

Посмотреть подробную информацию о пакете, доступного через npm-репозиторий

Получить информацию из npm-репозитория о последней доступной версии пакета

5. Локальная установка пакетов

Установить все пакеты из секций dependencies и devDependencies файла package.json :

Установить все пакеты из секции dependencies файла package.json (для production сервера)

Установить пакет package-name , но не добавлять его в файл package.json :

Установить пакет package-name и добавить в секцию devDependencies файла package.json :

Установить пакет package-name и добавить в секцию dependencies файла package.json :

6. Локальное удаление пакетов

Удалить пакет package-name , но не удалять его из файла package.json :

Удалить пакет package-name и удалить его из секции devDependencies файла package.json :

Удалить пакет package-name и удалить его из секции dependencies файла package.json :

7. Глобальная установка пакета

По умолчанию npm будет устанавливать все пакеты в локальной директории, в которым мы сейчас работаем (директория проекта). Если нужно, чтобы пакет был доступен всем приложениям, его нужно установить глобально. Но это не лучшее решение — разные проекты могут требовать разные версии одного пакета. Глобально установленный пакет будет нормально работать в одном проекте и вызывать ошибку в другом.

8. Глобальное удаление пакета

Так что если из-за глобально установки пакета возникли трудности — можно удалить его с помощью команды

9. Локальное обновление пакетов

Обновить один пакет или все пакеты проекта (нужно выполнять из директории проекта):

Чтобы узнать, вышли ли новые версии используемых в проекте пакетов

10. Как безопасно обновляться

Некоторые из доступных обновлений пакетов представляют собой мажорные релизы, обновления до которых не произойдёт при выполнении npm update . Обновление до мажорных релизов не производится, так как они могут содержать серьёзные изменения, не отличающиеся обратной совместимостью.

Для того, чтобы обновиться до новых мажорных версий всех используемых пакетов, нужно глобально установить пакет

Теперь можно посмотреть, какие пакеты можно обновить (без внесения каких-либо изменений):

  • Red = major upgrade
  • Cyan = minor upgrade
  • Green = patch upgrade

Убедившись, что обновление достаточно безопасно, можно выполнять следующую команду:

Эта команда обновит файл package.json , внеся изменения в указания о подходящих версиях пакетов в разделы dependencies и devDependencies . Это позволит npm обновить пакеты, используемые в проекте, до новых мажорных версий при запуске команды npm update .

Если нужно установить самые свежие версии пакетов для только что только что загруженного проекта, в котором пока нет директории node_modules , то, вместо npm update , выполняем команду npm install .

11. Глобальное обновление пакетов

Обновить один пакет или все пакеты, установленные глобально (можно выполнять из любого места):

12. Установка конкретной версии

Установка старой версии npm-пакета может понадобиться для решения проблем совместимости:

Узнать, какие версии некоего пакета имеются в npm-репозитории

13. Запуск скриптов

Файл package.json часто содержит секцию scripts , которая содержит скрипты для автоматизации рутиных задач. Можно запустить или остановить веб-сервер, собрать приложение, прогнать тесты и так далее.

Запускать эти команды можно с помощью команды

К переменной окружения PATH будет добавлен путь node_modules/.bin , так что в первую очередь будут выполнены локальные скрипты проекта.

14. Справка по менеджеру пакетов

У менеджера пакетов есть подробная справка по все командам

Для примера, посмотрим справку по команде install (в браузере)

Утилита npx

Существует множество утилит в виде пакетов (например, create-react-app ), которые изначально предполагалось устанавливать глобально. Запускать их из командной строки было очень просто — достаточно ввести имя утилиты в консоли. Однако мы уже знаем, что глобальная установка пакетов создает множество проблем.

Конечно, мы можем что-нибудь придумать, чтобы избежать проблем с глобальной установкой таких утилит. Например, установить пакет create-react-app глобально, запустить один раз из директории проекта, чтобы создать React-приложение — и сразу после этого удалить.

Еще один способ — установить create-react-app локально в какую-то временную директорию. И добавить команду в секцию scripts файла package.json . После этого можно запускать утилиту из этой директории с помощью npm run , указывая путь к директории проекта, который надо создать.

В общем, получается сложно и хлопотно — тут на помощь приходит утилита npx , которая позволяет:

  • во-первых, легко запустить локально установленный пакет без run-script
  • во-вторых, легко запустить пакет, который не установлен ни локально, ни глобально
  • в-третьих, запускать разные версии одной утилиты с помощью package@version

Посмотрим на то, как использовать команду npx на примере простой утилиты cowsay . Это абсолютно бессмысленная утилита, которая выводит на экран «говорящую» корову — но подходит в качестве примера. Если пакет cowsay установлен глобально, выполнение в командной строке команды cowsay hello приведёт к выводу в консоль «говорящей» коровы.

Если пакет cowsay не установлен глобально, подобная команда выдаст ошибку:

Используем команду npx , когда пакет cowsay не установлен глобально:

Утилита npx скачает пакет cowsay из npm-репозитория, установит во временную директорию и выполнит утилиту. Что важно — не загрязняя глобальное пространство. Так что при использовании npx необходимости в глобальной установке пакетов больше нет.

Если запускать npx из директории проекта, то сначала будет выполнен поиск в node_modules/.bin . Если пакет уже установлен локально — он будет выполнен. А если не установлен — npx найдет его в npm-репозитории, скачает, установит во временную директорию и выполнит.

Несколько раз встречал команду npm it и никак не мог понять, что она означает. Оказывается, это синоним команды npm install-test , которая выполняет последовательно две команды:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *