What does npm -D flag mean?
I am about to install this npm package and it says npm install -D load-grunt-config . What does the -D flag do?
![]()
2 Answers 2
The -D flag is the shortcut for: —save-dev . Source: https://docs.npmjs.com/cli/install
-D, —save-dev: Package will appear in your devDependencies.
![]()
As described in the NPM Install Docs:
-D, —save-dev : Package will appear in your devDependencies.
Which means that the package will not be installed if you do npm install —production .
Node.js
НПМ
Диспетчер пакетов узлов (npm) предоставляет следующие две основные функции: онлайн-репозитории для пакетов / модулей node.js, которые можно найти на search.nodejs.org. Утилита командной строки для установки пакетов Node.js, управления версиями и управления зависимостями пакетов Node.js.
Синтаксис
- npm <command>, где <command> является одним из следующих:
- Добавить пользователя
- Добавить пользователя
- apihelp
- автор
- бункер
- ошибки
- с
- кэш
- завершение
- конфиг
- DDP
- дедупликации
- протестовать
- документы
- редактировать
- проводить исследования
- Часто задаваемые вопросы
- находить
- найти-простофиля
- получить
- Помогите
- помощь-поиск
- Главная
- я
- устанавливать
- Информация
- в этом
- isntall
- проблемы
- ля
- ссылка на сайт
- список
- Л.Л.
- пер
- авторизоваться
- Ls
- устаревший
- владелец
- пак
- префикс
- чернослив
- публиковать
- р
- Р.Б.
- перестраивать
- Удалить
- Сделки рЕПО
- запустить снова
- комната
- корень
- выполнения сценария
- s
- се
- поиск
- задавать
- шоу
- Упаковочная
- звезда
- звезды
- Начните
- стоп
- подмодуль
- тег
- тестовое задание
- TST
- ООН
- деинсталляция
- разъединить
- Отменить публикацию
- снять пометку
- вверх
- Обновить
- v
- версия
- Посмотреть
- кто я
параметры
параметр пример доступ npm publish —access=public бункер npm bin -g редактировать npm edit connect Помогите npm help init в этом npm init устанавливать npm install ссылка на сайт npm link чернослив npm prune публиковать npm publish ./ запустить снова npm restart Начните npm start стоп npm start Обновить npm update версия npm version Установка пакетов
Вступление
Пакет — это термин, используемый npm для обозначения инструментов, которые разработчики могут использовать для своих проектов. Это включает в себя все: от библиотек и фреймворков, таких как jQuery и AngularJS, до задач, таких как Gulp.js. Пакеты появятся в папке, обычно называемой node_modules , которая также будет содержать файл package.json . Этот файл содержит информацию обо всех пакетах, включая любые зависимости, которые являются дополнительными модулями, необходимыми для использования определенного пакета.
Npm использует командную строку для установки и управления пакетами, поэтому пользователи, пытающиеся использовать npm, должны быть знакомы с базовыми командами в своей операционной системе, то есть: перемещаться по каталогам, а также видеть содержимое каталогов.
Установка NPM
Обратите внимание, что для установки пакетов необходимо установить NPM.
Рекомендуемый способ установки NPM — использовать один из установщиков со страницы загрузки Node.js. Вы можете проверить, установлено ли у вас уже установленное node.js, выполнив команду npm -v или npm version .
После установки NPM с помощью установщика Node.js обязательно проверьте наличие обновлений. Это связано с тем, что NPM обновляется чаще, чем установщик Node.js. Чтобы проверить наличие обновлений, выполните следующую команду:
Как установить пакеты
Для установки одного или нескольких пакетов используйте следующее:
Примечание . Это установит пакет в каталог, в который в настоящее время входит командная строка, поэтому важно проверить, выбран ли соответствующий каталог
Если у вас уже есть файл package.json в вашем текущем рабочем каталоге, и в нем определены зависимости, то npm install автоматически разрешит и установит все зависимости, перечисленные в файле. Вы также можете использовать сокращенную версию команды npm install которая: npm i
Если вы хотите установить определенную версию пакета, используйте:
Если вы хотите установить версию, которая соответствует определенному диапазону версий, используйте:
Если вы хотите установить последнюю версию, используйте:
Вышеупомянутые команды будут искать пакеты в центральном репозитории npm на npmjs.com . Если вы не хотите устанавливать из реестра npm , поддерживаются другие параметры, такие как:
Обычно модули устанавливаются локально в папке с именем node_modules , которая может быть найдена в текущем рабочем каталоге. Это каталог require() будет использовать для загрузки модулей, чтобы сделать их доступными для вас.
Если вы уже создали файл package.json , вы можете использовать —save (стенографию -S ) или один из ее вариантов, чтобы автоматически добавить установленный пакет к вашему package.json в качестве зависимости. Если кто-то еще установит ваш пакет, npm автоматически прочитает зависимости из файла package.json и установит перечисленные версии. Обратите внимание, что вы все равно можете добавлять и управлять своими зависимостями, редактируя файл позже, поэтому обычно рекомендуется отслеживать зависимости, например:
Чтобы устанавливать пакеты и сохранять их только в том случае, если они необходимы для разработки, а не для их запуска, а не если они необходимы для запуска приложения, выполните следующую команду:
Установка зависимостей
Некоторые модули не только предоставляют библиотеку для вас, но также предоставляют один или несколько двоичных файлов, которые предназначены для использования в командной строке. Хотя вы все равно можете устанавливать эти пакеты локально, часто рекомендуется устанавливать их в глобальном масштабе, чтобы инструменты командной строки могли быть включены. В этом случае npm автоматически свяжет двоичные файлы с соответствующими путями (например, /usr/local/bin/<name> ), чтобы их можно было использовать из командной строки. Чтобы установить пакет по всему миру, используйте:
Если вы хотите просмотреть список всех установленных пакетов и связанных с ними версий в текущей рабочей области, используйте:
Добавление необязательного аргумента имени может проверить версию определенного пакета.
Примечание. Если вы сталкиваетесь с проблемами разрешений при попытке установить модуль npm во всем мире, не поддавайтесь искушению выпустить sudo npm install -g . для решения проблемы. Предоставление сторонних скриптов для работы с вашей системой с повышенными привилегиями опасно. Проблема с разрешением может означать, что у вас возникла проблема с тем, как была установлена сама npm . Если вы заинтересованы в установке узла в изолированной среде, вы можете попробовать использовать nvm .
Если у вас есть инструменты для сборки или другие зависимости только для разработки (например, Grunt), вы можете не захотеть связать их с приложением, которое вы развертываете. Если это так, вы хотите, чтобы он был зависимым от разработки, который указан в package.json под devDependencies . Чтобы установить пакет как зависимость от разработки, используйте —save-dev (или -D ).
Вы увидите, что пакет затем добавляется в devDependencies вашего package.json .
Чтобы установить зависимости загруженного / клонированного проекта node.js, вы можете просто использовать
npm автоматически считывает зависимости от package.json и устанавливает их.
NPM за прокси-сервером
Если ваш интернет-доступ через прокси-сервер, вам может потребоваться изменить команды установки npm, которые будут обращаться к удаленным репозиториям. npm использует файл конфигурации, который может быть обновлен через командную строку:
Вы можете найти свои настройки прокси на панели настроек вашего браузера. После того, как вы получили настройки прокси-сервера (URL-адрес сервера, порт, имя пользователя и пароль); вам необходимо настроить конфигурацию npm следующим образом.
username , password , поля port являются необязательными. Как только вы их установили, ваша npm install , npm i -g и т. Д. npm i -g работать правильно.
Области и репозитории
Если имя вашего собственного пакета начинается с @myscope а область «myscope» связана с другим репозиторием, npm publish будет загружать ваш пакет в этот репозиторий.
Вы также можете сохранить эти настройки в файле .npmrc :
Это полезно при автоматизации сборки на CI-сервере fe
Удаление пакетов
Чтобы удалить один или несколько локально установленных пакетов, используйте:
Команда удаления для npm содержит пять псевдонимов, которые также можно использовать:
Если вы хотите удалить пакет из файла package.json как часть удаления, используйте флаг —save (стенограмма: -S ):
Для зависимостей разработки используйте флаг —save-dev (стенограмма: -D ):
Для дополнительной зависимости используйте флаг —save-optional (стенограмма: -O ):
Для пакетов, которые установлены глобально, используйте флаг —global (стенограмма: -g ):
Основные семантические версии
Перед публикацией пакета вам нужно его выпустить. npm поддерживает семантическое управление версиями , это означает, что есть патч, младший и основной релиз.
Например, если ваш пакет находится в версии 1.2.3 для изменения версии, вам необходимо:
- Патч релиз: npm version patch => 1.2.4
- младший выпуск: npm version minor => 1.3.0
- основной выпуск: npm version major => 2.0.0
Вы также можете указать версию напрямую:
npm version 3.1.4 => 3.1.4
Когда вы устанавливаете версию пакета с помощью одной из приведенных выше команд npm, npm изменяет поле версии файла package.json, фиксирует его, а также создает новый тег Git с версией с префиксом «v», как если бы вы Выпустили команду:
В отличие от других менеджеров пакетов, таких как Bower, реестр npm не полагается на теги Git, которые создаются для каждой версии. Но, если вам нравится использовать теги, вы должны помнить о том, чтобы нажимать вновь созданный тег после нападания на версию пакета:
git push origin master (нажать на изменение package.json)
git push origin v3.1.4 (нажать новый тег)
Или вы можете сделать это одним махом:
git push origin master —tags
Настройка конфигурации пакета
Конфигурации пакетов Node.js содержатся в файле package.json который вы можете найти в корне каждого проекта. Вы можете настроить новый файл конфигурации, вызвав:
Это попытается прочитать текущую рабочую директорию для информации репозитория Git (если она существует) и переменных среды, чтобы попытаться автозаполнять некоторые из значений placeholder для вас. В противном случае он предоставит диалоговое окно ввода для основных параметров.
Если вы хотите создать package.json со значениями по умолчанию, используйте:
Если вы создаете package.json для проекта, который вы не собираетесь публиковать в виде пакета npm (т. Е. Исключительно для округления ваших зависимостей), вы можете передать это намерение в файле package.json :
- При желании для private публикации запрещается публикация private собственности.
- Необязательно установите для свойства license значение «НЕИЗВЕСТНОЕ», чтобы лишить других права использовать ваш пакет.
Чтобы установить пакет и автоматически сохранить его в package.json , используйте:
Пакет и связанные метаданные (например, версия пакета) будут отображаться в ваших зависимостях. Если вы сохраните, если в качестве зависимости развития (используя —save-dev ) пакет вместо этого появится в ваших devDependencies .
С помощью этого bare-bones package.json вы будете сталкиваться с предупреждающими сообщениями при установке или обновлении пакетов, сообщая вам, что вам не хватает описания и поля репозитория. Хотя безопасно игнорировать эти сообщения, вы можете избавиться от них, открыв package.json в любом текстовом редакторе и добавив следующие строки к объекту JSON:
Публикация пакета
Во-первых, убедитесь, что вы настроили свой пакет (как указано в разделе «Настройка конфигурации пакета» ). Затем вы должны войти в npmjs.
Если у вас уже есть пользователь npm
Если у вас нет пользователя
Чтобы проверить, что ваш пользователь зарегистрирован в текущем клиенте
После этого, когда ваш пакет готов к публикации, используйте
Если вам нужно опубликовать новую версию, убедитесь, что вы обновили версию своего пакета, как указано в Basic semantic versioning . В противном случае npm не позволит вам публиковать пакет.
Запуск скриптов
Вы можете определить скрипты в вашем package.json , например:
Чтобы запустить echo скрипт, запустите npm run echo из командной строки. Произвольные сценарии, такие как echo выше, должны выполняться с npm run <script name> . npm также имеет ряд официальных сценариев, которые он запускает на определенных этапах жизни пакета (например, preinstall ). См. Здесь полный обзор того, как npm обрабатывает поля сценария.
Скрипты npm используются чаще всего для таких вещей, как запуск сервера, построение проекта и запуск тестов. Вот более реалистичный пример:
В записях scripts командной строки, такие как mocha будут работать, если они установлены либо глобально, либо локально. Если запись в командной строке не существует в системе PATH, npm также проверит ваши локально установленные пакеты.
Если ваши скрипты становятся очень длинными, их можно разбить на части, например:
Удаление посторонних пакетов
Для удаления посторонних пакетов (пакетов, которые установлены, но не в списке зависимостей) выполните следующую команду:
Чтобы удалить все пакеты dev добавьте флаг —production :
Список установленных пакетов
Чтобы создать список (древовидное представление) установленных пакетов, используйте
ls , la и ll — это псевдонимы команды списка . Команды la и ll показывают расширенную информацию, такую как описание и репозиторий.
Опции
Формат ответа можно изменить, передав параметры.
- json — отображает информацию в формате json
- long — показывает расширенную информацию
- parseable — показывает список синтаксического анализа вместо дерева
- global — показывает глобально установленные пакеты
- depth — максимальная глубина отображения дерева зависимостей
- dev / development — показывает devDependencies
- prod / production — Показывает зависимости
Если вы хотите, вы также можете перейти на домашнюю страницу пакета.
Обновление npm и пакетов
Поскольку сам npm является модулем Node.js, он может быть обновлен с использованием самого себя.
Если ОС — это Windows, необходимо запустить командную строку в качестве администратора
Если вы хотите проверить обновленные версии, вы можете:
Чтобы обновить конкретный пакет:
Это обновит пакет до последней версии в соответствии с ограничениями в package.json
Если вы также хотите заблокировать обновленную версию в package.json:
Блокировка модулей для определенных версий
По умолчанию npm устанавливает последнюю доступную версию модулей в соответствии с семантической версией каждой зависимости. Это может быть проблематично, если автор модуля не придерживается semver и, например, вносит изменения в обновление модуля.
Чтобы заблокировать каждую версию зависимостей (и версии их зависимостей и т. Д.) Для конкретной версии, установленной локально в папке node_modules , используйте
Затем будет создан npm-shrinkwrap.json вместе с вашим package.json котором перечислены конкретные версии зависимостей.
Настройка для общедоступных пакетов
Вы можете использовать npm install -g для установки пакета «глобально». Обычно это делается для установки исполняемого файла, который вы можете добавить к своему пути для запуска. Например:
Если вы обновите свой путь, вы можете вызвать gulp напрямую.
Во многих ОС npm install -g попытается записать в каталог, который ваш пользователь может не написать, например, /usr/bin . Вы не должны использовать sudo npm install в этом случае, так как существует вероятность угрозы выполнения произвольных скриптов с помощью sudo и пользователь root может создавать каталоги в вашем доме, которые вы не можете записать, что затрудняет будущие установки.
Вы можете указать npm где устанавливать глобальные модули через ваш конфигурационный файл
/.npmrc . Это называется prefix который можно просмотреть с npm prefix .
Это будет использовать префикс всякий раз, когда вы запускаете npm install -g . Вы также можете использовать npm install —prefix
/.npm-global-modules чтобы установить префикс при установке. Если префикс совпадает с вашей конфигурацией, вам не нужно использовать -g .
Чтобы использовать глобально установленный модуль, он должен быть на вашем пути:
Теперь, когда вы запускаете npm install -g gulp-cli вы сможете использовать gulp .
Примечание. Когда вы npm install (без -g ), префикс будет каталогом с package.json или текущим каталогом, если нигде не найдено в иерархии. Это также создает каталог node_modules/.bin который имеет исполняемые файлы. Если вы хотите использовать исполняемый файл, специфичный для проекта, нет необходимости использовать npm install -g . Вы можете использовать его в node_modules/.bin .
Связывание проектов для более быстрой отладки и разработки
Построение зависимостей проекта иногда может быть утомительной задачей. Вместо публикации версии пакета для NPM и установки зависимости для проверки изменений используйте npm link . npm link создает символическую ссылку, поэтому последний код может быть протестирован в локальной среде. Это упрощает тестирование глобальных инструментов и зависимостей проектов, позволяя запустить последний код перед выпуском опубликованной версии.
Текст справки
Шаги для связывания зависимостей проекта
При создании ссылки зависимостей обратите внимание, что имя пакета — это то, что будет указано в родительском проекте.
- CD в каталог зависимостей (например: cd ../my-dep )
- npm link
- CD в проект, который будет использовать зависимость
- npm link my-dep или если namespaced npm link @namespace/my-dep
Шаги по связыванию глобального инструмента
- CD в каталог проекта (например: cd eslint-watch )
- npm link
- Использовать инструмент
- esw —quiet
Проблемы, которые могут возникнуть
Связывание проектов иногда может вызывать проблемы, если уже установлена зависимость или глобальный инструмент. npm uninstall (-g) <pkg> а затем запуск npm link обычно разрешает любые проблемы, которые могут возникнуть.
The Complete Guide To Npm
Npm (Node package manager) is the standard package manager of the Node.js ecosystem. It’s the most extensive online package repository, containing over one-million packages. Also, it’s a command-line interface tool used by developers to manage their Node.js projects. Developers all around the world use npm to share their software. React, Vue, Express, and Angular are some great examples.
Npm for dummies
This section is for explaining npm using analogies. You can skip if you understand the concept of software packages.
Let’s say that you want to build a laptop. Would you create the CPU, RAM, screen, software, cameras, by yourself? No. You would probably order most of the parts from different manufacturers (Snapdragon, AMD, Intel, etc.). Instead of creating everything from scratch, you use various components made by separate entities. This is essentially the goal of software packages. There is no need for every back-end developer to create a framework to handle HTTP requests; indeed, most developers use existing frameworks like Express, Fastify, Meteor, etc.
Real-life example
Gatsby (static React site generator) depends on Express.
Express depends on cookie.
Cookie doesn’t depend on any library (uses plain javascript).
Stats
Npm is used tremendously by the community. The graph below depicts the number of downloads every day in the past two years for the most popular web frameworks.
package.json
A standard Node.js project contains a file called package.json. It is a JSON manifest file which holds all of the relevant data to the app. Just like the manager of a restaurant who holds information about the restaurant, the workers, and the different vendors.
Here is how a short basic package.json looks like:
name, author, license, description — Important if you want to publish your repository.
Version — If you are maintaining an open-source npm package, you should update it according to the semantic conventions. 3.7.2– 3 is the major version, 7 is the minor version, and 2 is the patch.
scripts
Here we put out project’s scripts: building, testing, linting, deploying, etc. Each project can have custom-made scripts adapted for a unique use-case. Custom scripts can be added and used by developers to enhance development capabilities. For example, executing end-to-end tests in a specific directory.
dependencies
Required for building the project. They are specified in a simple object that maps a package name to a version range. The version range is a string that complies with a specific syntax.
devDependencies
The dependencies needed only for the development of the project but not for building it. For example, testing frameworks are not bundled into the final code build but are used only in development.
package-lock.json
package-lock.json is generated automatically for any operations where npm modifies either the node_modules tree, or package.json . It describes the exact tree that was generated, such that subsequent installs can generate identical trees. This is used to save an exact copy of the packages to ensure that the program works the same on different machines.
This file is intended to be committed into source repositories, and serves various purposes:
- Describe a single representation of a dependency tree such that teammates, deployments, and continuous integration are guaranteed to install the same dependencies.
- Keeps the exact state of node_modules in the project without the need to commit the whole node_modules folder into the source control.
node_modules
When you run npm install, npm installs the required packages into your project root directory in a folder called node_modules . The folder's size is usually above 150Mb for large projects, and it's a major headache for developers who have many projects.
npm can install packages in local or global mode. If the flag -g is used, npm installs the package into the current user’s root directory. To find globally installed npm modules in windows, open the windows search, and type %appdata%. There is a folder named npm — the global packages reside there.
When installing packages globally, we install them per user and not per project. There are cases when this is not advised, such as working on multiple projects with different versions of the same package — for example, working with Angular 5 and Angular 9.
Npm commands
Installing project dependencies
npm can install all the dependencies of a project in a single command. This command is usually used when we clone a new project.
The script will always install dependencies according to the current package.json. If the specifications change and you run the command again, it will install packages according to the new specifications.
Executing a script
npm run script_name where the script name is defined in the package.json (build, test:e2e, etc.).
Installing a dev dependency
npm install jest -D -D saves the package as a dev dependency and doesn't bundle it in the build.
List global packages
Shows us all of the global packages for the current user.
npm list —globalWe can’t talk about npm without mentioning Yarn. Yarn is an alternative client created by Facebook engineers. It is important to note that Yarn is not a different repository for storing node packages, but a different client to handle the work with the repository.
if0rest / npm.md
Флаг —save-dev или -D позволяет установить пакет и добавить запись о нём в раздел, содержащий перечень зависимостей разработки (то есть — пакетов, которые нужны в ходе разработки проекта, вроде библиотек для тестирования, но не требуются для его работы) файла package.json, который называется devDependencies.
- dependencies — содержит список npm-пакетов, от которых зависит приложение.
- devDependencies — содержит список npm-пакетов, используемых при разработке проекта, но не при его реальной работе.
Ключ -g говорит о том, что пакет установится в систему глобально, то-есть в систему, а не в папку проекта.
Файл package.json является файлом манифеста нашего проекта, который описывает помимо той информации, что мы внесли в терминале, еще и информацию об используемых пакетах в нашем проекте.
Например, если мы установим в проект Gulp с ключом —save-dev, то пакет и используемая версия автоматически добавится в наш package.json. Такой учет позволит быстро разворачивать новый проект с использованием уже имеющегося package.json и устанавливать необходимые модули с зависимостями, которые прописаны в package.json в новых проектах.
Получив эту команду, npm проверит все пакеты на наличие их новых версий, и, если найдёт их новые версии, соответствующие ограничениям на версии пакетов, заданным в package.json, установит их.
Даже если, следуя правилам семантического версионирования, минорные релизы и патч-релизы не должны содержать в себе изменений, препятствующих обратной совместимости, все мы знаем, что ошибки способны проникать (и проникают) куда угодно.
ВЫЯСНЕНИЕ ВЕРСИЙ УСТАНОВЛЕННЫХ NPM-ПАКЕТОВ
Узнать версии всех установленных в папке проекта npm-пакетов, включая их зависимости:
То же самое можно узнать и просмотрев файл package-lock.json проекта, но древовидную структуру, которую выводит вышеописанная команда, удобнее просматривать.
Вывести только сведения о локальных пакетах верхнего уровня (которые устанавливали самостоятельно и которые перечислены в package.json):
npm list —depth=0
Узнать версию конкретного пакета:
npm list cowsay
Узнать номер самой свежей версии некоего пакета, доступного в npm-репозитории:
npm view <package> version
Узнать, какие версии некоего пакета имеются в npm:
npm view <package> versions
Узнать, вышли ли новые версии используемых пакетов:
УСТАНОВКА СТАРЫХ ВЕРСИЙ NPM-ПАКЕТОВ
Установить нужную версию пакета из npm можно, воспользовавшись следующей конструкцией:
npm install <package>@<version>
Указывать версии можно и устанавливая глобальные пакеты:
npm install -g webpack@4.16.4
Когда вы устанавливаете пакет командой вида npm install <packagename> , из репозитория загружается самая свежая из доступных версий и помещается в папку node_modules. При этом соответствующие записи добавляются в файлы package.json и package-lock.json, находящиеся в папке проекта.
Правило обновления пакета в виде ^1.3.1 означает, что npm может обновлять пакет при выходе его минорных и патч-версий.
АНАЛИЗ УСТАРЕВШИХ ЗАВИСИМОСТЕЙ ПРОЕКТА
Некоторые из доступных обновлений пакетов представляют собой их мажорные релизы, обновления до которых не произойдёт при выполнении команды npm update. Обновление до мажорных релизов этой командой не производится, так как они (по определению) могут содержать серьёзные изменения, не отличающиеся обратной совместимостью с предыдущими мажорными релизами. Для того чтобы обновиться до новых мажорных версий всех используемых пакетов, глобально установите пакет npm-check-updates :
npm install -g npm-check-updates
Затем запустите утилиту, предоставляемую им:
Эта команда обновит файл package.json, внеся изменения в указания о подходящих версиях пакетов в разделы dependencies и devDependencies. Это позволит npm обновить пакеты, используемые в проекте, до новых мажорных версий после запуска команды npm update . Если вы хотите установить самые свежие версии пакетов для только что только что загруженного проекта, в котором пока нет папки node_modules, то, вместо npm update , выполните команду npm install .
КАКОЙ СПОСОБ УСТАНОВКИ ПАКЕТОВ ЛУЧШЕ ИСПОЛЬЗОВАТЬ: ЛОКАЛЬНЫЙ ИЛИ ГЛОБАЛЬНЫЙ?
В общем случае, все пакеты следует устанавливать локально. Благодаря этому, даже если у вас имеются десятки nodejs-проектов, можно обеспечить, при необходимости, использование ими различных версий одних и тех же пакетов. Обновление глобального пакета приводит к тому, что все проекты, в которых он применяется, будут использовать его новый релиз. Несложно понять, что это, в плане поддержки проектов, может привести к настоящему кошмару, так как новые релизы некоторых пакетов могут оказаться несовместимыми с их старыми версиями.
Пакеты следует устанавливать глобально, когда они представляют собой некие утилиты, вызываемые из командной строки, которые используются во множестве проектов. Подобные пакеты можно устанавливать и локально, запуская предоставляемые ими утилиты командной строки с использованием npx, но некоторые пакеты, всё же, лучше устанавливать глобально. Например, следующие:
- npm
- create-react-app
- vue-cli
- grunt-cli
- mocha
- react-native-cli
- gatsby-cli
- forever
- nodemon
Не исключено, что в вашей системе уже имеются пакеты, установленные глобально. Для того чтобы об этом узнать, воспользуйтесь следующей командой:
npm list -g —depth 0
О ЗАВИСИМОСТЯХ ПРОЕКТОВ
Когда пакет следует рассматривать как обычную зависимость проекта, необходимую для обеспечения его функционирования, а когда — как зависимость разработки?
При установке пакета с помощью команды вида npm install <package-name> он устанавливается как обычная зависимость. Запись о таком пакете делается в разделе dependencies файла package.json. Использование флага —save-dev позволяет установить пакет как зависимость разработки. Запись о нём при этом делается в разделе devDependencies файла package.json. Зависимости разработки — это пакеты, которые нужны в процессе разработки проекта, в ходе его обычного функционирования они не требуются. К таким пакетам относятся, например инструменты тестирования, Webpack, Babel. Когда проект разворачивают, используя команду npm install в его папке, в которой имеется папка, содержащая файл package.json, это приведёт к установке всех зависимостей, так как npm предполагает, что подобная установка выполняется для целей работы над проектом. Поэтому, если пакет требуется развернуть в продакшне, то, при его развёртывании, нужно использовать команду npm install —production Благодаря флагу —production зависимости разработки устанавливаться не будут.
Сейчас мы поговорим об одной весьма мощной команде, npx , которая появилась в npm 5.2. Одной из её возможностей является запуск исполняемых файлов, входящих в состав npm-пакетов. Мы уже рассматривали использование npx для запуска подобного файла из пакета cowsay. Теперь поговорим об этом подробнее.