Npm init что это
Перейти к содержимому

Npm init что это

  • автор:

Npm init что это

Поиск

«npm init» | Результат: создает пустой файл package.json и заполняет этот файл данными по умолчанию | Node.js

Посмотрели 7213 раз(а)
Выполняем в командной строке «npm init» | Node.js
последнее обновление: 7 июня 2020
Command Prompt (Win Console)
Результат:
• создает пустой файл package.json и заполняет этот файл данными по умолчанию

Создаем пустую папку my_node_example на диске D:/
D:/my_node_example

Находясь внутри папки D:/my_node_example выполним в командной строке
D:/my_node_example> npm init

Все время нажимаем кнопку Enter

Результат
В результате создался файл
D:/my_node_example/ package.json

<
«name» : «my_node_example» ,
«version» : «1.0.0» ,
«description» : «»,
«main» : «index.js» ,
«scripts» : <
«test» : «echo » Error: no test specified » && exit 1″
>,
«author» : «»,
«license» : «ISC»
>

← Предыдущая тема
Файл package-lock.json в Node.js

Следующая тема →
«npm install имя_пакета» | Результат: устанавливает JavaScript библиотеку (пакет) | Например выполняем в командной строке «npm install jquery» | добавит jQuery библиотку в папку node_modules | Node.js

Чем отличается npm init от npm install?

boratsagdiev

npm init задаёт вам разные вопросы и создает package.json, который определяет настройки проекта, зависимости, скрипты, название и прочее.
npm install [module] устанавливает модуль с именем module.

То есть, чтобы начать работу, сначала вам нужно сделать npm init (можно с опцией —yes , которая установит на все вопросы дефолтные ответы), а потом уже устанавливать модули командой npm install

Ответ написан более трёх лет назад

Нравится 11 9 комментариев

Npm init что это

npm — это менеджер пакетов, который управляет модулями и зависимостями проекта. В Node.js npm уже имеется по умолчанию, поэтому его отдельная установка не требуется.

Все пакеты хранятся в облачном репозитории на официальном сайте. Вы также можете создать свой модуль и опубликовать его в репозитории для общего использования.

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

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

package.json¶

В npm файл package.json используется для описания модулей, от которых зависимо ваше приложение, и содержит ряд метаданных о приложении. Рассмотрим на примере. Предположим, у вас есть проект, корневая директория которого называется app . Перейдите в app через командную строку и введите команду.

npm init 

Вам будет предложено ввести некоторые данные, на основе которых Node.js npm сгенерирует файл package.json . Структура файла:

  • name — название приложения;
  • version — версия;
  • description — описание;
  • main — главный файл приложения, который отвечает за его запуск (хорошей практикой считается давать название app.js или index.js );
  • scripts — объект, описывающий команды, которые часто приходится выполнять в процессе разработки и упрощающий их использование;
  • repository — ссылка на Git репозиторий, где хранится проект;
  • keywords — массив ключевых слов, по которым будет осуществляться поиск модуля на сайте npm (если он будет там опубликован);
  • author — разработчик;
  • license — лицензия, под которой будет распространяться приложение.

Пример, как может выглядеть package.json .

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
 "name": "webdraftt.com", "version": "1.0.0", "description": "My first Node js application", "main": "app.js", "scripts":  "build": "webpack" >, "repository":  "type": "git", "url": "https://github.com/webdraftt/webfraftt" >, "keywords": [ "angular", "rxjs", "ngrx", "node js", "npm" ], "author": "webdraftt", "license": "ISC" > 

Если вы не планируете публиковать свое приложение в общем репозитории npm, то заполнять все поля совсем не обязательно. Вполне будет достаточно для собственного удобства указать name , version и description .

Управление модулями npm¶

Модули — это приложения, которые реализовывают некоторый функционал и могут быть использованы для разработки более сложных приложений. Например, фреймворк Express является устанавливаемым модулем. Рассмотрим установку пакета на примере Express. Из корневой директории проекта необходимо выполнить команду.

npm install --save express 

Все модули устанавливаются в директорию node_modules той директории, откуда была вызвана команда npm install .

Флаг —save указывает на то, что мы хотим внести данный модуль в список зависимостей в файл package.json . И когда возникнет необходимость запустить приложение в другой среде, то совсем не обязательно также переносить и папку node_modules . Перенесите только файл package.json и выполните в командной строке.

npm install 

И все указанные в package.json Node.js npm модули будут установлены в папку node_modules .

Если при установке пакета вы не хотите, чтобы он добавлялся в список зависимостей, то просто не указывайте флаг —save .

npm install express 

После установки модуля с —save в package.json появится объект dependencies со списком зависимостей вашего проекта.

1 2 3 4 5
 "dependencies":  "express": ">= 1.2.0" > > 

