在我的节点projcet中,我使用main.js作为入口点将独立模块构建到文件夹中,并在与不同文件相同的文件夹中找到该模块的helpers。什么是package.json中的依赖关系 - nodejs
Ex:
Aggregator:
|___package.json
|___main.js
|___node_modules
|_____helper1.js
|_____helper2.js
因此节点将解决所有我的助手的模块[例:聚合]依赖当地node_modules
文件夹。原因上面的结构是,我并不需要关心的道路上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"
}
这里什么是依赖列?我提到了this的链接。即使我将redis的版本指定为10000,但没有任何警告,我的代码似乎仍然有效。我尝试从项目中删除我的redis模块以测试节点是否拾取它并解析依赖项,但是它没有。什么时候在package.json中使用这个依赖属性?这仅仅是为了将来的参考吗?
npm version 1.1.0-beta-4; 节点版本v0.6.6
现在很清楚:) Nice Catch :) – Tamil
那么,为我们构建的本地模块使用package.json是否是不必要的或不可取的?因为如果我在我的项目文件夹中运行'npm install',它会引发错误,因为它们确实不是在任何地方找到的包,而只是我的本地代码,因此依赖关系未解决。我的意思是Aggregator不是一个包,而是由我构建的模块,它依赖于redis。那么如何解决它们呢? – Tamil
对于本地开发的模块的已发布依赖项,使用'package.json'仍然是可取的。但是,如果你需要在另一个本地开发的模块中使用本地开发的模块,你可以选择一些选项,其中最好的选项通常是使用'npm link'。使用'npm link',你可以进入* ModuleA *的根文件夹,只需输入'npm link'。然后从* ModuleB *的根文件夹中,输入'npm link module-a-name'。然后从* ModuleB *的任何地方开始,你可以简单地'require('module-a-name')',就像你已经安装在node_modules中一样(即使它不是)。 – jmar777