更新Node中的特定软件包

415
我想更新Browser-sync,但不想更新所有的node包。如何做到这一点?我的当前版本的Browser-sync没有Browser-sync GUI :(

我想要更新我的Browser-sync,但是不希望更新所有的node包。如何实现呢?我的当前版本的Browser-sync没有Browser-sync GUI :(

├─┬ browser-sync@1.9.2
│ ├── browser-sync-client@1.0.2

15
也许应该运行 npm install browser-sync@latest 命令来覆盖安装最新版本,以修复任何可能存在的问题。请注意,此操作将覆盖当前版本。 - rlemon
5个回答

601

大部分情况下,您只需使用npm update(或pnpm updateyarn upgrade)命令更新模块以获取最新的非破坏性更改(遵守package.json中指定的semver规范)(<--再读一遍这句话)。

npm update browser-sync
-------
pnpm update browser-sync
-------
yarn upgrade browser-sync
  • 使用[p]npm|yarn outdated命令查看哪些模块有新版本
  • 使用[p]npm update|yarn upgrade(不加包名)命令更新所有模块

主要版本升级:

根据您的情况,看起来您想要下一个主要版本(v2.x.x),这个版本很可能会有破坏性的更改,您需要更新您的应用程序来适应这些更改。您可以通过执行以下命令安装/保存最新的2.x.x版本:

npm install browser-sync@2 --save-dev
-------
pnpm add browser-sync@2 --save-dev
-------
yarn add browser-sync@2 --dev

要获取最新的2.1.x版本,请执行以下操作:

npm install browser-sync@2.1 --save-dev
-------
pnpm add browser-sync@2.1 --save-dev
-------
yarn add browser-sync@2.1 --dev

通过执行以下操作,可以获得最新且最棒的内容:

npm install browser-sync@latest --save-dev
-------
pnpm add browser-sync@latest --save-dev
-------
yarn add browser-sync@latest --dev

注意:最后一个与执行以下步骤的效果相同:uninstall(卸载) + install(安装):

npm uninstall browser-sync --save-dev
npm install browser-sync --save-dev
-------
pnpm remove browser-sync --save-dev
pnpm add browser-sync --save-dev
-------
yarn remove browser-sync --dev
yarn add browser-sync --dev

--save-dev 部分很重要。这将卸载它,从 package.json 中删除该值,然后重新安装最新版本并将新值保存到 package.json 中。


3
npm update browser-sync --save-dev 也可以更新到主版本,并保存 package-lock.json(如果存在的话)。 - Wildhoney
9
@Wildhoney - 我尊重地不同意你的观点(大部分)- npm update 将安装最新的版本 与 semver 相关。升级到下一个 major 版本的唯一方法是像我上面描述的那样明确地执行它。如果您从未安装过某个软件包并尝试更新/保存它,那么它将安装最新版本,但这很少见。还有一个很少使用的 semver 用于指定 latest major version - 在您的 package.json 中会像这样显示:browser-sync: '*'browser-sync: 'x' - 但我不建议这样做。 - Ryan Wheale
4
请注意,自从npm@5.0.0版本起,不再需要使用"--save-dev"命令,因为它会自动保存到package.json文件中(参考https://docs.npmjs.com/cli/update)。 - Evgenia Karunus
2
@lakesare 实际上从 npm@5.0.0 开始,默认选项是 --save 而不是 --save-dev。如果您想创建仅限于开发的依赖项,仍然需要指定 --save-dev。 - Joshua Harris
2
@JoshuaHarris - 在使用npm@5时,npm update命令将会更新依赖和开发依赖,并将新的版本号保存到package.json文件的相应位置。 - Ryan Wheale
2
npm update <particular_package> 对我没用,但是 npm install <particular_package>@latest -S 对我有用。 - Learner

73

使用npm outdated命令查看所有包的当前版本最新版本


然后使用npm i packageName@versionNumber 命令安装特定版本。例如:npm i browser-sync@2.1.0

或者使用npm i packageName@latest命令安装最新版本。例如:npm i browser-sync@latest


5
这个回答更清晰地回答了OP的问题,展示了如何安装特定版本的依赖项,而不提及主/次要版本。 - NightTom
值得注意的是,如果您使用此命令,则您的 package.json 文件可能会得到类似于 "@packageName": "^1.26.3" 的内容。如果您想要指定一个特定的版本,请将 ^ 更改为 ,例如 "@packageName":"1.26.3"。 - Daniel Hollinrake
获取以下 Dependabot 警报,如何修复,尝试删除 package-lock.json 并在 package.json 中所有包都有脱字符 ^。1)在 package-lock.json 中发现 ansi-regex 漏洞, 2)在 package-lock.json 中发现 nth-check 漏洞, 3)易受攻击的版本:<= 0.0.7 已修补版本:无修复 这会影响 ansi-html 包的所有版本。如果攻击者提供恶意字符串,则会卡住处理输入的时间非常长。 - Girish

4

NPM

将特定的包更新到最新版本:

npm update browser-sync

按版本号更新一个包:

npm view browser-sync versions(查看软件包版本)

npm install browser-sync@2

将所有软件包都更新为最新版本:

npm outdated(检查注册表,查看已安装的软件包是否过时)

npm update --save/--save-dev(更新并保存依赖项在package.json中)

对所有软件包运行安全性审核:

npm audit(提交项目的依赖关系描述到默认注册表,并请求已知漏洞的报告) npm audit fix(修复漏洞)

Yarn

将所有软件包都更新为最新版本:

yarn upgrade

将特定的包更新到最新版本:

yarn upgrade browser-sync

将特定的包更新到特定的版本:

yarn upgrade browser-sync@^2

Pnpm

更新所有在package.json中指定范围内的依赖项:

pnpm up(别名为pnpm update

更新所有依赖项,忽略在package.json中指定范围内的版本号:

pnpm up --latest

将browser-sync更新至v2的最新版本:

pnpm up browser-sync@2

更新在@babel范围内的所有依赖项:

pnpm up "@babel/*"


0

遗留的同级依赖命令也很有帮助,特别是当你处理某些依赖问题等情况时。

例如: 如果包名为 ngx-multi-window,版本为 0.3.1

你需要运行:npm install ngx-multi-window@0.3.2 --legacy-peer-deps


0
这对我有用。
卸载并安装最新版本的nodemon。
npm uninstall nodemon
npm install nodemon@3.0.1 --save-dev;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接