Для задания установки определенной версии или версии из какого-либо диапазона, используйте оператор @ .

npm install [email protected] npm install express@">4.15.0  

При указании диапазона версий задаваемое значение должно быть заключено в двойные кавычки.

Установка самой последней версии модуля может быть выполнена так.

npm install express@latest 

В процессе разработки, например для тестирования или измерения показателей производительности, вам могут понадобиться Node.js npm модули, которые не будут использоваться и даже не должны устанавливаться в среде production . Чтобы установить npm модуль только для среды разработки, укажите флаг --save-dev .

npm install logger-service --save-dev 

Теперь в package.json должен появиться новый блок devDependencies .

1 2 3 4 5 6 7 8
 "dependencies":  "express": ">= 1.2.0" >, "devDependencies":  "logger-service": ">= 1.0.2" > > 

Теперь рассмотрим глобальную установку пакетов. Допустим, на вашем сервере одновременно работают несколько разных Node.js приложений, но которые имеют общие зависимости. Чтобы не дублировать пакет в директории каждого проекта, вы можете установить его в вашу систему глобально с помощью флага -g и он будет доступен для использования во всей системе.

npm install express -g 

С течением времени Node.js npm модули дорабатываются и улучшаются, а следовательно выходят их новые версии. Чтобы обновить все пакеты, описанные в package.json , используйте такую команду.

npm update 

Обновление конкретного модуля, например Express, выглядит так.

npm update express 

Для удаления пакет из зависимостей вашего проекта, используйте uninstall .

npm uninstall express 

Если вы хотите также удалить его из package.json , просто укажите флаг --save .

npm uninstall express --save 

package-lock.json¶

Сразу после установки хотя бы одного Node.js npm модуля вы увидите, что рядом с package.json был создан файл package-lock.json , который будет обновляться каждый раз при добавлении новой зависимости.

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

Описание файла package-lock.json имеет более высокий приоритет в сравнении с описанием зависимостей package.json .

1. Введение

Чтобы использовать все богатство инструментов (или пакетов) Node.js нам нужна возможность устанавливать и управлять ими. Для этого создан NPM (node package manager) - пакетный менеджер Node.js. Он устанавливает нужные пакеты и предоставляет удобный интерфейс для работы с ними.

NPM состоит из трех основных компонентов:

  • Сайт npmjs.com — используется для поиска и ознакомления с документацией пакетов.
  • Интерфейс командной строки (CLI) — запускается из терминала и предоставляет набор команд для работы с реестром и пакетами. Позволяет создавать скрипты для запуска в терминале.
  • Реестр пакетов (registry) — большая общедоступная база данных инструментов разработки (пакетов).

Пакет (package) — небольшая JS-библиотека, решающая специфическую задачу.

Пакеты пишут сами разработчики и делятся с сообществом. Такой подход упрощает жизнь, потому что не нужно изобретать колесо, все колеса уже давно лежат на полках реестра и готовы к использованию.

Пакеты абстрагируют реализацию функционала, предоставляя разработчику удобный интерфейс. Это делает код чище, читабельнее и позволяет легче его поддерживать.

2. Команды NPM

Сразу перечислим основные команды и будем последовательно использовать и рассматривать в деталях.

  • npm init — инициализирует npm и создает файл package.json
  • npm install — устанавливает все зависимости перечисленные в package.json
  • npm list --depth=0 - выведет в терминале список локально установленных пакетов с номерами их версий, без зависимостей
  • npm install [package-name] — установит пакет локально в папку node_modules
  • npm uninstall [package-name] — удалит пакет, установленный локально и обновит package.json
  • npm start и npm test — запустит скрипт start или test , расположенный в package.json
  • npm run [custom-script] — запустит кастомный скрипт, расположенный в package.json
  • npm outdated — используется для поиска обновлений, обнаружит совместимые версии программно и выведет список доступных обновлений
  • npm update — обновит все пакеты до максимально разрешенной версии

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

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

Создать файл package.json можно npm-командой init , тем самым инициализировав проект в текущей папке.

npm init 

Вам будет предложено ввести название проекта, версию, описание и т. д. Можно просто нажимать Enter до тех пор, пока не будет создан package.json и размещен в папке проекта.

Чтобы не нажимать Enter , пропуская пустые поля, используется команда init с флагом --yes . Флаг — дополнительная настройка для команды.

npm init --yes 

Будет создан package.json со значениями по умолчанию. Чтобы установить эти значения, в терминале последовательно выполните следующие команды, подставив свое имя и почту.

npm config set init.author.name "YOUR_NAME" npm config set init.author.email "YOUR_EMAIL" 

npm init

