309

运行时是否可以指定目标目录npm install <package>

4

4 回答 4

399

您可以使用以下--prefix选项:

mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>

然后软件包将安装在./install/here/node_modules. 这是必需的,因为 npm 可能会选择层次结构中更高层mkdir的现有目录。node_modules(请参阅有关文件夹的 npm 文档。)

于 2013-01-22T22:49:30.617 回答
67

从 npm 版本 3.8.6 开始,您可以使用

npm install --prefix ./install/here <package>

安装到指定目录。node_modules即使node_modules目录已经存在于更高层次结构中,NPM 也会自动创建文件夹。您还可以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 文档进行解析,仅在npm install没有--prefix选项的情况下使用。

于 2017-04-30T08:07:40.113 回答
55

文档中说明:将前缀选项与全局选项一起使用

前缀配置默认为安装节点的位置。在大多数系统上,这是/usr/local。在 Windows 上,这是 node.exe 二进制文件的确切位置。在 Unix 系统上,它是上一级的,因为 node 通常安装在{prefix}/bin/node而不是 {prefix}/node.exe

设置全局标志后,npm 会将内容安装到此前缀中。如果未设置,则使用当前包的根目录,如果不在包中,则使用当前工作目录。

(他们强调)

所以在你的根目录中你可以安装

npm install --prefix <path/to/prefix_folder> -g

它会将node_modules文件夹安装到文件夹中

<path/to/prefix_folder>/lib/node_modules
于 2015-10-01T08:56:57.220 回答
1

我正在使用 powershell 构建,并且在不更改当前目录的情况下无法运行 npm。

最终使用 start 命令并仅指定工作目录:

start "npm" -ArgumentList "install --warn" -wo $buildFolder
于 2019-12-11T18:18:02.543 回答