我从另一个项目中复制了package.json,现在想要将所有依赖项都添加到它们的最新版本,因为这是一个新项目,如果它破坏了我不介意修复它.
最简单的方法是什么?
我现在知道的最好的方法是运行npm info express version
然后为每个人手动更新package.json.肯定有更好的办法.
{
"name": "myproject",
"description": "my node project",
"version": "1.0.0",
"engines": {
"node": "0.8.4",
"npm": "1.1.65"
},
"private": true,
"dependencies": {
"express": "~3.0.3", // how do I get these bumped to latest?
"mongodb": "~1.2.5",
"underscore": "~1.4.2",
"rjs": "~2.9.0",
"jade": "~0.27.2",
"async": "~0.1.22"
}
}
Run Code Online (Sandbox Code Playgroud)
我现在是npm-check-updates的合作者,这是解决这个问题的一个很好的解决方案.
jos*_*736 2236
看起来npm-check-updates是现在实现这一目标的唯一方法.
npm i -g npm-check-updates
ncu -u
npm install
Run Code Online (Sandbox Code Playgroud)
在npm <3.11:
只需将每个依赖项的版本更改为*
,然后运行npm update --save
.(注意: 最近(3.11)版本的npm中断了).
之前:
"dependencies": {
"express": "*",
"mongodb": "*",
"underscore": "*",
"rjs": "*",
"jade": "*",
"async": "*"
}
Run Code Online (Sandbox Code Playgroud)
后:
"dependencies": {
"express": "~3.2.0",
"mongodb": "~1.2.14",
"underscore": "~1.4.4",
"rjs": "~2.10.0",
"jade": "~0.29.0",
"async": "~0.2.7"
}
Run Code Online (Sandbox Code Playgroud)
当然,这是更新依赖关系的直言不讳.如果 - 正如你所说的那样 - 项目是空的,没有任何东西可以打破,这很好.
另一方面,如果您正在一个更成熟的项目中工作,您可能希望在升级之前验证依赖项中是否存在重大更改.
要查看哪些模块已过时,请运行npm outdated
.它将列出任何已安装的具有较新版本的依赖项.
Eti*_*nne 987
npm-check-updates
是一个实用程序,可以使用所有依赖项的最新版本自动调整package.json
请参阅https://www.npmjs.org/package/npm-check-updates
$ npm install -g npm-check-updates
$ ncu -u
$ npm install
Run Code Online (Sandbox Code Playgroud)
Mic*_*ole 362
由于这些答案最初是写的,所以情况有所改变.
npm-check-updates
+ npm outdated
+npm-shrinkwrap.json
npm shrinkwrap
包+npm install
一定要收缩你的deps,否则你可能会结束一个死的项目.前几天我拿出了一个项目,它不会运行,因为我的deps已经过时/更新/乱七八糟.如果我收缩包裹,npm就会安装我需要的东西.
对于那些做到这一点的好奇者来说,这就是我的建议:
npm-shrinkwrap.json
或npm-shrinkwrap.json
建议最新版本.
npm outdated
npm update
git commit package-lock.json
Run Code Online (Sandbox Code Playgroud)
npm install -g npm-check-updates
npm-check-updates
npm shrinkwrap
git commit package-lock.json
Run Code Online (Sandbox Code Playgroud)
npm-check-updates
与npm outdated
# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.
$ npm update
# OR
# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u
Run Code Online (Sandbox Code Playgroud)
npm-shrinkwrap.json
将使用精确版本npm shrinkwrap
如果你检查npm install
git,所有安装将使用完全相同的版本.
这是一种从开发(所有更新,一直)转变为生产(没有人接触任何东西)的方法.
lac*_*ass 187
要将一个依赖项更新为其最新版本而不必手动打开package.json
并更改它,您就可以运行
npm install {package-name}@* {save flags?}
Run Code Online (Sandbox Code Playgroud)
即
npm install express@* --save
Run Code Online (Sandbox Code Playgroud)
供参考,npm-install
正如用户Vespakoen在拒绝编辑时指出的那样,也可以这样一次更新多个包:
npm install --save package-nave@* other-package@* whatever-thing@*
Run Code Online (Sandbox Code Playgroud)
他还基于的方式为shell选择了一个单行程npm outdated
.请参阅编辑以获取代码和说明.
PS:我也讨厌手动编辑这样package.json
的东西;)
Gol*_*Jer 83
如果您碰巧使用Visual Studio Code作为IDE,这是一个有趣的小扩展,可以更新package.json
一次点击过程.
Tob*_*nik 56
这适用于npm 1.3.15.
"dependencies": {
"foo": "latest"
}
Run Code Online (Sandbox Code Playgroud)
Mr.*_*Lin 48
*
的版本为最新版本,包括不稳定latest
的版本定义了最新的稳定版本LatestStablePackages
这是一个例子:
"dependencies": {
"express": "latest" // using the latest STABLE version
, "node-gyp": "latest"
, "jade": "latest"
, "mongoose": "*" // using the newest version, may involve the unstable releases
, "cookie-parser": "latest"
, "express-session": "latest"
, "body-parser": "latest"
, "nodemailer":"latest"
, "validator": "latest"
, "bcrypt": "latest"
, "formidable": "latest"
, "path": "latest"
, "fs-extra": "latest"
, "moment": "latest"
, "express-device": "latest"
},
Run Code Online (Sandbox Code Playgroud)
Tyl*_*vis 38
我发现上面最好的答案唯一的警告是它将模块更新到最新版本.这意味着它可以更新为不稳定的alpha版本.
我会使用那个npm-check-updates实用程序.我的小组使用了这个工具,它通过安装稳定的更新有效地工作.
正如Etienne所述:安装并运行:
$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install
Run Code Online (Sandbox Code Playgroud)
Ste*_*pUp 37
要查看哪些软件包具有更新版本,请使用以下命令:
npm outdated
Run Code Online (Sandbox Code Playgroud)
只更新一个依赖项只需使用以下命令:
npm install yourPackage@latest --save
Run Code Online (Sandbox Code Playgroud)
例如:
我的package.json
文件有依赖:
"@progress/kendo-angular-dateinputs": "^1.3.1",
Run Code Online (Sandbox Code Playgroud)
那我应该写:
npm install @progress/kendo-angular-dateinputs@latest --save
Run Code Online (Sandbox Code Playgroud)
man*_*ito 32
我真的很喜欢npm-upgrade的工作原理.它是一个简单的命令行实用程序,它遍历所有依赖项,并允许您查看当前版本与最新版本的比较,并根据需要进行更新.
以下是npm-upgrade
在项目根目录(package.json
文件旁边)中运行后发生的屏幕截图:
对于每个依赖项,您可以选择升级,忽略,查看更改日志或完成该过程.到目前为止,它对我来说非常有用.
编辑:要清楚这是一个需要在命令工作之前安装的第三方软件包.npm本身没有:
npm install -g npm-upgrade
Run Code Online (Sandbox Code Playgroud)
然后从具有package.json文件的项目的根目录:
npm-upgrade
Run Code Online (Sandbox Code Playgroud)
Mad*_*eka 29
安全更新
用于npm outdated
发现过期的依赖项。
用于npm update
执行安全的依赖项升级。
用于npm install <packagename>@latest
升级到软件包的最新主要版本。
重大更新
使用npx npm-check-updates -u
。
npm install
将所有依赖项升级到最新的主要版本。
dan*_*lmb 21
这是一个匹配语义版本号的基本正则表达式,因此您可以使用星号快速替换它们.
([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)
Run Code Online (Sandbox Code Playgroud)
在JSON文件中选择要替换的软件包版本.
输入上面的正则表达式并验证它是否与正确的文本匹配.
用星号替换所有匹配项.
跑 npm update --save
and*_*xyz 14
我最近不得不更新几个使用npm和package.json作为gruntfile.js魔法的项目.以下bash命令(多行命令)对我来说效果很好:
npm outdated --json --depth=0 | \
jq --ascii-output --monochrome-output '. | keys | .[]' | \
xargs npm install $1 --save-dev
Run Code Online (Sandbox Code Playgroud)
这里的想法:要将npm outdated
输出作为json传递给jq
(jq是一个json命令行解析器/查询工具)
(请注意--depth
参数的使用npm outdated
)
jq将仅将输出剥离到顶级包名称.
最后,xargs将每个LIBRARYNAME一次放入一个npm install LIBRARYNAME --save-dev
命令中
以上是在机器运行中对我有用的东西:node = v0.11.10 osx = 10.9.2 npm = 1.3.24
这需要:
xargs http://en.wikipedia.org/wiki/Xargs(我相信我的机器原生)
和
jq http://stedolan.github.io/jq/(我安装了它brew install jq
)
注意:我只是devDependancies
通过使用将更新的库保存到json密钥内的package.json中--save-dev
,这是我的项目的要求,很可能不是你的.
之后,我检查一切都很简单
npm outdated --depth=0
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用以下方法检查当前的顶级已安装库版本
npm list --depth=0
Run Code Online (Sandbox Code Playgroud)
ily*_*kam 11
从npm 5.2.0版开始,有一种方法可以在一行中运行此程序,而无需在全局npm注册表或本地应用程序中安装任何其他软件包。这可以通过利用npx
与npm捆绑在一起的新实用程序来完成。(单击此处了解更多信息。)
在您的项目的根目录中运行以下命令:
npx npm-check-updates -u && npm i
Run Code Online (Sandbox Code Playgroud)
Dav*_*aun 10
Updtr!
基于npm过时,updtr安装最新版本并为每个依赖项运行npm test.如果测试成功,则updtr将新版本号保存到package.json.但是,如果测试失败,则updtr会回滚其更改.
https://github.com/peerigon/updtr
gok*_*sel 10
我npm-check
用来归档这个.
npm i -g npm npm-check
npm-check -ug #to update globals
npm-check -u #to update locals
Run Code Online (Sandbox Code Playgroud)
另一个有用的命令列表,它将保留精确的版本号 package.json
npm cache clean
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g #update globals
ncu -ua #update locals
npm i
Run Code Online (Sandbox Code Playgroud)
如果您正在使用yarn
,它yarn upgrade-interactive
是一个非常时尚的工具,可以让您查看过时的依赖项,然后选择您要更新的依赖项.
使用纱线的更多理由npm
.嘿.
命令,我不得不使用更新package.json
为NPM 3.10.10
:
npm install -g npm-check-updates
ncu -a
npm install
Run Code Online (Sandbox Code Playgroud)
背景:
我正在使用来自@ josh3736的最新命令,但我package.json
没有更新.然后我在运行时注意到了描述文本npm-check-updates -u
:
声明的版本范围满足以下依赖关系,但安装的版本落后.您可以使用npm update在不修改软件包文件的情况下安装最新版本.如果您想要更新包文件中的依赖项,请运行ncu -a.
阅读npm-check-updates的文档,您可以看到差异:
https://www.npmjs.com/package/npm-check-updates
-u, - upgrade:覆盖包文件
-a, - upgradeAll:包括那些最新版本满足声明的semver依赖项的依赖项
ncu是npm-check-updates
输入时在消息中看到的别名npm-check-updates -u
:
[INFO]: You can also use ncu as an alias
Run Code Online (Sandbox Code Playgroud)
小智 7
我通过使用npm-check-updates的说明解决了这个问题:
npm install -g npm-check-updates
ncu
ncu -u # To update all the dependencies to the latest
ncu -u "specific module name" # In case you want to update specific dependencies to the latest
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 npm 5 和 Node.js 8,请尝试以下命令:
npm update --save
Run Code Online (Sandbox Code Playgroud)
小智 5
上述命令不安全,因为切换版本时可能会破坏模块.相反,我推荐以下内容
npm shrinkwrap
命令将实际当前节点模块版本设置为package.json .npm install -g next-update // from your package next-update
我为最新版本的 NPM 找到了另一个解决方案。我想要做的是用明确的最新版本号替换所有“*”依赖项。讨论的方法都没有对我有用。
我做了什么:
npm-check-updates -u
package.json 中的所有内容现在都更新到最新版本。
如果你不想安装全局npm-check-updates你可以简单地运行:
node -e "const pk = JSON.parse(require('fs').readFileSync('package.json', 'utf-8'));require('child_process').spawn('npm', ['install', ...Object.keys(Object.assign({},pk.dependencies, pk.devDependencies)).map(a=>a+'@latest')]).stdout.on('data', d=>console.log(d.toString()))"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
825323 次 |
最近记录: |