Почему не все пакеты узлов обновляются до последней версии при запуске обновления npm? - PullRequest
0 голосов
/ 07 марта 2019

Среда

Windows 10 Home
Узел v10.13.0
NPM 6.4.1

Желаемое поведение

Обновление всех пакетов узлов.

Фактическое поведение

Не все пакеты обновляются.

То, что я пробовал

npm update за информацию в этом посте:

npm установка против обновления - какая разница?

Перед запуском npm update:

$ npm outdated
Package                      Current   Wanted   Latest  Location
babel-loader                   7.1.4    7.1.5    8.0.5  my_folder
bcrypt                         3.0.0    3.0.4    3.0.4  my_folder
body-parser                   1.18.2   1.18.3   1.18.3  my_folder
clipboard                      2.0.1    2.0.4    2.0.4  my_folder
cors                           2.8.4    2.8.5    2.8.5  my_folder
css-loader                   0.28.11  0.28.11    2.1.0  my_folder
date-fns                      1.29.0   1.30.1   1.30.1  my_folder
dompurify                      1.0.8   1.0.10   1.0.10  my_folder
express                       4.16.3   4.16.4   4.16.4  my_folder
file-loader                   1.1.11   1.1.11    3.0.1  my_folder
file-saver                     1.3.8    1.3.8    2.0.1  my_folder
helmet                        3.13.0   3.15.1   3.15.1  my_folder
hotkeys-js                     3.3.8    3.4.4    3.4.4  my_folder
jsonwebtoken                   8.2.1    8.5.0    8.5.0  my_folder
less                           3.0.4    3.9.0    3.9.0  my_folder
mongodb                        3.1.6   3.1.13   3.1.13  my_folder
nodemailer                     4.6.8    4.7.0    5.1.1  my_folder
socket.io                      2.1.1    2.2.0    2.2.0  my_folder
style-loader                  0.21.0   0.21.0   0.23.1  my_folder
uglifyjs-webpack-plugin        1.2.5    1.3.0    2.1.2  my_folder
uikit                    3.0.0-rc.24    3.0.3    3.0.3  my_folder
url-loader                     1.0.1    1.1.2    1.1.2  my_folder
validator                     10.8.0  10.11.0  10.11.0  my_folder
webpack                       4.19.1   4.29.6   4.29.6  my_folder
webpack-cli                    2.1.5    2.1.5    3.2.3  my_folder

package.json перед запуском npm update:

"dependencies": {
"bcrypt": "^3.0.0",
"body-parser": "^1.18.2",
"clipboard": "^2.0.1",
"cors": "^2.8.4",
"date-fns": "^1.29.0",
"dompurify": "^1.0.8",
"express": "^4.16.3",
"file-saver": "^1.3.8",
"helmet": "^3.13.0",
"hotkeys-js": "^3.3.8",
"jquery": "^3.3.1",
"js-cookie": "^2.2.0",
"jsonwebtoken": "^8.2.1",
"markdown-it": "^8.4.2",
"markdown-it-attrs": "^2.3.2",
"mongodb": "^3.1.6",
"nodemailer": "^4.6.8",
"rename-keys": "^2.0.1",
"socket.io": "^2.1.1",
"validator": "^10.8.0"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.3",
"babel-loader": "^7.1.4",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-0": "^6.24.1",
"css-loader": "^0.28.11",
"expose-loader": "^0.7.5",
"file-loader": "^1.1.11",
"less": "^3.0.4",
"less-loader": "^4.1.0",
"style-loader": "^0.21.0",
"uglifyjs-webpack-plugin": "^1.2.5",
"uikit": "^3.0.0-rc.24",
"url-loader": "^1.0.1",
"webpack": "^4.19.1",
"webpack-cli": "^2.1.5"
}

После запуска npm update:

$ npm outdated
Package                  Current   Wanted  Latest  Location
babel-loader               7.1.5    7.1.5   8.0.5  my_folder
css-loader               0.28.11  0.28.11   2.1.0  my_folder
file-loader               1.1.11   1.1.11   3.0.1  my_folder
file-saver                 1.3.8    1.3.8   2.0.1  my_folder
nodemailer                 4.7.0    4.7.0   5.1.1  my_folder
style-loader              0.21.0   0.21.0  0.23.1  my_folder
uglifyjs-webpack-plugin    1.3.0    1.3.0   2.1.2  my_folder
webpack-cli                2.1.5    2.1.5   3.2.3  my_folder

Почему эти пакеты не обновляются до последней версии при работе npm update?

Как мне обновить их до последней версии?

Контекст

Я отсутствовал в проекте разработки около 3 месяцев, и при попытке запустить npm start на локальном компьютере произошла ошибка:

Error: EPERM: operation not permitted, open 'C:\Users\Me\AppData\Roaming\npm\node_modules\nodemon\node_modules\flatmap-stream\index.min.js'

Кажется, что пакет узла event‑stream был «захвачен» (см. Связанную проблему github здесь ).

Моя антивирусная программа Bitdefender действительно удалила поврежденный файл:

Item was deleted.  
Threat name:  
Trojan.Agent.DQGP.
C:\Users\Me\AppData\Roaming\npm\node_modules\nodemon\node_modules\flatmap-stream\index.min.js

Поэтому я решил обновить все пакеты узлов в надежде, что удаляющий пакет будет удалени обновлен до последней «чистой» версии.

1 Ответ

1 голос
/ 07 марта 2019

Он ведет себя так, как ожидается.

Если вы посмотрите на пакеты, которые вы упомянули как «не обновляющиеся», и ссылаетесь на соответствующую запись в вашем package.json, вы можетеобратите внимание, что перед ними стоит префикс ^ (оператор каретки), который обновит их только до самой последней основной версии (с первым номером).

Например, если вы берете пакет babel-loader, вашДля package.json установлена ​​версия "^7.1.4".И самая последняя основная версия babel-loader '^ 7.XX это => 7.1.5

Вы можете проверить историю версий (из babel-loader) здесь => https://www.npmjs.com/package/babel-loader/v/8.0.0-beta.1

Вышеуказанное применимо для других пакетов, которые начинаются с ^ в вашем package.json, например,

css-loader
file-loader
file-saver
nodemailer
style-loader
uglifyjs-webpack-plugin
webpack-cli

Надеюсь, это поможет!

...