Npm init что это

Npm init что это

Node.js делает возможным написание серверных приложений на JavaScript. Он построен на движке JavaScript V8 и написан на C++ — и поэтому он быстрый. Изначально он создавался как серверное окружение для приложений, но разработчики начали использовать его для создания инструментов, помогающих автоматизировать выполнение локальных задач. В итоге возникшая вокруг Node.js новая экосистема инструментов (типа Grunt и Gulp), привела к трансформации процесса фронтенд-разработки.

Чтобы использовать все эти инструменты (или пакеты) в Node.js нам нужна возможность устанавливать и управлять ими. Для этого создан npm, пакетный менеджер Node.js. Он устанавливает нужные вам пакеты и предоставляет удобный интерфейс для работы с ними. Но перед тем как начать использовать npm, вам надо установить в своей системе Node.js.

Установка Node.js

Перейдите на страницу загрузок Node.js и скачайте нужную вам версию. Есть установщики для Windows и Mac, а также скомпилированные бинарники и исходный код для Linux. Кроме того, в Linux вы можете установить Node.js с помощью пакетного менеджера, все это описано в документации.

В этой статье мы будем использовать стабильную версию 5.7.0.

Посмотреть, где установлен Node и проверить версию можно следующими командами:

Чтобы удостовериться, что установка прошла успешно, выполним несколько команд в простой интерактивной среде Node (REPL).

Установка работает, поэтому теперь мы можем сфокусироваться на npm, который включен в установку.

Пакеты Node

С помощью npm можно устанавливать пакеты локально или глобально. В локальном режиме пакеты устанавливаются в каталог node_modules родительского каталога. Владельцем каталога является текущий пользователь. Глобальные пакеты устанавливаются в каталог /lib/node_modules/ , владельцем которого является root (префиксом в данном случае обычно является каталог /usr/ или /usr/local ). Это значит, что вам надо использовать sudo для глобальной установки пакетов, что может повлечь ошибки с полномочиями при разрешении сторонних зависимостей, а также создает проблему для безопасности. Изменим это:

Изменение места установки глобальных пакетов

Посмотрим, что скажет нам команда npm config .

Мы получили основную информацию об установке. Теперь важно узнать место установки глобальных пакетов:

Этот префикс мы хотим изменить так, чтобы устанавливать пакеты в свой домашний каталог. Для этого создайте в домашнем каталоге папку .node_modules_global и укажите ее в качестве места установки пакетов в конфигурации:

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

Сам npm по-прежнему установлен в каталог, владельцем которого является root. Но так как мы поменяли место установки глобальных пакетов, мы можем использовать полученное преимущество. Мы установим npm еще раз, но теперь в место, указанное нами. Заодно мы получим последнюю версию npm.

Наконец, нам надо добавить .node_modules_global/bin в нашу переменную окружения $PATH , чтобы мы могли запускать глобальные пакеты из командной строки. Сделаем это, добавив следующую строку в файл .profile или .bash_profile и перезапустив терминал.

Теперь командная оболочка будет сразу находить пакеты, установленные в .node_modules_global/bin и использовать корректную версию npm .

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

На данный момент у нас уже есть один глобальный пакет — это сам пакет npm. Изменим это и установим еще один пакет, это будет UglifyJS (инструмент для минификации JavaScript). Для глобальной установки используется флаг —global , его можно записывать сокращенно -g .

Читайте также:  Call of juarez wiki

Как вы можете видеть из вывода в консоль, у нас установлены дополнительные пакеты — это зависимости UglifyJS.

Вывод списка установленных пакетов

Мы можем вывести список глобально установленных пакетов с помощью команды npm list с опцией —global :

Такой вывод списка, со всеми зависимостями, перенасыщен. Мы можем выводить его в более читаемом виде с помощью опции —depth=0 :

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

Теперь мы можем обрабатывать файлы JavaScript в терминале с помощью UglifyJS. Например, следующая команда сделает из файла example.js минифицированный example.min.js :

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

