Skip to content
garevna edited this page Nov 15, 2018 · 7 revisions

npm

Менеджер пакетов npm - это крупнейший в мире реестр программного обеспечения
( около 3 миллиардов загрузок в неделю )

В реестре содержится более 600 000 пакетов

Open-source разработчики всего мира используют npm
для совместного использования и заимствования пакетов


Installation

Поскольку npm идет в составе Node.js, необходимо установить

Далее заходим в


Commands

which npm

npm --version

npm root
Папка для глобальной установки пакетов


npm init

Эта команда создаст файл package.json в текущей папке
Предварительно нужно создать новую папку для проекта и перейти в нее

📋 package.json хранит зависимости проекта,
т.е. список пакетов, необходимых для проекта
( для каждого пакета указана нужная версия )

При создании файла package.json npm задаст ряд вопросов о проекте,
который будет расположен в текущей папке

Ваши ответы будут использованы для установки значений полей:

  • name - название проекта
  • version - версия
  • description - краткое описание
  • author - автор ( вы )
  • repository - ссылка на репозиторий проекта
  • keywords - ключевые слова
  • scripts- объект, описывающий команды запуска скриптов с помощьюnpm run

Поскольку в дальнейшем вы сможете редактировать файл package.json,
можно особо не заморачиваться первоначальными установками 😉


package.json

Теперь при установке любого пакета запись об этом пакете
будет автоматически добавляться в раздел dependencies
файла package.json

Все пакеты, которые необходимы для проекта, будут описаны в разделах

✅ dependencies
✅ devDependencies

dependencies - зависимости пакета
эти пакеты будут непосредственно включены в сборку приложения

devDependencies - пакеты, необходимые на этапе сборки
в само приложение не встраиваются


.npmrc

Файл конфигурации, откуда
( наряду с package.json )
npm будет считывать установки

Файл .npmrc может существовать для каждого проекта,
для каждого пользователя,
и глобально

Посмотреть настройки конфигурации по умолчанию
можно с помощью команды

npm config ls -l

Изменить настройки можно с помощью команды

 npm config

Например, для автоматического сохранения зависимостей:

npm config set save=true

а для сохранения зависимостей с указанием точной версии пакета:

npm config set save-exact=true

npm install

В своих проектах вы будете использовать различные пакеты,
облегчающие жизнь 😉

🚥 Часть этих пакетов нужна будет для сборки вашего приложения,
его тестирования, отладки, транспилляции и т.д.
Эти пакеты не будут включаться в тело приложения
Они помогут это тело постоить

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

Короче, все эти пакеты нужно установить

Для этого вам понадобится команда npm install

Опция -g позволяет установить пакет глобально,
чтобы он был доступен всем вашим приложениям

Глобальная установка пакета с именем <имя пакета>:

npm install -g <имя пакета>

Локальная установка пакета с именем <имя пакета>:

npm install <имя пакета>

Локальная - значит, пакет будет установлен в той директории
( папке пректа ), в которой вы находитесь в момент вызова npm

При установке пакетов с опцией 🚦 --save или 🚥 --save-dev
npm будет добавлять соответствующие записи
в раздел 🚦 dependencies или 🚥 devDependencies

☕ Например, команда

npm install  -g  css-loader  --save-dev

установит загрузчик css-loader глобально
и внесет соответствующую запись в devDependencies


📂 node_modules

Все установленные локально пакеты будут находиться
в папке 📂 node_modules текущего проекта

Необходимо всегда добавлять папку node_modules в gitignore

В git-репозитории никто никогда не хранит папку 📂 node_modules,
однако если клонировать репо,
то установить все необходимые пакеты при наличии файла
package.json очень легко

достаточно выполнить консольную команду ⚙️ npm install,
и все пакеты, перечисленные в package.json, будут установлены
в соответствии с указанными версиями

gitignore


npm run

Прежде, чем использовать эту команду,
нужно внести определенные изменения в файл package.json

Конкретнее - в раздел scripts:

"scripts": {
    "алиас" : "путь_к_файлу_скрипта"
    ...
}

В этом разделе мы описываем скрипты или пакеты,
которые будем запускать с помощью команды npm run

Эта команда запускает указанный скрипт

"scripts": {
    "start" : "node index.js",
    "build" : "webpack"
}

npm list

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

Для вывода списка пакетов, установленных глобально, используйте опцию -g

npm list -g

npm list --depth=0

Для вывода краткого списка ( без подробностей о каждом пакете ) используется опция --depth=0


npm search

поиск пакетов
☕ npm search babel


link

Связывание пакетов

1. создание символической ссылки в глобальной папке ( ~ ) на пакет в локальной папке

Перейдем в папку z/home/test/node_modules
и создадим символическую ссылку на пакет express в текущей папке

2. Теперь перейдем в папку другого проекта ( /z/home/js-samples )
и создадим там символическую ссылку на пакет express,
установленный в папке ( /z/home/test/node_modules ),
на который есть символическая ссылка из глобальной папки ( ~ )

⚠️ Команда link предназначена для создания символических ссылок только на пакеты

Для отмены установленной связи используем команду:

npm unlink images

package-lock.json

Каждый раз при установке новой зависимости NPM автоматически генерирует lock-файл с именем package-lock.json

lock-файл - это "слепок" текущего дерева зависимостей, который точно описывает дерево папок в директории node_modules

⚠️ package-lock.json никогда не будет опубликован, даже если его явно включить в сборку

Указание конкретной версии пакета в package.json фиксирует зависимости только верхнего уровня

Если ваше приложение будет запущено на другой машине ( пользователя ), то могут быть установлены другие версии пакетов более глубокого уровня, что может "сломать" работу приложения

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


npm shrinkwrap

Каждый раз, когда выполняется развертывание ( deploy ) приложения, Node.js запускает npm

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

Избежать обновления зависимостей можно путем создания файла npm-shrinkwrap.json, который фиксирует текущие версии зависимостей вашего приложения

Формат этого файла полностью идентичен формату package-lock.json

⚠️ npm-shrinkwrap.json может быть частью опубликованного пакета

Если выполнить команду npm shrinkwrap в папке, в которой уже есть package-lock.json,

npm переименует package-lock.json в npm-shrinkwrap.json

Если в папке проекта будут оба файла, npm будет использовать npm-shrinkwrap.json и игнорировать package-lock.json

© Irina H.Fylyppova 2018
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав


Новая версия


1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19

Занятие 1

⤵️

Занятие 2

⤴️ ⤵️

Занятие 3

⤴️ ⤵️

Занятие 4

⤴️ ⤵️

Занятие 5

⤴️ ⤵️

Занятие 6

⤴️ ⤵️

Занятие 7

⤴️ ⤵️

Занятие 8

⤴️ ⤵️

Занятие 9

⤴️ ⤵️

Занятие 10

⤴️ ⤵️

Занятие 11

⤴️ ⤵️

Занятие 12

⤴️ ⤵️

Занятие 13

⤴️ ⤵️

Занятие 14

⤴️ ⤵️

Занятие 15

⤴️ ⤵️

Занятие 16

⤴️ ⤵️

Занятие 17

⤴️ ⤵️

Занятие 18

⤴️ ⤵️

Занятие 19

⤴️ ⤵️

⤴️

ico20 Дополнительно
dir-20 Справочная инфо

Clone this wiki locally