当运行npm install <package>时,是否可以指定一个目标目录?


当前回答

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

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

安装到指定的目录。即使在更高层次结构中已经存在一个node_modules目录,NPM也会自动创建node_modules文件夹。 你也可以打包。然后使用——prefix选项将其安装到指定的目录中:

npm install --prefix ./install/here

从npm 6.0.0开始,你可以使用

npm install --prefix ./install/here ./

安装包。Json在当前目录到”。/安装/”目录。我在Mac上注意到一件事,它在node_modules目录内创建了一个指向父文件夹的符号链接。但是,它仍然有效。

注意:NPM尊重你通过——prefix选项指定的路径。它根据npm文档解析文件夹,仅当npm install不带——prefix选项时使用。

其他回答

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

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

安装到指定的目录。即使在更高层次结构中已经存在一个node_modules目录,NPM也会自动创建node_modules文件夹。 你也可以打包。然后使用——prefix选项将其安装到指定的目录中:

npm install --prefix ./install/here

从npm 6.0.0开始,你可以使用

npm install --prefix ./install/here ./

安装包。Json在当前目录到”。/安装/”目录。我在Mac上注意到一件事,它在node_modules目录内创建了一个指向父文件夹的符号链接。但是,它仍然有效。

注意:NPM尊重你通过——prefix选项指定的路径。它根据npm文档解析文件夹,仅当npm install不带——prefix选项时使用。

在文档中这样写道: prefix选项和global选项一起使用:

前缀配置默认为节点的安装位置。在 大多数系统都是/usr/local。在窗户上,这是完全正确的 node.exe二进制文件的位置。在Unix系统上,它是一个更高的级别, 因为node通常安装在{prefix}/bin/node而不是 {前缀}/ node.exe。 当设置了global标志时,npm会把东西安装到这个前缀中。 未设置时,将使用当前包的根目录或 当前工作目录(如果不在包中)。

(他们强调)

所以在根目录下你可以安装

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

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

<path/to/prefix_folder>/lib/node_modules

你可以使用——prefix选项:

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

包将被安装在。/install/here/node_modules目录下。mkdir是必需的,因为npm可能会选择层次结构中更高的一个已经存在的node_modules目录。(请参阅npm文档中的文件夹。)

目前还没有文档说明如何在任意目录中安装包。你应该改变到目标目录,确保它有一个包。Json,然后使用常规命令。

虽然目前有一个名为——prefix的无文档选项,但在未来的版本中可能会删除该特性。至少,它不打算将其作为一个官方特性记录下来。

我正在使用一个powershell构建,如果不改变当前目录,就无法让npm运行。

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

start "npm" -ArgumentList "install --warn" -wo $buildFolder