Локальная установка используется в npm по умолчанию, то есть достаточно не использовать флаг —global . Пакет будет установлен в каталог node_modules родительского каталога. Создадим каталог с проектом в нашем домашнем каталоге:

Вывод списка локальных пакетов

Также как и в случае с глобальными пакетами, список локальных выводится командой npm list :

Как видите, мы можем устанавливать локальные пакеты, где угодно. Это также значит, что мы можем создать другой каталог и установить туда другую версию пакета (в нашем случае это библиотека underscore).

Удаление локальных пакетов

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

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

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

Обновление пакета

В последней версии underscore исправили мешавший нам баг и мы хотим обновить версию этого пакета.

Примечание: для этой статьи, библиотека underscore была указана как зависимость в package.json (см. управление зависимостями).

Поиск пакетов

Мы уже пару раз использовали команду mkdir . Есть ли пакет node с подобным функционалом?

Такой пакет нашелся (mkdirp), установим его.

Теперь создадим файл mkdir.js :

И запустим его в терминале:

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

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

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

Управление зависимостями

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

В результате мы получим файл со следующим содержимым:

Вы можете сгенерировать это файл и более простым способом, с помощью опции —yes (автоматический ответ “да” на все вопросы):

Файл package.json будет создан в качестве name будет использовано название каталога.

Вы также можете добавить private: true , чтобы предотвратить случайную публикацию частных репозиториев или подавления любых предупреждений при выполнении npm install . Создадим новый каталог и используем package.json для установки зависимостей.

Читайте также:  Авз антивирус официальный сайт

Это показывает, как просто мы можем установить пакеты, нужные нам в другом каталоге на основе нашего файла package.json . Но как поддерживать его актуальность при установке новых пакетов? Для этого используется флаг —save .

Наш файл package.json также обновился:

Менеджеры версий

Есть пара инструментов, позволяющих использовать несколько версий Node.j на одном компьютере. Первая это n, другая — nvm(Node Version Manager). Если вас интересует эта возможность, подробнее о ней можно узнать из следующей статьи: Install Multiple Versions of Node.js using nvm.

Заключение

В этой статье освещены основы работы с npm. Я показал, как установить Node.js, как изменить место установки глобальных пакетов (так мы можем избежать использования sudo ) и как установить пакеты локально и глобально. Я также рассмотрел удаление, обновление и установку определенной версии пакета, а также управление зависимостями проекта.

В каталоге npm тысячи пакетов и их число будет расти, с учетом анонса jQuery о публикации всех плагинов как пакетов npm.

  • Переводы, 6 августа 2017 в 21:38
  • Саша

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

Базовые сокращения

Сначала вспомним самые известные сокращения для установки:

  • установить пакет: npm install pkg , сокращение: npm i pkg .
  • установить пакет глобально: npm i —global pkg , сокращение: npm i -g pkg .
  • установить пакет и сохранить как зависимость: npm i —save pkg , сокращение: npm i -S pkg .
  • установить пакет только для использования в разработке (devDependency): npm i —save-dev pkg , сокращение: npm i -D pkg .

Другие сокращения можно посмотреть на официальном сайте.

Интересное

Инициализация нового пакета

Первое действие при создании нового пакета — npm init :
Если вопросы кажутся вам лишними и вы хотите их проскочить, используйте npm init -y или npm init -f :

Тестирование

Часто используемую команду npm test можно заменить на npm t , она делает то же самое:

Доступные скрипты

При работе над новым проектом вы, скорее всего, интересуетесь, что вообще можно запустить в его рамках. Можно открыть файл package.json и проверить секцию scripts :
Но список доступных скриптов можно получить и через npm run :
Еще вариант — установить интерактивное меню ntl ( npm i -g ntl ) и запустить в папке проекта:

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

Для проверки зависимостей тоже можно было бы зайти в package.json , но есть вариант получше — npm ls —depth 0 :
Для проверки пакетов, установленных глобально, подходит та же команда с соответствующим флагом — npm ls -g —depth 0 :

