我从另一个项目中复制了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的合作者,这是解决这个问题的一个很好的解决方案.
在Node.js项目中,我不清楚将包升级到主要版本的正确工作流程是什么。
假设我正在安装stylelint:npm install --save stylelint默认情况下,在我的package.json 中放入字符串"stylelint": "^8.4.1"这意味着如果我想用 更新它npm update,我将只获得次要版本和补丁版本 (8.4. 2 可以,8.5.0 可以,9.0.0 不行)。
如果我检查npm outdated并发现我可以更新到 9.0.0,则npm update由于上述限制而无法正常工作。
那么,如果我想升级,我应该怎么做?
我是否需要手动将package.json修改为 stylelint 版本 ^9.0.0,删除node_modules目录并重新运行npm install?
或者我可能只需要删除^角色才能让它npm update完成它的工作?
要采用的常见/最佳实践是什么?
谢谢
我们在项目中运行"npm install"时遇到问题.无法找到某个文件:
fatal error C1083: Cannot open include file: 'windows.h'
Run Code Online (Sandbox Code Playgroud)
它似乎来自node-gyp模块:
c:\ Program Files \nodejs \node_modules \npm \node_modules \node-gyp\src\win_delay_lo ad_hook.c(13):
致命错误C1083:无法打开包含文件:'windows.h':没有文件或目录[D:\ngs-frontend-next \node_modules\browser-sync \node_module s\socket.io \node_modules\engine.io \node_modules\ws \node_modules\bufferutil\buil \\ binding.sln]
这个节点gyp似乎是我们痛苦的永无止境的源头.起初它抱怨它需要python,所以我们安装了它.然后它抱怨它需要VCBuild,我们安装(使用.NET 2.0 SDK),现在我们有这个错误.这几乎就像错误变得越来越模糊,感觉就像我们走错了道路一样.
奇怪的是,我们团队中的其他人在运行npm-install时没有任何问题.
完整错误如下所示:
c:\ Program Files \nodejs \node_modules \npm \node_modules \node-gyp\src\win_delay_lo ad_hook.c(13):
致命错误C1083:无法打开包含文件:'windows.h':没有文件或目录[D:\ngs-frontend-next \node_modules\browser-sync \node_module s\socket.io \node_modules\engine.io \node_modules\ws \node_modules\bufferutil\buil \\ binding.sln]
gyp ERR!构建错误gyp ERR!堆栈错误:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe退出代码失败:ChildProcess.onExit上的1个堆栈(C:\ Program Files \nodejs \node_modules \npm \node _modules \node-gyp\lib\build.js:270:23)gyp ERR!堆栈在emitTwo(events.js:87:13)gyp ERR!堆栈在ChildProcess.emit(events.js:172:7)gyp ERR!Process.ChildProcess._handle.onexit(internal/child_proces s.js:200:12)gyp ERR!系统Windows_NT 6.1.7601 gyp ERR!命令"C:\ Program Files \nodejs …
该命令和npm-check-updatesnpm update包有什么区别?使用后者是否完全安全?
执行后似乎npm update并不是所有的包都被更新,因此它看起来不完整。许多其他流行的 SO 答案都提到首先使用先前的命令,然后使用后者,但我仍然不明白后者做了什么而先验命令没有。
我正在学习 TypeScript 教程。
不幸的是,这些软件包已经过时,我收到了有关漏洞的警告。
我遵循了npm check 和 update package if need 的一系列建议,即:
npm audit fixnpm audit fix --forcenpm updatenpm audit说还剩下24个漏洞。
但上述命令都无法修复它们。
npm outdated结果没有输出。
易受攻击的软件包是:
ansi-regex
glob-parent
node-forge
nth-check
postcss
Run Code Online (Sandbox Code Playgroud)
我实际上不知道为什么它们是我项目的一部分。我的 里没有它们package.json。
修复这些漏洞的后续步骤是什么?
以下是我尝试过的。
package.json较新的版本,然后运行npm install. 没有效果。package-lock.json建议删除,然后再次运行。npm install"ansi-regex": "^6.0.1", "glob-parent": "^6.0.2", "node-forge": "^1.3.0", "nth-check": "^2.0.1", "postcss": "^8.4.12"为 devDependency 并运行npm install.npm i npm@latest中的建议运行。dependencies node.js dependency-tree npm-audit npm-vulnerabilities
如果我运行命令
ng update
I see a listing of items such as
@angular/cdk 6.4.7 > 8.2.0 ng update @angular/cdk
...
...
Run Code Online (Sandbox Code Playgroud)
可能还有其他已过时的软件包。
或者运行 ng update --all 尝试同时更新所有内容。
ng update 命令本身似乎没有进行任何更改。
那么,执行后是否会发生ng update --all变化呢?
我只想看到所有软件包都被检测到需要更新。
node.js ×4
npm ×4
angular ×1
dependencies ×1
javascript ×1
node-gyp ×1
npm-audit ×1
npm-update ×1
updates ×1