21

我想在本地安装包,但 npm 总是将包安装到全局位置。我正在运行以下命令:

npm install serialport

我没有 .npmrc 命令,也没有使用 -g 标志,所以我不知道为什么它没有在本地安装。这是配置转储中的一个片段,显示 global 为 false: $ npm config ls -l | grep global global = false globalconfig = "/usr/local/etc/npmrc" globalignorefile = "/usr/local/etc/npmignore"

并且软件包仍在像这样安装

serialport@0.7.3 ../../../../node_modules/serialport

因此,除非我对“本地”的含义完全错误,否则这似乎是错误的。我的印象是“本地”意味着在当前工作目录中,以便我可以在我的主代码文件中执行“要求”。请参阅: http: //blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/,如上一个 npm 相关问题中所引用。

有人可以给我一些提示吗?非常感谢你。

PS它不是特定于串口模块的。这一切都发生在他们身上。

4

2 回答 2

32

我的大部分答案都可以找到: http: //npmjs.org/doc/folders.html#More-Information

我的理解是 npm 会尝试将它安装在一个合理的位置。因此,如果您有一个project/node_modules目录并且您位于 /project 并执行 npm install ,它将使用product/node_modules.

现在,如果您不小心执行了 cdproject/css并执行了 npm install,那么 npm 将向上遍历直到找到您的node_modules目录。这是为了防止您不小心将其安装在您的project/css.

因此,在您的情况下,您的项目路径中有一个 node_module 目录。所以我的猜测是,您可以通过删除该目录或node_modules在项目文件夹中手动创建一个目录来修复它。

于 2012-06-11T18:15:10.060 回答
7

如果您尝试安装软件包的文件夹中有 package.json 文件,那么它将正确创建 node_modules 文件夹。

基本包.json

{
    "name": "application-name",
    "version": "0.0.1"
}
于 2015-12-05T21:45:37.213 回答