使用npm卸载时自动从package.json中删除依赖项


84

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

npm install package --save

并说,我要uninstall包装,我这样做是:

npm uninstall package

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

从npm文档说:

严格来说,它是可加的,因此在没有充分理由的情况下,它不会从package.json中删除选项。

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


由于每当我使用(--save)标志安装时,我的依赖项都会自动添加到package.json上,因此我想知道是否有一种方法也可以在每次卸载软件包时从package.json中删除依赖项。
2013年

Answers:


150

使用相同的--save标志。如果您通过以下方式安装了依赖项:

$> npm install grunt-cli --save

您可以使用以下命令通过package.json更新来卸载它:

$> npm uninstall grunt-cli --save

'save'标志告诉npm根据您刚刚执行的操作更新package.json。


3
我在ember-cli中使用npm,因此我不得不使用--save-dev而不是--save
gerry3 2015年

4
如果您使用--save-dev进行安装,则卸载也是--save-dev,因为--save保存到dependenciespackage.json文件的部分中,而--save-dev将保存到该devDependencies部分中
Mike' Pomax'Kamermans

7
自发布此问题以来,我已经走了很远,这里有一些专业提示。您可以使用npm i <package_name> -S添加到dependencies列表中或npm i <package_name> -D添加到中dev-dependencies。相同的标志适用于使用npm rm <package_name> -Snpm rm <package_name> -D
尖叫

1
但请注意,这些只是--save和--save-dev的速记标志等效项。有关npm help所有标志及其速记等效项,请参见。(安装有-S或--save的任何东西,也可以使用其中之一进行卸载,npm不会将它们视为不同。只是-S的“较少键入”)
Mike'Pomax'Kamermans

1
你们是人类中的圣人。
约翰·冯·诺伊曼

0

在我的情况下--save并未清除package.json中的条目,这是ionic-check所建议的命令,我认为如果卸载由于任何错误而退出,则package.json不会被更新,在这种情况下,您只有一个选择手动更改package.json,这很繁琐,但我猜是唯一的方法

更新

当您卸载依赖于其他处于活动状态的软件包的软件包时,这种情况下的卸载可能会因错误/警告而失败,安全的方法是通过以下依赖关系图不确定是否有可用的工具,在这种操作下使用方便的工具,警告尽管“您必须安装对等依赖项。”这条消息是相当令人误解的,但在卸载软件包时却没有任何意义


1
这应该不是必需的:如果dependencies列表中有此内容,uninstall --save 则应将其删除,而不管是否有其他内容依赖于此。NPM使用了相当巧妙的依赖关系平整功能,因此,如果(明确地)在依赖关系列表中包含X并卸载X --save,它将被删除。但是,请记住,有多个相关性列表,并且--save是不一样的--save-dev--save-prod或者--save-optional。也可以:如果uninstall导致错误,NPM会在该错误处停止。它不会尝试继续,因为它不能再保证正确性。
Mike'Pomax'Kamermans
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.