【问题标题】:Is there any advantage installing modules like socket.io/express globally?全局安装像 socket.io/express 这样的模块有什么好处吗?
【发布时间】:2016-05-09 09:08:40
【问题描述】:

如果是这样,我很想知道是否有任何方法可以从 /usr/local/lib 文件夹运行它们,而不是在我正在处理的每个项目的文件夹中安装这些模块。

【问题讨论】:

  • 全局安装 Express 的缺点是,如果您将 Express 升级到较新的版本(甚至可能与早期版本有些不兼容的版本),那么您必须立即升级所有应用使用新版本的 Express。如果您为每个项目单独安装 Express,那么当您选择实际升级特定应用程序时,您只需为给定应用程序处理新版本的 Express。由于磁盘空间如此便宜,我认为没有理由在全球范围内安装很多东西。
  • 我主要关心的是假设我要制作许多不同的项目可能占用的空间,因为每个 node_modules 至少需要大约 2MB
  • 因此,如果您有 100 个 node.js 项目,则需要 200MB 的磁盘空间。如今,拥有独立升级 node.js 项目的灵活性已经不算什么了。
  • 我明白了...在最坏的情况下,我只需要删除 node_modules 文件夹并通过 package.json 重新安装模块。谢谢大家的回答,非常感谢,这是我第一次在 Stackoverflow 上提出问题。再次非常感谢。

标签: node.js express socket.io npm


【解决方案1】:

node 文档说安装全局模块应该归于那些需要命令行访问的模块(例如 nodemon 等)。

https://nodejs.org/en/blog/npm/npm-1-0-global-vs-local-installation/

选择哪个

就像全局变量有点粗俗,但也是必要的 在某些情况下,全局包很重要,但如果不是最好避免 需要。

一般来说,经验法则是:

如果你要安装一些你想在你的程序中使用的东西, 使用 require('whatever'),然后在本地安装它的根目录 你的项目。

如果你要安装一些你想用的东西 你的shell,在命令行或其他东西上,全局安装它,所以 它的二进制文件最终会出现在您的 PATH 环境变量中。

我能想到的与您的问题相关的唯一其他问题是您可以全局安装 express generator,因为它允许您创建他们的网络脚手架实例。

npm install express-generator -g

但这与全局安装 express 本身是不同的,也不是一回事。

据我所知,答案是否定的——他们对此没有任何好处。

【讨论】:

  • 我个人什至不喜欢全局安装命令行模块,除非它们真的是像 node-static 这样的工具,我可能会在 node.js 项目之外使用。如果它是一个项目依赖项,它应该在package.json 中,并且可以像"$(npm bin)"/gulp 这样从命令行使用,为了方便起见,可以选择全局安装,但从来没有必要。
【解决方案2】:

嗯,就个人而言,没有。我最终弄乱了我的存储库,试图全局安装 express 和其他模块。当您知道它不会弄乱您的系统时,我真的看不出多花几秒钟的好处:D 而且只是补充一点,不要尝试全局安装 mongoDB,真的很糟糕。

【讨论】:

    猜你喜欢
    • 2019-12-20
    • 2016-05-08
    • 1970-01-01
    • 2012-08-14
    • 2019-05-26
    • 2017-09-14
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    相关资源
    最近更新 更多