我从另一个项目中复制了package.json,现在想将所有依赖项都升级到最新版本,因为这是一个新项目,如果出现问题,我不介意修复。
最简单的方法是什么?
我知道的最好的方法是运行npm info express版本,然后手动更新package.json中的每个依赖项。一定有更好的办法。
{
"name": "myproject",
"description": "my node project",
"version": "1.0.0",
"dependencies": {
"express": "^3.0.3", // how do I get these bumped to latest?
"mongodb": "^1.2.5",
"underscore": "^1.4.2"
}
}
有关纱线特定的解决方案,请参阅本堆栈溢出线程。
要将一个依赖项更新到最新版本,而不必手动打开package.json并更改它,可以运行
npm install {package-name}@* {save flags?}
i.e.
npm install express@* --save
此流程与工作区兼容,即。
npm --workspace some/package install express@*
作为参考,npm install
注意:某些npm版本可能需要最新标志,即npm安装express@latest
正如用户Vespakoen在被拒绝的编辑中所指出的,也可以通过以下方式一次更新多个包:
npm install --save package-nave@* other-package@* whatever-thing@*
他还提出了一个基于npm过时的外壳的单线。有关代码和说明,请参见编辑。
PS:我也讨厌为这样的事情手动编辑package.json;)
要查看哪些软件包具有可用的更新版本,请使用以下命令:
npm outdated
要只更新一个依赖项,只需使用以下命令:
npm install yourPackage@latest
例如:
我的package.json文件具有依赖关系:
"@progress/kendo-angular-dateinputs": "^1.3.1",
那么我应该写:
npm install @progress/kendo-angular-dateinputs@latest
save dev是什么意思?
npm install @progress/kendo-angular-dateinputs@latest --save-dev
正如npm安装文档所说:
-D、 --save dev:Package将显示在devDependencies中。
无需额外软件包的解决方案
将每个依赖项的版本更改为*:
"dependencies": {
"react": "*",
"react-google-maps": "*"
}
然后运行npm update--save。
您的一些软件包已更新,但有些没有更新?
"dependencies": {
"react": "^15.0.1",
"react-google-maps": "*"
}
这是一个棘手的部分,这意味着你的本地版本“react”比最新版本低。在本例中,npm下载并更新了“react”包。然而,您的本地版本“反应谷歌地图”与最新版本相同。
如果您仍然希望“更新”未更改*,则必须从node_modules文件夹中删除这些模块。
例如删除node_modules/react谷歌地图。
最后再次运行npm更新--save。
"dependencies": {
"react": "^15.0.1",
"react-google-maps": "^4.10.1"
}
如果您想更新开发依赖项,请不要忘记运行npm update--save dev。
下面的代码(已被接受)给我写了一些类似“这需要太长时间”之类的话,但什么也没做。可能使用全局标志是问题所在,idk。
npm i -g npm-check-updates
ncu -u
npm install
我决定使用文本编辑器,改用半手动方法。
我从package.json的dev依赖项中复制了一个这样的列表(只是长了很多)到记事本++文本编辑器:
"browserify": "10.2.6",
"expect.js": "^0.3.1",
"karma": "^0.13.22",
"karma-browserify": "^5.2.0",
我将搜索模式设置为正则表达式,使用^\s*“([^”]+)”.*$模式获取包名,并将其替换为npm uninstall\1-save dev\nnpm install\1-save-dev。单击“全部替换”。输出如下:
npm uninstall browserify --save-dev
npm install browserify --save-dev
npm uninstall expect.js --save-dev
npm install expect.js --save-dev
npm uninstall karma --save-dev
npm install karma --save-dev
npm uninstall karma-browserify --save-dev
npm install karma-browserify --save-dev
我把它复制回bash并按回车键。一切都升级了,工作正常。这就是全部。
"browserify": "^16.1.0",
"expect.js": "^0.3.1",
"karma": "^2.0.0",
"karma-browserify": "^5.2.0",
我认为这没什么大不了的,因为你只需要偶尔做一次,但是你可以很容易地编写一个脚本,它解析package.json并升级你的包。我认为这样更好,因为如果你需要一些特殊的东西,比如保持一个库的当前版本,你可以编辑你的列表。