【问题标题】:Node.js: Determine manually installed modules and version numbers for package.jsonNode.js:为 package.json 确定手动安装的模块和版本号
【发布时间】:2015-10-10 22:58:28
【问题描述】:

我即将为“生产模式”(MEAN 环境,谈论服务器端)准备一个网络服务器,从而也为我的项目创建 package.json 文件。由于它现在使用大量文件和模块,我正在尝试找出最简单、最可靠的方法来定义要为我的 package.json 文件考虑哪些模块:

1) 有没有办法告诉 Node.js 自动创建一个 package.json 文件,其中包含自安装 Node.js 以来我手动添加的所有模块(= 对我当前的 Node.js 项目至关重要)?

2) 如果没有,我如何仅列出那些手动安装的模块(与使用类似 npm -g ls --json 的方式列出所有模块相反)?

【问题讨论】:

    标签: javascript json node.js


    【解决方案1】:

    我不知道您所说的“手动”究竟是什么意思,但是要获取安装在项目目录中的“根级”模块的列表,您可以使用以下命令:

    $ npm ls --depth 0 --json
    

    或者,如果您在全局范围内安装了模块(不要这样做...):

    $ npm ls -g --depth 0 --json 
    

    提示:开始一个新项目时,让npm 立即创建一个新的package.json

    $ npm init
    

    当您安装所需的模块时,您可以将它们自动添加到其中:

    $ npm install module --save
    

    【讨论】:

    • 我说的是我在安装 node.js 之后安装的所有模块(=node.js 不自带的模块)。
    • @IgorP。我是否感觉到您实际上是全局安装模块(使用npm install -g ...)?
    • 通常我安装这样的模块: sudo npm install MODULENAME 抱歉问,但有什么区别: sudo npm install -g MODULENAME?在这种情况下,全球意味着什么?
    • @IgorP。全局安装模块意味着它将在系统范围内安装,而不仅仅是在您的项目本地安装。当各种项目依赖于全局安装的特定模块时,可能会出现问题,特别是如果项目依赖于同一模块的不同版本时。最好将项目所需的模块“靠近”项目(在本地 ./node_modules 目录中,当您不使用 -g 标志时,它们会安装在该目录中)。
    • 好的,有道理。感谢您的澄清=)
    【解决方案2】:

    通常,在安装每个节点模块时,您会将其保存到package.jsonnpm install modulename --savenpm install modulename --save-dev

    如果您需要将所有已安装的模块追溯添加到 package.json 中,您可以编写一个简短的脚本,例如此处建议的脚本:https://stackoverflow.com/a/13381344/5070356

    这将从每个依赖项中获取名称/版本并将其添加到您的package.json

    【讨论】:

      猜你喜欢
      • 2011-08-12
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 2015-11-25
      • 2011-11-24
      相关资源
      最近更新 更多