如何将npm安装到指定目录?

cou*_*udy 223 node.js npm

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

cou*_*udy 288

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

mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
Run Code Online (Sandbox Code Playgroud)

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

  • 如果使用--prefix选项,则必须在此备用目录中包含package.json文件.有没有办法在当前目录中安装package.json并安装到备用目录? (58认同)
  • @coundy有没有办法为`npm install`指定路径(没有包名)?我直接尝试了这个,但是然后npm在`{prefix}`中查找`package.json`.我还的目标是能够让`packages.json`在项目根目录中,同时在`{project root}/{project webroot}`中安装所有包. (10认同)
  • @fractal看到我的答案 (2认同)

yun*_*zen 41

在文档中说明:使用prefix选项和global选项:

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

当全球标志设置,NPM安装的东西到这个前缀.如果未设置,则使用当前包的根目录,如果不在包中,则使用当前工作目录.

(他们的重点)

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

npm install --prefix <path/to/prefix_folder> -g
Run Code Online (Sandbox Code Playgroud)

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

<path/to/prefix_folder>/lib/node_modules
Run Code Online (Sandbox Code Playgroud)

  • @Pavlo我不这么认为.这不是OP的答案. (6认同)
  • 你不能在全球安装`require`包,可以吗? (2认同)
  • @Pavlo这有帮助吗?http://stackoverflow.com/questions/15636367/nodejs-require-a-global-module-package (2认同)

Roh*_*rma 37

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

npm install --prefix ./install/here <package>
Run Code Online (Sandbox Code Playgroud)

安装在指定的目录中.node_modules即使node_modules较高层次结构中已存在目录,NPM 也会自动创建文件夹.您还可以package.json在当前目录中拥有a ,然后使用以下--prefix选项将其安装在指定目录中:

npm install --prefix ./install/here
Run Code Online (Sandbox Code Playgroud)

从npm 6.0.0开始,您可以使用

npm install --prefix ./install/here ./
Run Code Online (Sandbox Code Playgroud)

将当前目录中的package.json安装到"./install/here"目录.我在Mac上注意到有一件事是它在node_modules目录中创建了一个符号链接到父文件夹.但是,它仍然有效.

注意:NPM遵循您通过该--prefix选项指定的路径.它根据文件夹上的npm文档解析,仅在npm install没有--prefix选项的情况下使用.

  • 这似乎不起作用,我总是收到``无法安装 &lt;当前目录&gt;:缺少包名称`` (2认同)
  • @RohitSharma 使用 npm 6.0.0 此方法不起作用,因为它需要 `./install/here` 中的 `package.json` 文件 (2认同)