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?

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"

Можно редактировать файл 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 .

Если создать скрипт с любым другим именем, кроме 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