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
的别名:
remove
、rm
、r
、un
、unlink
今天不需要--save
标志,因为它是默认值。顺便说一句,安装也是如此。
【讨论】:
以上是关于npm:使用“npm 卸载”与仅删除文件夹的主要内容,如果未能解决你的问题,请参考以下文章