如何将 npm install 安装到指定目录?
Posted
技术标签:
【中文标题】如何将 npm install 安装到指定目录?【英文标题】:How to npm install to a specified directory? 【发布时间】:2013-01-06 07:55:34 【问题描述】:运行npm install <package>
时可以指定目标目录吗?
【问题讨论】:
另见:***.com/questions/14742553/… 【参考方案1】:您可以使用--prefix
选项:
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
这些软件包随后将安装在./install/here/node_modules
中。 mkdir
是必需的,因为 npm 否则可能会选择层次结构中更高的现有 node_modules
目录。 (见npm documentation on folders。)
【讨论】:
如果您使用 --prefix 选项,您似乎必须在此备用目录中拥有 package.json 文件。有没有办法在当前目录中有 package.json 并安装到备用目录? @fractal 查看我的答案 @coundy 有没有办法指定npm install
的路径(没有包名)?我直接对此感到厌烦,但随后 npm 在prefix
中查找package.json
。我的另一个目标是能够让项目根目录中的packages.json
并同时在project root/project webroot
中安装所有包。
我遇到了递归问题。有没有办法告诉它运行一次?我通过更改目录然后调用npm install
暂时解决了它,但--prefix
似乎是一个更好的解决方案,如果它没有引起递归。
这不起作用,它只会创建一个符号链接,一切仍然安装到您的源目录【参考方案2】:
从 npm 版本 3.8.6 开始,您可以使用
npm install --prefix ./install/here <package>
安装到指定目录。 NPM 会自动创建 node_modules
文件夹,即使 node_modules
目录已经存在于更高的层次结构中。
您也可以在当前目录中拥有一个package.json
,然后使用--prefix
选项将其安装在指定目录中:
npm install --prefix ./install/here
从 npm 6.0.0 开始,您可以使用
npm install --prefix ./install/here ./
将当前目录中的 package.json 安装到“./install/here”目录。我在 Mac 上注意到一件事,它在 node_modules 目录中创建了一个指向父文件夹的符号链接。但是,它仍然有效。
注意:NPM 遵循您通过 --prefix
选项指定的路径。它根据npm documentation on folders 解析,仅当使用npm install
而没有--prefix
选项时。
【讨论】:
这似乎不起作用,我总是得到Can't install <current directory>: Missing package name
@TiborBlenessy 假设您正在谈论第二个安装声明。请确保您的当前目录中有一个有效的 package.json 文件。如果它仍然不起作用,请告诉我你的 npm 版本。这些步骤用于使用指定的 npm 版本。而且,如果他们不再这样做,我很想深入研究并找到根本原因,也许我可以想出一个替代方案。
@RohitSharma 使用 npm 6.0.0 此方法不起作用,因为它期望 ./install/here
中的 package.json
文件
这根本行不通。它希望 json 文件位于 ./install/here 目录中,即使您将 ./ 放在最后。我对它创建到父文件夹的不必要的符号链接也没有印象。告诉npm安装路径应该在哪里,真的就这么难,还是不能顺利完成?
@Tanoro 第三个命令将与 npm 6.0.0 一起使用,如答案中所述创建符号链接。我从来没有尝试过使用 npm v3.5.2 的前 2 个命令,这就是为什么我提到了我尝试过的特定版本的 npm。请随时使用其他版本的工作命令更新答案。【参考方案3】:
在documentation 中声明: 将前缀选项与全局选项一起使用:
prefix 配置默认为安装节点的位置。在 大多数系统,这是 /usr/local。在 Windows 上,这是确切的 node.exe 二进制文件的位置。在 Unix 系统上,它是上一级的, 因为节点通常安装在 prefix/bin/node 而不是 prefix/node.exe。
当 global 标志被设置时,npm 会将东西安装到这个前缀中。 如果未设置,则使用当前包的根目录,或者 当前工作目录(如果不在包中)。
(他们强调)
所以在你的根目录中你可以安装
npm install --prefix <path/to/prefix_folder> -g
它会将node_modules
文件夹安装到文件夹中
<path/to/prefix_folder>/lib/node_modules
【讨论】:
你不能require
全局安装包,可以吗?
@Pavlo 这有帮助吗? ***.com/questions/15636367/…
您应该将其添加到答案中。
@Pavlo 我不这么认为。这不是 OP 的答案。
@Pavlo 如果一个包是全局安装的,你需要它的方式和往常一样。所以是的,你可以要求一个全局安装的包。【参考方案4】:
我正在使用 powershell 构建,并且在不更改当前目录的情况下无法让 npm 运行。
最终使用 start 命令并仅指定工作目录:
start "npm" -ArgumentList "install --warn" -wo $buildFolder
【讨论】:
以上是关于如何将 npm install 安装到指定目录?的主要内容,如果未能解决你的问题,请参考以下文章
nodejs npm install全局安装和本地安装的区别
nodejs npm install全局安装和本地安装的区别
nodejs npm install全局安装和本地安装的区别