8

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

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

因此,节点将解决我所有助手对本地node_modules文件夹中模块 [Ex: Aggregator] 的依赖。上述结构的原因是,我不需要关心路径require

我使用 package.json 指定入口点是 main.js 以防require聚合器

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

例如:聚合器模块的 package.json

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

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

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

4

2 回答 2

10

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

如果您没有redis: 10000在其中列出任何错误,我的猜测是您从未运行过npm install,因此它甚至从未尝试安装 redis。反过来,如果您的代码在没有 run 的情况下运行良好,那么您的代码npm install很可能一开始甚至不需要 redis,并且应该从dependencies哈希中删除该项目。

虽然并非其中的每个条目package.json对于理解日常开发都是必不可少的,但dependencies一定要注意这一点。我建议通读npm 网站上的依赖项部分

于 2012-05-16T14:28:56.787 回答
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"
  }
}
于 2020-05-09T14:45:08.997 回答