我写了使用节点的简单应用。 它依赖于快递,MongoDB的和猫鼬(容易)。 所以,我创建了一个文件调用package.json
,并把这个在它:
{
"name": "booking-dojo",
"description": "Booking dojo app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x",
"mongodb": "*",
"mongoose": "*"
}
}
我然后跑npm install
,预计NPM安装这些模块和它们的依赖。 其结果是令人失望的:
booking-dojo@0.0.1 /home/merc/Synced/Development/Bookings/app/server
├─┬ express@3.0.0rc3
│ ├── commander@0.6.1
│ ├─┬ connect@2.4.3
│ │ ├── bytes@0.1.0
│ │ ├── formidable@1.0.11
│ │ ├── pause@0.0.1
│ │ └── qs@0.4.2
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── debug@0.7.0
│ ├── fresh@0.1.0
│ ├── methods@0.0.1
│ ├── mkdirp@0.3.3
│ ├── range-parser@0.0.4
│ └─┬ send@0.0.3
│ └── mime@1.2.6
├─┬ mongodb@1.1.4
│ └── bson@0.1.1
└─┬ mongoose@3.0.3
├── hooks@0.2.1
└── ms@0.1.0
我为此感到困惑,因为我知道 , express
需要jade
(和更多)和mongoose
需要mongodb
。
如果我进入node_modules/jade
和运行npm install
,从主树的结果有很大的不同:
booking-dojo@0.0.1 /home/merc/Synced/Development/Bookings/app/server
├─┬ express@3.0.0rc3
│ ├── commander@0.6.1
│ ├─┬ connect@2.4.3
│ │ ├── bytes@0.1.0
│ │ ├── formidable@1.0.11
│ │ ├── pause@0.0.1
│ │ └── qs@0.4.2
│ ├─┬ connect-redis@1.4.1
│ │ └─┬ redis@0.7.2
│ │ └── hiredis@0.1.14
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── debug@0.7.0
│ ├── ejs@0.8.2
│ ├── fresh@0.1.0
│ ├── github-flavored-markdown@1.0.1
│ ├─┬ hjs@0.0.4
│ │ └── hogan.js@2.0.0
│ ├─┬ jade@0.27.2
│ │ └── mkdirp@0.3.0
│ ├── methods@0.0.1
│ ├── mkdirp@0.3.3
│ ├─┬ mocha@1.4.0
│ │ ├── diff@1.0.2
│ │ ├── growl@1.5.1
│ │ └─┬ jade@0.26.3
│ │ └── mkdirp@0.3.0
│ ├── range-parser@0.0.4
│ ├─┬ send@0.0.3
│ │ └── mime@1.2.6
│ ├── should@1.1.0
│ ├─┬ stylus@0.29.0
│ │ └── cssom@0.2.5
│ └─┬ supertest@0.0.1
│ └─┬ superagent@0.5.0
│ ├── emitter-component@0.0.1
│ ├── formidable@1.0.9
│ ├── mime@1.2.5
│ └── qs@0.4.2
├─┬ mongodb@1.1.4
│ └── bson@0.1.1
└─┬ mongoose@3.0.3
├── hooks@0.2.1
└── ms@0.1.0
因此, express
已经成长了很多。 它看起来像npm install
只加载某些子模块的依赖关系。
可有人请阐明这一些轻? 为什么一些依赖丢失? 难道我做错了什么? (可能)
谢谢!
芝加哥商业交易所。