运行时是否可以指定目标目录npm install <package>
?
4 回答
您可以使用以下--prefix
选项:
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
然后软件包将安装在./install/here/node_modules
. 这是必需的,因为 npm 可能会选择层次结构中更高层mkdir
的现有目录。node_modules
(请参阅有关文件夹的 npm 文档。)
从 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
选项的情况下使用。
在文档中说明:将前缀选项与全局选项一起使用:
前缀配置默认为安装节点的位置。在大多数系统上,这是/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
我正在使用 powershell 构建,并且在不更改当前目录的情况下无法运行 npm。
最终使用 start 命令并仅指定工作目录:
start "npm" -ArgumentList "install --warn" -wo $buildFolder