什么是package.json中的依赖 - nodejs

时间:2012-05-16 14:22:04

标签: node.js package npm

在我的节点项目中,我将独立模块构建到文件夹中,并将main.js作为入口点,并在与不同文件相同的文件夹中找到该模块的帮助程序。

Ex:
Aggregator:
     |___package.json
     |___main.js
     |___node_modules
         |_____helper1.js
         |_____helper2.js

因此,node将从本地node_modules文件夹解析所有帮助程序对模块[Ex:Aggregator]的依赖性。上述结构的原因是,我不需要关心require

上的路径

我使用package.json指定入口点是main.js,而require用于聚合器

Ex:
//Sample.js
require('Aggregator'); // Resolves to Aggregator/main.js

例: Aggregator模块的package.json

  {
        "name": "Aggregator"
      , "description": "Returns Aggregates"
      , "keywords": ["aggregate"]
      , "author": "Tamil"
      , "contributors": []
      , "dependencies": {
            "redis": "0.6.7"
        }
      , "lib"           : "."
      , "main"          : "./main.js"
      , "version"       : "1.0"
    }

这里的依赖列是什么?我提到了this链接。即使我将redis的版本指定为10000而没有任何警告,我的代码似乎也能正常工作。我尝试从项目中删除我的redis模块,以测试节点是否接收它并解决依赖性,但事实并非如此。何时在package.json中使用该依赖属性?这只是一张备注供将来参考吗?

npm版本1.1.0-beta-4; 节点版本v0.6.6

2 个答案:

答案 0 :(得分:9)

dependencies值用于指定给定模块(由package.json表示)需要工作的任何其他模块。当您从给定模块的根文件夹运行npm install时,它将安装dependencies哈希中列出的所有模块。

如果你没有在其中列出redis: 10000的任何错误,我的猜测是你从未运行npm install,因此它甚至从未尝试过安装redis。反过来,如果您的代码在没有运行npm install的情况下工作正常,则很可能您的代码首先不需要redis,并且该项应该从dependencies哈希中删除。

虽然并非package.json中的每个条目都对理解日常开发至关重要,但dependencies对于您来说非常重要。我建议您阅读dependencies section on the npm website

答案 1 :(得分:2)

依赖性不是什么,但是它是第三方软件包,或者可以说使用npm安装了模块。 例如

{
      "name": "abc",
       "version": "1.0.0",
      "description": "",
       "main": "app.js",
     "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "npm",
    "npm@latest",
    "-gnpm",
    "npm@latest",
    "-gnpm",
    "npm@latest",
    "-g"
  ],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1",   //THIS IS THIRD PARTY PACKAGE/MODULES 
    "jade": "^1.11.0",
    "nano": "^8.2.2"
  }
}