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

Tam*_*mil 8 package node.js npm

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

Ex:
Aggregator:
     |___package.json
     |___main.js
     |___node_modules
         |_____helper1.js
         |_____helper2.js
Run Code Online (Sandbox Code Playgroud)

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

我使用package.json来指定入口点是main.js require,用于Aggregator

Ex:
//Sample.js
require('Aggregator'); // Resolves to Aggregator/main.js
Run Code Online (Sandbox Code Playgroud)

例如: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"
    }
Run Code Online (Sandbox Code Playgroud)

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

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

jma*_*777 10

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

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

虽然不是每个条目package.json对于理解日常开发都是必不可少的,但dependencies重要的是要注意.我建议阅读npm网站上的依赖项部分.

  • 对于本地开发的模块的已发布依赖项,仍然建议使用`package.json`.但是,如果你需要在*另一个*本地开发的模块中使用本地开发的模块,你有几个选项,其中最好的选择通常是使用`npm link`.使用`npm link`,您可以进入*ModuleA*的根文件夹,只需输入`npm link`即可.然后从*ModuleB*的根文件夹中键入`npm link module-a-name`.然后从*ModuleB*的任何地方你可以简单地`require('module-a-name')`,就像你在`node_modules`中安装它一样(尽管它不是). (2认同)