【发布时间】:2013-10-07 00:40:56
【问题描述】:
如果我在应用程序根目录中定义了 package.json 文件并运行 npm install -g,它将安装 package.json 中定义的所有依赖项,全局。
但是,这似乎不能反过来。
如果我在我的应用程序根目录中执行npm uninstall -g,它会抛出一个错误,让我向它传递一个包名。
这不应该也卸载我安装的相同软件包吗?
我是不是做错了什么?
【问题讨论】:
-
仅供参考,我从不使用 npm -g 的理由。 peterlyons.com/problog/2012/09/…
-
记住,如果你想为你的项目使用一个模块,你必须在本地安装它。全局安装模块只会在终端中提供更多命令,例如 expressjs 和 express(1)。
-
@sgwilly 你错了必须全局使用 node_modules - 它甚至在文档中这样说 - nodejs.org/api/modules.html#modules_all_together - require() 函数很“智能”,因为它可以在不同的位置查看尝试解析包含全局 node_modules 的模块的路径
-
我应该更具体一点:确实 require() 足够聪明,可以找到您全局安装的模块。如果您的所有项目都依赖于该模块的相同版本,它将起作用。然而,如果你只在全局范围内管理依赖项,你可能很难维护依赖于不同模块版本的项目。这就是为什么最好总是在本地安装模块,并且只有在您想要访问一些方便的可执行命令时才全局安装它们。
-
@sgwilly - 感谢您在这里分享您的想法 - 这个项目特别是可分发的,因此它不应该尝试更新任何内容 - 实际更新将通过 RPM 进行(注意 RPM 不是 NPM)并且实际的 node_modules 是收缩包装的——我只需要一种方法来快速清理 rpm 最终安装的系统(在我的开发环境中)
标签: node.js npm uninstallation