提问人:Merc 提问时间:8/26/2012 更新时间:7/26/2016 访问量:72726
如何编写package.json文件,以便使用“npm install”下载所有依赖项
How to write a package.json file so that all dependencies are downloaded with "npm install"
问:
我使用node编写了一个简单的应用程序。这取决于 express、mongodb 和 mongoose(简单)。
所以,我创建了一个名为的文件,并把这个放进去:package.json
{
"name": "booking-dojo",
"description": "Booking dojo app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x",
"mongodb": "*",
"mongoose": "*"
}
}
然后我运行,期望 npm 安装这些模块及其依赖项。
结果令人失望:npm install
[email protected] /home/merc/Synced/Development/Bookings/app/server
├─┬ [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ └── bso[email protected]
└─┬ [email protected]
├── [email protected]
└── [email protected]
我对此感到困惑,因为我知道需要(以及更多)和需要.
如果我进入并运行,主树的结果非常不同:express
jade
mongoose
mongodb
node_modules/jade
npm install
[email protected] /home/merc/Synced/Development/Bookings/app/server
├─┬ [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └─┬ [email protected]
│ └─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
├─┬ [email protected]
│ └── bso[email protected]
└─┬ [email protected]
├── [email protected]
└── [email protected]
所以,已经成长了很多。看起来只是加载了子模块的一些依赖项。express
npm install
有人可以对此进行一些说明吗?为什么缺少某些依赖项?我做错了什么吗?(可能)
谢谢!
默克。
答:
您至少对 2 点感到困惑。
首先,express不依赖于翡翠,正如你通过阅读文件所看到的那样:node_modules/express/package.json
"dependencies": {
"connect": "2.4.2",
"commander": "0.6.1",
"range-parser": "0.0.4",
"mkdirp": "0.3.3",
"cookie": "0.0.4",
"crc": "0.2.0",
"fresh": "0.1.0",
"methods": "0.0.1",
"send": "0.0.3",
"debug": "*"
}
但是,Express 确实可以使用 jade(如果可用)以及许多其他模板引擎。因此,要将此列表翡翠修复为package.json文件中的依赖项,您就可以了。
其次,npm 只安装节点包,而不是像 mongodb 这样的第三方东西。您需要使用其他方式(、、手动安装等)安装 mongodb 和任何其他不是 npm 模块的依赖项。apt-get
yum
所以 npm 确实以递归方式安装依赖项,但仅限于 npm 模块。
评论
mongodb
mongodb
布兰登在对另一个答案的评论中提供了答案:
“另一件需要注意的事情是,如果一个包依赖于一个模块,而这个模块可以在依赖链中进一步解析,那么它就会。例如,由于您的package.json中有 mongodb,因此 Mongoose 不需要安装自己的 mongodb。– 布兰登·蒂利 2天前
谢谢布兰登!(这就是答案......
使用此示例
{
"name": "app",
"version": "0.0.1",
"main":"test.js",
"author":"Test",
"description": "For test ",
"dependencies": {
"express": "latest",
"mongoose": "latest"
}
}
上一个:可靠地重新连接到 MongoDB
评论