Можно редактировать файл package.json вручную или запустив npm init еще раз. Если открыть package.json в редакторе, он будет выглядеть примерно так. Это всего лишь метаданные о проекте.

 "name": "node-tut", "version": "1.0.0", "main": "index.js", "scripts":  "test": "echo \"Error: no test specified\" && exit 1" >, "author": "Alexander Repeta [email protected]>", "license": "ISC", "keywords": [], "description": "" > 

4. NPM-скрипты

Скрипты позволяют запускать на исполнение установленные пакеты. Используя npm-скрипты, можно создавать целые системы сборки проекта.

Автоматизируем запуск index.js . Для этого в файле package.json в поле scripts добавим скрипт запуска start .

 "scripts":  "start": "node index.js" > > 

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

script

Если создать скрипт с любым другим именем, кроме start или test , он будет запускаться как npm run имя-скрипта — не забудьте run .

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

Одна из возможностей, которые предоставляет npm — установка пакетов, которые извлекаются из реестра и распаковываются в папку node_modules в корне проекта.

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

Установим библиотеку validator.js для валидации строк, например ввода пользователя в поля формы.

npm install validator 

NPM загрузил validator и поместил его в node_modules — папку, в которой будут находиться все внешние зависимости.

Не добавляйте папку node_modules в систему контроля версий, у всех разработчиков она будет своя. Если вы используете Git , не забывайте добавить папку node_modules в файл .gitignore

Обратите внимание на созданный файл package-lock.json — это журнал снимков дерева зависимостей проекта. Он гарантирует, что команда разработчиков использует одни и те же версии зависимостей. NPM автоматически обновляет его при добавлении, удалении и обновлении пакетов.

В package.json появилась новая зависимость в поле dependencies . Это означает, что validator версии 11.1.0 был установлен как зависимость и готов к работе. Пакеты постоянно обновляются, версия может отличаться.

 "dependencies":  "validator": "^11.1.0" > > 

Для того чтобы получить интерфейс пакета в коде, необходимо вызвать функцию require('имя-модуля') , аргументом передав ей имя модуля без определения пути - это называется абсолютный импорт. Путь не нужен, так как по умолчанию поиск модуля будет происходить в папке node_modules . Результатом своего выполнения функция вернет интерфейс модуля — объект с методами или просто функцию, зависит от пакета.

// index.js const validator = require('validator'); const validateEmail = email =>  return validator.isEmail(email); >; console.log( 'Is [email protected] a valid email?: ', validateEmail('[email protected]'), ); console.log( 'Is Mangozedog.com a valid email?: ', validateEmail('Mangozedog.com'), ); 

Выполнив в консоли npm start получим.

Is [email protected] a valid email?: true Is Mangozedog.com a valid email?: false 

6. Удаление пакетов

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

npm uninstall validator 

7. Установка определенной версии пакета

Теперь установим нужную версию validator . В команде установки номер версии указывается после символа @ .

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

8. Типы зависимостей

Представьте торт, для его приготовления шефу нужны продукты, именно они войдут в состав торта. Но для приготовления понадобятся и инструменты вроде мисок, ложек, лопаток и т. п. А еще на кухне есть столы и печи, холодильники и т. д. - то, что используется для приготовления любого блюда, общие инструменты которые есть на кухне.

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

Именно для этого у команд npm install и npm uninstall существуют 3 флага.

  • --save — указывает, что добавляется зависимость, которая войдет в финальный продукт. Пакет будет установлен локально, в папку node_modules и будет добавлена запись в поле dependencies в package.json .
  • --save-dev — указывает, что добавляется зависимость разработки. Пакет будет установлен локально, в папку node_modules , и будет добавлена запись в поле devDependencies в package.json .
  • --global — указывает, что добавляется глобальная зависимость, то есть инструмент, который доступен для любого проекта. Пакет будет установлен глобально (в систему).

Если не указывать флаг, по умолчанию будет использован --save .

9. Управление версиями пакетов

Пакеты имеют связанный с ними номер версии. Номера версий соответствуют стандарту SemVer.

  • npm outdated — используется для поиска обновлений, обнаружит совместимые версии программно.
  • npm update — обновит все пакеты до максимально разрешенной версии.
  • npm update [имя-пакета] - обновит указанный пакет

Если вы не доверяете машинам ��, можно открыть package.json и вручную поменять версии пакетов, после чего выполнить npm install .

10. Управление кэшем

После установки пакета npm сохраняет его копию в кэше, поэтому при следующей его установке вам не нужно опять скачивать его из интернета. Кэш хранится в папке .npm вашего домашнего каталога.

Эта папка со временем засоряется старыми пакетами и иногда ее полезно очищать, не слишком часто (пару раз в год), кеширование полезно, так как сокращает время установки уже использованных пакетов.

npm cache clean 

11. Дополнительные материалы

  • Упрощаем работу с npm: полезные сокращения и трюки
  • Using Npm Scripts As A Build Tool

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

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