Install version npm: node.js — How to install a previous exact version of a NPM package?
NPM: установка определенной версии пакета
NPM или Node Package Manager — это мощный инструмент, который позволяет вам легко управлять зависимостями, запускать сценарии и организовывать метаданные проекта. Однако его основная цель — помочь вам загрузить и установить пакеты Node из своего репозитория в ваш проект.
Загрузка и установка пакета выполняется с помощью команды NPM install
:
$ npm install express
+ [email protected]
added 50 packages from 37 contributors and audited 126 packages in 3.262s
found 0 vulnerabilities
Когда вы выполняете команду install
, подобную этой, по умолчанию она получает последнюю версию указанного пакета, которая в данном случае v4.17.1 (на момент написания этой статьи).
Но что, если нам нужна другая версия? Возможно, эта последняя версия нарушает нужную нам функцию, или, может быть, в ней есть уязвимость безопасности, которую разработчик еще не удосужился исправить. В таких случаях вы, вероятно, захотите установить конкретную версию пакета, который, как вы знаете, работает или который, как вы знаете, «безопасен».
Для этого мы можем указать версию, используя синтаксис npm install [package]@[version]
. Продолжая наш пример выше, мы выполнили бы что-то вроде этого:
$ npm install [email protected]
+ [email protected]
added 48 packages from 36 contributors and audited 121 packages in 2.986s
found 0 vulnerabilities
Как видите, NPM установил указанный нами пакет.
С NPM у нас также есть другие варианты для указания версии пакета. Используя каретку (^
) или тильду (~
), мы можем указать последнюю минорную версию или версию патча соответственно. Таким образом, вы можете указать совместимую версию пакета, но все равно получите самую последнюю версию.
Так, например, если вы хотите использовать Express версию 4.16, но версия патча не важна, вы можете использовать тильду, чтобы сообщить NPM и получить последнюю версию патча:
$ npm install express@~4.16.1
+ [email protected]
added 48 packages from 36 contributors and audited 121 packages in 3.02s
found 0 vulnerabilities
Так как мы добавили префикс к версии ~
, NPM получил последнюю версию патча под второстепенной версией 4.16, которая оказалась 4.16.4.
Это хорошо, когда вам не нужна конкретная версия, но вы хотите постоянно обновлять свои зависимости с помощью последних исправлений и исправлений уязвимостей.
npm и npx / Блог компании RUVDS.com / Хабр
Сегодня, в пятой части перевода руководства по Node.js, мы завершим разбор возможностей npm, в частности, коснёмся таких вопросов, как выяснение установленных версий npm-пакетов, установка старых версий пакетов, обновление зависимостей, локальная и глобальная деинсталляция пакетов. Здесь же мы поговорим и об npx.
[Советуем почитать] Другие части циклаЧасть 1: Общие сведения и начало работы
Часть 2: JavaScript, V8, некоторые приёмы разработки
Часть 3: Хостинг, REPL, работа с консолью, модули
Часть 4: npm, файлы package.json и package-lock.json
Часть 5: npm и npx
Часть 6: цикл событий, стек вызовов, таймеры
Часть 7: асинхронное программирование
Часть 8: Руководство по Node.js, часть 8: протоколы HTTP и WebSocket
Часть 9: Руководство по Node.js, часть 9: работа с файловой системой
Часть 10: Руководство по Node.js, часть 10: стандартные модули, потоки, базы данных, NODE_ENV
Полная PDF-версия руководства по Node.js
Выяснение версий установленных npm-пакетов
Для того чтобы узнать версии всех установленных в папке проекта npm-пакетов, включая их зависимости, выполните следующую команду:
npm list
В результате, например, может получиться следующее:
> npm list
/Users/flavio/dev/node/cowsay
└─┬ [email protected]
├── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
└── [email protected]
То же самое можно узнать и просмотрев файл package-lock.json
проекта, но древовидную структуру, которую выводит вышеописанная команда, удобнее просматривать.
Для того чтобы получить подобный список пакетов, установленных глобально, можно воспользоваться следующей командой:
npm list -g
Вывести только сведения о локальных пакетах верхнего уровня (то есть, тех, которые вы устанавливали самостоятельно и которые перечислены в package.json
) можно так:
npm list --depth=0
В результате, если, например, устанавливали вы только пакет cowsay, выведено будет следующее:
> npm list --depth=0
/Users/flavio/dev/node/cowsay
└── [email protected]
Для того чтобы узнать версию конкретного пакета, воспользуйтесь следующей командой:
npm list cowsay
В результате её выполнения получится примерно следующее:
> npm list cowsay
/Users/flavio/dev/node/cowsay
└── [email protected]
Эта команда подходит и для выяснения версий зависимостей установленных вами пакетов. При этом в качестве имени пакета, передаваемого ей, выступает имя пакета-зависимости, а вывод команды будет выглядеть следующим образом:
> npm list minimist
/Users/flavio/dev/node/cowsay
└─┬ [email protected]
└─┬ [email protected]
└── [email protected]
Запись о пакете-зависимости в этой структуре будет выделена.
Если вы хотите узнать о том, каков номер самой свежей версии некоего пакета, доступного в npm-репозитории, вам понадобится команда следующего вида:
npm view [package_name] version
В ответ она выдаёт номер версии пакета:
> npm view cowsay version
1.3.1
Установка старых версий npm-пакетов
Установка старой версии npm-пакета может понадобиться для решения проблем совместимости. Установить нужную версию пакета из npm можно, воспользовавшись следующей конструкцией:
npm install <package>@<version>
В случае с используемым нами в качестве примера пакетом cowsay, команда npm install cowsay
установит его самую свежую версию (1.3.1 на момент написания этого материала). Если же надо установить его версию 1.2.0, воспользуемся такой командой:
npm install [email protected]
Указывать версии можно и устанавливая глобальные пакеты:
npm install -g [email protected]
Если вам понадобится узнать о том, какие версии некоего пакета имеются в npm, сделать это можно с помощью такой конструкции:
npm view <package> versions
Вот пример результата её работы:
> npm view cowsay versions
[ '1.0.0',
'1.0.1',
'1.0.2',
'1.0.3',
'1.1.0',
'1.1.1',
'1.1.2',
'1.1.3',
'1.1.4',
'1.1.5',
'1.1.6',
'1.1.7',
'1.1.8',
'1.1.9',
'1.2.0',
'1.2.1',
'1.3.0',
'1.3.1' ]
Обновление зависимостей проекта до их самых свежих версий
Когда вы устанавливаете пакет командой вида npm install <packagename>
, из репозитория загружается самая свежая из доступных версий и помещается в папку node_modules
. При этом соответствующие записи добавляются в файлы package.json
и package-lock.json
, находящиеся в папке проекта.
Кроме того, устанавливая некий пакет, npm находит и устанавливает его зависимости.
Предположим, мы устанавливаем уже знакомый вам пакет cowsay, выполняя команду npm install cowsay
. Пакет будет установлен в папку node_modules
проекта, а в файл package.json
попадёт следующая запись:
{
"dependencies": {
"cowsay": "^1.3.1"
}
}
В package-lock.json
так же будут внесены сведения об этом пакете. Вот его фрагмент:
{
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"cowsay": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/cowsay/-/cowsay-1.3.1.tgz",
"integrity": "sha512-3PVFe6FePVtPj1HTeLin9v8WyLl+VmM1l1H/5P+BTTDkMAjufp+0F9eLjzRnOHzVAYeIYFF5po5NjRrgefnRMQ==",
"requires": {
"get-stdin": "^5.0.1",
"optimist": "~0.6.1",
"string-width": "~2.1.1",
"strip-eof": "^1.0.0"
}
}
}
}
Из этих двух файлов можно узнать, что мы установили cowsay версии 1.3.1, и то, что правило обновления пакета указано в виде ^1.3.1
. В четвёртой части этой серии материалов мы уже говорили о правилах семантического версионирования. Напомним, что такая запись означает, что npm может обновлять пакет при выходе его минорных и патч-версий.
Если, например, выходит новая минорная версия пакета и мы выполняем команду npm update
, то обновляется установленная версия пакета и при этом сведения об установленном пакете обновляются в файле package-lock.json
, а файл package.json
остаётся неизменным.
Для того чтобы узнать, вышли ли новые версии используемых в проекте пакетов, можно воспользоваться следующей командой:
npm outdated
Вот результаты выполнения этой команды для проекта, зависимости которого давно не обновлялись:
Анализ устаревших зависимостей проекта
Некоторые из доступных обновлений пакетов представляют собой их мажорные релизы, обновления до которых не произойдёт при выполнении команды npm update
. Обновление до мажорных релизов этой командой не производится, так как они (по определению) могут содержать серьёзные изменения, не отличающиеся обратной совместимостью с предыдущими мажорными релизами, а npm стремится избавить разработчика от проблем, которые может вызвать использование подобных пакетов.
Для того чтобы обновиться до новых мажорных версий всех используемых пакетов, глобально установите пакет npm-check-updates
:
npm install -g npm-check-updates
Затем запустите утилиту, предоставляемую им:
ncu -u
Эта команда обновит файл package.json
, внеся изменения в указания о подходящих версиях пакетов в разделы dependencies
и devDependencies
. Это позволит npm обновить пакеты, используемые в проекте, до новых мажорных версий после запуска команды npm update
.
Если вы хотите установить самые свежие версии пакетов для только что только что загруженного проекта, в котором пока нет папки node_modules
, то, вместо npm update
, выполните команду npm install
.
Локальная или глобальная деинсталляция пакетов
Для того чтобы деинсталлировать пакет, ранее установленный локально (с использованием команды install <package-name>
), выполните команду следующего вида:
npm uninstall <package-name>
Если пакет установлен глобально, то для его удаления нужно будет воспользоваться флагом -g
(--global
). Например, подобная команда может выглядеть так:
npm uninstall -g webpack
При выполнении подобной команды текущая папка значения не имеет.
О выборе между глобальной и локальной установкой пакетов
Когда и почему пакеты лучше всего устанавливать глобально? Для того чтобы ответить на этот вопрос, вспомним о том, чем различаются локальная и глобальная установка пакетов:
- Локальные пакеты устанавливаются в директорию, в которой выполняют команду вида
npm install <package-name>
. Такие пакеты размещаются в папкеnode_modules
, находящейся в этой директории. - Глобальные пакеты устанавливаются в особую папку (в какую точно — зависит от конкретных настроек вашей системы) вне зависимости от того, где именно выполняют команду вида
npm install -g <package-name>
.
Подключение локальных и глобальных пакетов в коде осуществляется одинаково:
require('package-name')
Итак, какой же способ установки пакетов лучше всего использовать?
В общем случае, все пакеты следует устанавливать локально. Благодаря этому, даже если у вас имеются десятки Node.js-проектов, можно обеспечить, при необходимости, использование ими различных версий одних и тех же пакетов.
Обновление глобального пакета приводит к тому, что все проекты, в которых он применяется, будут использовать его новый релиз. Несложно понять, что это, в плане поддержки проектов, может привести к настоящему кошмару, так как новые релизы некоторых пакетов могут оказаться несовместимыми с их старыми версиями.
Если у каждого проекта имеется собственная локальная версия некоего пакета, даже при том, что подобное может показаться пустой тратой ресурсов, это — очень небольшая плата за возможность избежать негативных последствий, которые могут быть вызваны несовместимостью новых версий пакетов, обновляемых централизованно, с кодом проектов.
Пакеты следует устанавливать глобально в том случае, когда они представляют собой некие утилиты, вызываемые из командной строки, которые используются во множестве проектов.
Подобные пакеты можно устанавливать и локально, запуская предоставляемые ими утилиты командной строки с использованием 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
(до выхода npm 5 такая запись делалась только при использовании флага --save
, теперь использовать его для этого необязательно).
Использование флага --save-dev
позволяет установить пакет как зависимость разработки. Запись о нём при этом делается в разделе devDependencies
файла package.json
.
Зависимости разработки — это пакеты, которые нужны в процессе разработки проекта, в ходе его обычного функционирования они не требуются. К таким пакетам относятся, например инструменты тестирования, Webpack, Babel.
Когда проект разворачивают, используя команду npm install
в его папке, в которой имеется папка, содержащая файл package.json
, это приведёт к установке всех зависимостей, так как npm предполагает, что подобная установка выполняется для целей работы над проектом.
Поэтому, если пакет требуется развернуть в продакшне, то, при его развёртывании, нужно использовать команду npm install --production
. Благодаря флагу --production
зависимости разработки устанавливаться не будут.
Утилита npx
Сейчас мы поговорим об одной весьма мощной команде, npx, которая появилась в npm 5.2. Одной из её возможностей является запуск исполняемых файлов, входящих в состав npm-пакетов. Мы уже рассматривали использование npx для запуска подобного файла из пакета cowsay. Теперь поговорим об этом подробнее.
▍Использование npx для упрощения запуска локальных команд
Node.js-разработчики опубликовали множество исполняемых файлов (утилит) в виде пакетов, которые предполагалось устанавливать глобально, что обеспечивало удобный доступ к их возможностям, так как запускать их из командной строки можно было, просто введя имя соответствующей команды. Однако работать в такой среде было весьма некомфортно в том случае, если требовалось устанавливать разные версии одних и тех же пакетов.
Применение команды вида npx commandname
приводит к автоматическому поиску нужного файла в папке проекта node_modules
. Это избавляет от необходимости знания точного пути к подобному файлу. Так же это делает ненужной глобальную установку пакета с обеспечением доступа к нему из любого места файловой системы благодаря использованию системной переменной PATH
.
▍Выполнение утилит без необходимости их установки
В npx имеется ещё одна интереснейшая возможность, благодаря которой утилиты можно запускать без их предварительной установки. Полезно это, в основном, по следующим причинам:
- Не требуется установка утилит.
- Можно запускать разные версии одних и тех же утилит, указывая нужную версию с помощью конструкции
@version
.
Посмотрим на то, как пользоваться этим механизмом, на примере уже известной вам утилиты cowsay
. Так, если пакет cowsay установлен глобально, выполнение в командной строке команды cowsay "Hello"
приведёт к выводу в консоль «говорящей» коровы:
_______
< Hello >
-------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Если же пакет cowsay не будет установлен глобально, подобная команда выдаст ошибку.
Утилита npx позволяет выполнять подобные команды без их установки. Выглядит это, в рамках нашего примера, так:
npx cowsay "Hello"
Такая команда сработает, но, хотя «говорящая» корова, по большому счёту, особой пользы не приносит, тот же самый подход можно использовать и для выполнения куда более полезных команд. Вот несколько примеров:
- Существует инструмент командной строки, предназначенный для создания и запуска Vue-приложений. С использованием npx его можно вызвать так:
npx vue create my-vue-app
. - Для создания React-приложений можно пользоваться утилитой
create-react-app
. Её вызов через npx выглядит так:npx create-react-app my-react-app
.
После загрузки и использования соответствующего кода npx его удалит.
▍Запуск JavaScript-кода с использованием различных версий Node.js
Для того чтобы запускать некий код с использованием разных версий Node.js, можно, с использованием npx, обращаться к npm-пакету node
, указывая его версию. Выглядит это так:
npx node@6 -v #v6.14.3
npx node@8 -v #v8.11.3
Это позволяет отказаться от использования инструментов наподобие nvm или других менеджеров версий Node.js.
▍Запуск произвольных фрагментов кода, доступных по некоему адресу
Npx позволяет запускать не только код, опубликованный в npm. В частности, если у вас есть ссылка на некий фрагмент кода (скажем, опубликованного на GitHub gist), запустить его можно так:
npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32
Конечно, при выполнении подобного кода нельзя забывать о безопасности. Npx даёт в руки разработчика большие возможности, но они означают и большую ответственность.
▍Итоги
Сегодня мы поговорили о некоторых полезных механизмах npm и об использовании npx. На данном этапе у вас должно сложиться базовое понимание устройства npm и методов работы с этим пакетным менеджером. Если вы хотите более глубоко изучить npm — обратитесь к странице документации проекта и побольше экспериментируйте.
В следующий раз мы обсудим некоторые базовые механизмы Node.js, понимание которых необходимо для успешной разработки приложений для этой платформы.
Уважаемые читатели! Пользуетесь ли вы npx?
Что такое npm? Гайд по Node Package Manager для начинающих
Программная платформа Node.js появилась в 2009 г., и с тех пор на ней были построены сотни тысяч приложений. Одной из причин успеха стал npm – популярный пакетный менеджер, позволяющий JS-разработчикам быстро делиться пакетами.
На момент написания статьи в npm содержится 1.3 млн пакетов с общим количеством скачиваний 16 млрд.
npm (Node Package Manager) – дефолтный пакетный менеджер для JavaScript, работающий на Node.js. Менеджер npm состоит из двух частей:
- CLI (интерфейс командной строки) – средство для размещения и скачивания пакетов,
- онлайн-репозитории, содержащие JS пакеты.
Структуру репозитория npmjs.com можно представить, как центр исполнения заказов, который получает товары (npm-пакеты) от продавцов (авторы пакетов) и распространяет эти товары среди покупателей (пользователи пакетов).
В центре исполнения заказов (npmjs.com) в качестве персональных менеджеров для каждого покупателя работает армия вомбатов (npm CLI
).
Зависимости поставляются следующим образом (Рис. 1).
Рис. 1. Процесс установки пакета через npm install
Процесс размещения пакета выглядит, как показано на Рис. 2.
Рис. 2. Процесс размещения пакета через npm publish
Теперь детально рассмотрим работу вомбатов.
1.1. Файл package.json
Каждый проект в JavaScript – будь то Node.js или веб-приложение – может быть скопирован? как npm-пакет с собственным описанием и файлом package.json
.
package.json
можно представить, как стикеры (список пакетов нужных версий) на npm-коробке (проект). Файл генерируется командой npm init
при создании JavaScript/Node.js проекта со следующими метаданными:
name
: название JS библиотеки/проекта.version
: версия проекта.description
: описание проекта.license
: лицензия проекта.
1.2. Скрипты npm
В package.json
включено поле scripts
для автоматизации сборки, например:
{
"scripts": {
"build": "tsc",
"format": "prettier --write **/*.ts",
"format-check": "prettier --check **/*.ts",
"lint": "eslint src/**/*.ts",
"pack": "ncc build",
"test": "jest",
"all": "npm run build && npm run format && npm run lint && npm run pack && npm test"
}
}
eslint
, prettier
, ncc
, jest
могут быть установлены глобально или локально для проекта внутри node_modules/.bin/
.
1.3. dependencies и devDependencies
dependencies
и devdependencies
представляют собой словари с именами npm-библиотек (ключ) и их семантические версии (значение). Пример из шаблона TypeScript Action:
{
"dependencies": {
"@actions/core": "^1.2.3",
"@actions/github": "^2.1.1"
},
"devDependencies": {
"@types/jest": "^25.1.4",
"@types/node": "^13.9.0",
"@typescript-eslint/parser": "^2.22.0",
"@zeit/ncc": "^0.21.1",
"eslint": "^6.8.0",
"eslint-plugin-github": "^3.4.1",
"eslint-plugin-jest": "^23.8.2",
"jest": "^25.1.0",
"jest-circus": "^25.1.0",
"js-yaml": "^3.13.1",
"prettier": "^1.19.1",
"ts-jest": "^25.2.1",
"typescript": "^3.8.3"
}
}
Эти зависимости устанавливаются командной npm install
с флагами --save
и --save-dev
. Они предназначены соответственно для использования в продакшене и разработке.
О версионировании:
^
: последний минорный релиз. Например,^1.0.4
установит версию1.3.0
, если это последний минорный релиз в серии1
мажорного релиза.~
: последний патч-релиз.~1.0.4
установит1.0.7
, если эта последняя минорная версия в серии минорных релизов1.0
.
Все версии пакетов будут отображены в сгенерированном файле package-lock.json
.
1.4. Файл package-lock.json
Файл package-lock.json
описывает версии пакетов, используемые в JavaScript-проекте. Если package.json
включает общее описание зависимостей (название товара), то package-lock.json
более детальный – всё дерево зависимостей.
package-lock.json
генерируется командой npm install
и читается npm CLI, чтобы обеспечить воспроизведение окружения для проекта через npm ci
.
Так как пользователи чаще скачивают пакеты (16 млрд скачиваний против 13 млн публикаций), хорошо бы разобраться, как их устанавливать.
2.1. npm install
npm install
– команда, устанавливающая пакеты.
По умолчанию npm install <package-name>
со знаком ^
установит последнюю версию пакета. npm install
скачает пакет в папку проекта node_modules
в соответствии с конфигурацией в файле package.json
, обновив версию пакета везде, где это возможно (и, в свою очередь, обновив package-lock.json
). При необходимости установки пакета глобально можно указать флаг -g
.
npm сделал установку пакетов JavaScript настолько простой, что команда часто используется некорректно и в сообществе разрабов появились мемы на эту тему:
Рис. 3. Мем про node_modules
При добавлении флага --production
установятся только нужные для работы приложения зависимости из dependencies
, не раздувая node_modules
.
2.2. npm ci
Если npm install --production
оптимален для продакшена, существует ли аналогичная команда для локальной разработки? Да, она называется npm ci
.
Как и раньше, если package-lock.json
еще не существует в проекте, он будет сгенерирован при вызове npm install
. npm ci
обращается к Lock-файлу для загрузки точной версии пакетов. Таким образом, на разных машинах набор пакетов останется неизменным.
2.3. npm audit
Чтобы избежать добавления в репозитории вредоносных пакетов, организация npm.js пришла к идее аудита экосистемы, создав модуль npm audit
. Он предоставляет информацию об уязвимостях в пакетах и о существовании версий с исправлениями.
Пример аудита для пакета static-eval
Если исправления доступны в следующих версиях пакета, npm audit fix
автоматически обновит версии затронутых зависимостей.
Перейдем от потребления пакетов к их размещению.
3.1. npm publish
Отправить пакет в npmjs.com очень просто – нужно набрать в консоли npm publish
. Важная часть, которой пренебрегают авторы – версионирование. Вот набор эмпирические правил semver.org, указывающих, когда следует увеличить номер версии:
- Мажорная версия: когда сделаны обратно несовместимые изменения API.
- Минорная версия: когда вы добавляете новую функциональность, не нарушая обратной совместимости.
- Патч-версия: когда вы делаете обратно совместимые исправления.
Еще более важно следовать вышеуказанным правилам при публикации собственных пакетов, чтобы гарантировать, что вы не нарушаете чью-либо совместимость, так как по умолчанию в npm берется версия ^
(следующая младшая версия).
В этой публикации мы познакомились со структурой npm и узнали:
- в каких файлах хранятся данные о зависимостях (
package.json
,package-lock.json
). - как установить пакеты в продакшен (
npm install
), на локальной машине (npm ci
) и провести аудит пакетов (npm audit
). - как добавить пакет в репозиторий (
npm publish
).
***
Если самостоятельная работа с npm-пакетами вызывает трудности, и вам требуется помощь наставника, мы советуем обратить внимание на курс факультета Веб-разработки GeekBrains, где вы получите готовую базу навыков и необходимую поддержку. Вы не только освоите работу с Node.js, но и научитесь целиком разрабатывать безопасные веб-приложения.
Курс поможет освоить профессию веб-разработчика, получить диплом и создать портфолио с рабочими проектами. В случае успешного прохождения команда университета поможет с трудоустройством. Ознакомиться с программой и отзывами можно, нажав расположенную ниже кнопку.
Как обновить npm и пакеты npm ? / Тяпк
Чтобы обновить нужный проект, выполните команду
npm update имя_пакета
Сама по себе такая комада редка нужна. Чаще нужно обновить npm пакеты проекта за записью новых версий в package.json, для этого в корневой директории проекта выполните команду
npm update --save
Как всегда, есть нюанс. Update обновляет пакеты в соответствии с записями из package.json
, поэтому надо учитавать знаки больше/меньше, тильды, крышки и равно. Если пакет задан как = 1.0.67, то npm update
его не обновит.
Если нужно поставить версии пакетов, отличные от записей в package.json, то следует воспользоваться командой npm install
Пара примеров, обновим глабально Angular CLI и Storybook CLI
npm update -g @angular/cli
npm update @storybook/cli -g
Обновим npm через npm в рамках минорной версии
npm update npm -g
Обновим npm через npm с переходом на последнюю мажорную версию
npm install npm -g
Обновление npm на windows 10
На windows есть определённые проблемы с обновлением, если npm установлен вместе с nodejs. В этом случае лучше воспользоваться npm-windows-upgrade. Правая кнопка мыши по меню «Пуск» -> запуск консоли от имени администратора.
Далее следует ввести 3 команды и следовать инструкциям
Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
npm install -g npm-windows-upgrade
npm-windows-upgrade
Дополнительная информация
Посмотреть версию установленного пакета
npm list <имя_пакета>
Посмотреть устаревшие пакеты
npm outdated --depth=0
Посмотреть последнюю версию пакета в репозитарии npm (которая устанавливается по npm i
)
npm view <имя_пакета> version
Например, посмотреть версию последней альфы Storybook CLI
npm view @storybook/cli@alpha version
Официальная документация по теме
NPM: Как установить определенную версию модуля
Новички в Node и NPM часто спрашивают, как установить определенную версию определенного пакета NPM. Есть несколько способов добиться этого. Во-первых, давайте начнем с базового синтаксиса NPM CLI:
npm установить lodash
Эта команда устанавливает lodash
в текущую папку и получает последнюю доступную версию.
Если вам известна точная версия пакета , вы можете добавить ее к имени пакета после символа @ :
npm установить lodash @ 4.4.0.0
Эта команда установит последнюю версию 4.x.x. Вы можете узнать больше о синтаксисе семантического управления версиями на docs.npmjs.com.
Оба вышеупомянутых примера не изменяют package.json и не добавляют установленные модули в список зависимостей. Используйте --save
, чтобы добавить установленный модуль к зависимостям пакета package.json и --save-dev
, чтобы добавить его в devDependencies . Если вы устанавливаете модуль без определения конкретной версии (т.е.е. без какой-либо версии или с использованием семантического диапазона), NPM добавит семантический диапазон в package.json как есть. Чтобы предотвратить это, используйте флаг --save-exc
в дополнение к --save
или --save-dev
. Этот флаг заставит NPM сохранить точную версию модуля в package.json.
Примеры
-
npm install lodash --save --save-exc
— устанавливает последнюю версию и сохраняет точную версию взависимостях
в пакете.4.17.4 «.
Предостережения
- Указать
- точное сохранение
недостаточно. Вам нужно определить либо--save
, либо--save-dev
и--save-exc
. Например,npm install mocha --save-dev --save-exc
илиnpm install lodash --save --save-exc
-
--save
,--save-exc
,--save-dev
очевидно не работают вместе с флагом-g
, который устанавливает модуль глобально.
Изучение Node.js? Получите книгу Node.js Design Patterns — Second Edition: Освойте передовые методы создания модульных и масштабируемых серверных веб-приложений
.
Как загрузить и установить Node.js
- Home
Testing
- Back
- Agile Testing
- BugZilla
- Cucumber
- Database Testing
- JTL Testing
- Назад
- JUnit
- LoadRunner
- Ручное тестирование
- Мобильное тестирование
- Mantis
- Почтальон
- QTP
- Назад
- Центр качества (ALM3000)
- Центр качества
- 000
- Управление тестированием
- TestLink
SAP
- Назад
- ABAP
- APO
- Начинающий
- Basis
- BODS
- BI
- BPC
- CO
- Назад
- CRM
- Crystal Reports
- FICO
- 000 HRM
- 000 HRM
- Назад
- PI / PO
- PP
- SD
- SAPUI5
- Безопасность
- Менеджер решений
- Successfactors
- SAP Tutorials
- Назад
- Java
- JSP
- Kotlin
- Linux
- Linux
- Kotlin
- Linux
- Perl
js
- Назад
- PHP
- PL / SQL
- PostgreSQL
- Python
- ReactJS
- Ruby & Rails
- Scala
- SQL
- SQL
- UML
- VB.Net
- VBScript
- Веб-службы
- WPF
000
000
0003 SQL
000
0003 SQL
000
Обязательно учите!
- Назад
- Бухгалтерский учет
- Алгоритмы
- Android
- Блокчейн
- Business Analyst
- Создание веб-сайта
- CCNA
- Облачные вычисления
- 00030003 COBOL
- 9000 Compiler
- 00030002 9000 Compiler
- Ethical Hacking
- Учебные пособия по Excel
- Программирование на Go
- IoT
- ITIL
- Jenkins
- MIS
- Сети
- Операционная система
- 00030003
- Назад
Управление проектами Обзоры
- Salesforce
- SEO
- Разработка программного обеспечения
- VB A
- 9000 Встроенные системы
- 00030002 9000 Compiler
Big Data
- Назад
- AWS
- BigData
- Cassandra
- Cognos
- Хранилище данных
- HBOps
- HBOps
- MicroStrategy
0003
0003
0003
.