npm:使用“npm 卸载”与仅删除文件夹

Posted

技术标签:

【中文标题】npm:使用“npm 卸载”与仅删除文件夹【英文标题】:npm: using 'npm uninstall' vs. just removing the folder 【发布时间】:2017-02-16 14:32:21 【问题描述】:

我想试试 grunt-babel,所以我在我的 Home 文件夹中打开了一个终端,并根据插件的说明执行了 npm install --save-dev grunt-babel babel-preset-es2015。

我这样做太仓促了,我意识到我可能应该在我正在涉足 ES6 代码的 new 项目文件夹中这样做。我什至没有在那个文件夹中完成 npm init ,也没有在我执行安装命令的主文件夹中完成。

当我执行 npm uninstall grunt-babel 时,预设文件被删除,但 node_modules 文件夹中保留了 91 个不同依赖项的文件夹。

我可以简单地删除文件夹而不是运行 npm uninstall 91 次吗?

这个人问了一个类似的问题,但没有一个答案能解决他删除文件夹的子问题:how to uninstall npm modules in node js?

【问题讨论】:

【参考方案1】:

npm uninstall <name> 从 node_modules 中删除模块,但不是 package.json。

npm uninstall <name> --save 也从 package.json 中删除依赖项。

npm rm <package_name> 在卸载不工作时删除软件包

npm prune <name> (see docs) 用于无关包和未在父包的依赖项列表中列出的包。

如果不想一一卸载运行rm -rf node_modules && npm cache clean && npm install 这是确保您卸载的包不再在包 json 中的好方法。

现在在 2021 年 npm uninstall <name> 也将从 package.json 中删除它

【讨论】:

这如何回答手动删除和 npm 卸载差异的问题。您添加了删除类型很好,但请您给出具体答案 npm uninstall <name> 会在 2021 年将其从 package.json 中删除。有人可以更新这个答案吗?【参考方案2】:

使用npm list 作为了解您的更改的工具。我通常会利用这段时间制作一个捕获文件,例如:

npm list >1307

做一些改变

npm list >1309

那么:

cat 13??

或者编辑器让我看看 npm 认为它做了什么。

对于卸载,仅删除根目录中所有大小的“整个包”的包。除此之外,该命令被礼貌地忽略...

例如:

├── safe-stable-stringify@1.1.0
├── semver@6.3.0
├─┬ tableify@1.1.0
│ └─┬ optimist@0.6.1
│   ├── minimist@0.0.8 deduped
│   └── wordwrap@0.0.3

safe-stable-stringify 是删除候选者,但 wordwrap 不是。想一想,这完全有道理!

npm uninstall pkgtoyank -save

通过将 packages.json 也从那里删除来更新它。

至少可以说,npm 的设计非常好。我通常会非常避免直接在 ./node_modules 中戳它,我会从那里复制一些东西来查看它们,但是为什么要拉着 BIG CAT 的皮带并得到一点。有用;按预期使用它....

【讨论】:

【参考方案3】:

更新答案(2020 年):

这些都是uninstall 的别名: removermrununlink

今天不需要--save 标志,因为它是默认值。顺便说一句,安装也是如此。

【讨论】:

以上是关于npm:使用“npm 卸载”与仅删除文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu中卸载node和npm并重装

ubuntu16.04node和npm卸载干净

npm卸载模块报错

无法通过 npm 全局卸载 typescript

如何在构建之前使用 npm 删除文件夹

卸载 vue 2.9.6 失败