【问题标题】:Automatically remove dependencies from package.json when using npm uninstall使用 npm uninstall 时自动从 package.json 中删除依赖项
【发布时间】:2013-10-25 06:46:15
【问题描述】:

npm init 之后,我可以使用以下方法在我的 package.json 中添加依赖项:

npm install package --save

然后说,我想uninstall 包裹,我这样做了:

npm uninstall package

但我也希望我的 package.json 也相应地更新,而不必手动转到文件并删除该行。

从 npm 文档中它说:

它是严格附加的,所以它不会在没有充分理由的情况下从你的 package.json 中删除选项。

所以,我只是想知道这是否可能。

【问题讨论】:

  • 因为每当我使用 (--save) 标志安装时,我的依赖项都会自动添加到 package.json 中,所以我想知道是否有办法在我卸载包时从 package.json 中删除依赖项好吧。

标签: node.js npm


【解决方案1】:

使用相同的--save 标志。如果您安装了一个依赖项:

$> npm install grunt-cli --save

你可以卸载它,更新 package.json,使用:

$> npm uninstall grunt-cli --save

“保存”标志告诉 npm 根据您刚刚执行的操作更新 package.json。

【讨论】:

  • 我将 npm 与 ember-cli 一起使用,我不得不使用 --save-dev 而不是 --save
  • 如果您使用--save-dev 安装它,那么卸载也是--save-dev,因为--save 保存到package.json 文件的dependencies 部分,而-- save-dev 将保存到devDependencies 部分
  • 自发布此问题以来,我已经走了很长一段路,这里有一个小提示。您可以使用npm i <package_name> -S 添加到您的dependencies 列表或使用npm i <package_name> -D 添加到您的dev-dependencies。使用npm rm <package_name> -Snpm rm <package_name> -D 删除相同的标志
  • 但请注意,这些只是--save 和--save-dev 的简写标志等效项。请参阅npm help 了解所有标志及其等效的速记。 (任何使用 -S 或 --save 安装并使用其中任何一个卸载的东西,npm 都不会认为它们有什么不同。只是为 -S “少打字”)
  • 你是男人中的圣人。
【解决方案2】:

在我的情况下 --save 没有清除 package.json 中的条目,ionic-check 建议的命令我认为如果卸载碰巧退出并出现任何错误 package.json 不会更新在这种情况下,您只能选择手动更改 package.json,这很乏味,但我猜是唯一的方法

更新

当您卸载一个依赖于其他活动包的包时,在这种情况下卸载可能会失败并出现错误/警告,安全的方法是通过遵循依赖关系图不确定是否有可用的工具,这样的方便工具操作,警告消息非常具有误导性,尽管“您必须安装对等依赖项..”在我们卸载软件包时没有任何意义

【讨论】:

  • 这不应该是必要的:如果它在dependencies 列表中而不是uninstall --save 应该 删除它,不管其他东西是否依赖它。 NPM 使用了相当聪明的依赖扁平化,所以如果你的依赖列表中有 X(显式)并且你卸载 X --save,它将被删除。但是,请记住有多个依赖列表,--save--save-dev--save-prod--save-optional 不同。也可以:如果您的 uninstall 导致错误,NPM 会在该错误处停止。它不再尝试继续,因为它不能再保证正确性。
猜你喜欢
  • 2019-03-18
  • 2016-08-02
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2019-08-01
  • 1970-01-01
  • 2020-07-28
相关资源
最近更新 更多