Запуск локально установленных исполняемых модулей

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

Когда мы передаем команду терминалу, он ищет исполняемый модуль с таким же названием по всем путям, которые перечислены в переменной окружения PATH . Локально установленные пакеты регистрируют исполняемые файлы локально, поэтому они не перечислены в PATH и не могут быть обнаружены.

При запуске исполняемых модулей через npm-скрипты менеджер пакетов добавляет дополнительную папку к PATH , /node_modules/.bin . Её можно найти, запустив npm run env | grep "$PATH" . С помощью npm run env можно увидеть все доступные переменные окружения.

Читайте также:  Lenovo ideapad 530s 15ikb 81ev003xru

21–22 января в 20:00, онлайн, беcплатно

В node_modules/.bin локально установленные пакеты размещают свои исполняемые модули. Запускаем ./node_modules/.bin/mocha в директории проекта:

Просто пишите ./node_modules/.bin/ , когда хотите запустить локально установленный исполняемый модуль.

Найти пакет в Интернете

В файле package.json вы могли заметить запись repository . Для того, чтобы открыть соответствующий репозиторий в браузере, запустите команду npm repo . Команда npm home выполняет ту же функцию для записи homepage . Если вы хотите открыть пакет на официальном сайте, используйте команду npm docs .

Запуск скриптов до и после других скриптов

Вы скорее всего знакомы со скриптом pretest , он позволяет определить код, который следует запустить перед скриптом test . Оказывается, pre и post скрипты можно создавать для любых других скриптов, в том числе кастомных:

Обновить версию пакета

Допустим, вы используете semver для управления версиями и хотите обновить версию перед очередным релизом. Можно открыть package.json и сделать это вручную, но зачем?

Более простой способ — запустить команду npm version с major , minor или patch :

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

Если у вас есть свои трюки, которыми вы хотите поделиться, ждем ваших предложений в комментариях.

SYNOPSIS

EXAMPLES

Create a new React-based project using create-react-app :

Create a new esm -compatible package using create-esm :

Generate a plain old package.json using legacy init:

Generate it without having it ask any questions:

DESCRIPTION

npm init can be used to set up a new or existing npm package.

initializer in this case is an npm package named create- , which will be installed by npx , and then have its main bin executed – presumably creating or updating package.json and running any other initialization-related operations.

The init command is transformed to a corresponding npx operation as follows:

  • npm init foo -> npx create-foo
  • npm init @usr/foo -> npx @usr/create-foo
  • npm init @usr -> npx @usr/create

Any additional options will be passed directly to the command, so npm init foo —hello will map to npx create-foo —hello .

If the initializer is omitted (by just calling npm init ), init will fall back to legacy init behavior. It will ask you a bunch of questions, and then write a package.json for you. It will attempt to make reasonable guesses based on existing fields, dependencies, and options selected. It is strictly additive, so it will keep any fields and values that were already set. You can also use -y / —yes to skip the questionnaire altogether. If you pass —scope , it will create a scoped package.

SEE ALSO

The current stable version of npm is here. To upgrade, run: npm install [email protected] -g

To report bugs or submit feature requests for the docs, please post here. Submit npm issues here.

Ссылка на основную публикацию
Mysql вывести последнюю запись
Это пример кода для выбора всех записей из таблицы. Может ли кто-нибудь показать мне, как выбрать последнюю запись этой таблицы?...
M3u8 чем открыть на андроид
вкл. 13 Август 2018 . Опубликовано в Менеджеры закачек M3U8 Loader - Программа скачает видео в несколько потоков. Для того...
M2040dn печатает белые листы
Сделаем качество печати Kyocera как по заводу В блоге я уже неоднократно говорил о своей любви к печатным аппаратам японской...
Mysql query error select distinct
I keep running into the same error, using MySQL. The totaal value is marked as wrong, but i have no...
Adblock detector