我想在本地安装软件包,但是npm始终将软件包安装到全局位置。我正在运行以下命令:
npm install serialport
我没有.npmrc命令而且我没有使用-g标志,所以我不知道它为什么不在本地安装。这是配置转储中的一个片段,显示global是false: $ npm config ls -l | grep全球 global = false globalconfig =“/ usr / local / etc / npmrc” globalignorefile =“/ usr / local / etc / npmignore”
这些包仍然像这样安装
serialport@0.7.3 ../../../../node_modules/serialport
因此,除非我对“本地”的含义完全错误,否则这似乎是错误的。我的印象是当前工作目录中的“本地”意味着我可以在主代码文件中执行“require”。请参阅前面的npm相关问题中引用的http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/。
有人可以给我一些提示吗?非常感谢你。
P.S。它不是特定于serialport模块的。它发生在所有人身上。
答案 0 :(得分:31)
我的大部分答案都可以找到:http://npmjs.org/doc/folders.html#More-Information
据我所知,npm会尝试将其安装在合理的位置。因此,如果你有一个project/node_modules
目录并且你在/ project并且执行npm install它将使用product/node_modules
。
现在,如果你不小心做了一个cd project/css
并执行npm install,那么npm会遍历,直到找到你的node_modules
目录。这是为了防止您意外地将其安装在project/css
。
因此,在您的情况下,您在项目路径中的某个位置有一个node_module目录。所以我猜你可以通过删除该目录或在项目文件夹中手动创建node_modules
目录来修复它。
答案 1 :(得分:7)
如果您尝试安装软件包的文件夹上有package.json文件,那么它将正确创建node_modules文件夹。
基本的package.json
{
"name": "application-name",
"version": "0.0.1"
}