【发布时间】:2013-01-06 07:55:34
【问题描述】:
运行npm install <package>时可以指定目标目录吗?
【问题讨论】:
运行npm install <package>时可以指定目标目录吗?
【问题讨论】:
您可以使用--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。)
【讨论】:
npm install 的路径(没有包名)?我直接对此感到厌烦,但随后 npm 在{prefix} 中查找package.json。我的另一个目标是能够让项目根目录中的packages.json 并同时在{project root}/{project webroot} 中安装所有包。
npm install 暂时解决了它,但--prefix 似乎是一个更好的解决方案,如果它没有引起递归。
从 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
./install/here 中的 package.json 文件
在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 全局安装包,可以吗?
我正在使用 powershell 构建,并且在不更改当前目录的情况下无法让 npm 运行。
最终使用 start 命令并仅指定工作目录:
start "npm" -ArgumentList "install --warn" -wo $buildFolder
【讨论】: