NPM在当前目录之外安装软件包

我尝试使用从/ home / iwan / my-project目录中的npm来安装express软件包:

npm install express express@3.3.7 ../node_modules/express ├── methods@0.0.1 ├── cookie-signature@1.0.1 ├── range-parser@0.0.4 ├── fresh@0.2.0 ├── buffer-crc32@0.2.1 ├── cookie@0.1.0 ├── debug@0.7.2 ├── send@0.1.4 (mime@1.2.11) └── commander@1.2.0 (keypress@0.1.0) 

奇怪的是npm在当前dir(/ home / iwan / my-project / node_modules / express)中没有安装express软件包,而是在/ home / iwan / node_modules / express中安装了express软件包。

我错过了什么?

如果node_modules目录中不存在node_modules目录,则NPM将在较高的目录中查找它,直到find它。 所以,如果父目录有一个node_modules目录,NPM将假定它是在哪里安装模块。

快速解决这个问题的方法是在要放置模块的位置创build一个空的node_modules目录。

我相信用npm安装软件包的最好方法就是制作一个package.json文件。 像这样,把它放在smae目录中作为你的应用程序。 示例package.json文件可能如下所示:

 { "name": "application-name", "version": "0.0.1", "private": true, "scripts": { "start": "node app.js" }, "dependencies": { "express": "3.3.5", "jade": "*", "less-middleware": "*", "ejs": "*", "mongoose": "3.6.*" } } 

看看依赖关系列表。 只需添加你想要的模块,例如underscore 。 只需将其添加到依赖关系字典。 像这样:

 { "name": "application-name", "version": "0.0.1", "private": true, "scripts": { "start": "node app.js" }, "dependencies": { "express": "3.3.5", "jade": "*", "less-middleware": "*", "ejs": "*", "mongoose": "3.6.*", "underscore": "*" <-------------- Added } } 

然后转到你的目录,运行npm install ,然后bam! 所有的软件包及其依赖关系都将为您安装。 它将完成所有的工作,这意味着为你制作你的node_modules文件夹。 这是我的应用程序目录的样子:

在这里输入图像描述

您还可以使用https://docs.npmjs.com/files/package.json网页中的准则创build一个空白的package.json文件。 然后将其放置在您的项目文件夹中,然后键入npm install