是否可以通过命令标志或环境变量指定自定义软件包目的地来进行npm install?
默认情况下,npm本地安装将以当前目录中的node_modules
结束,但我希望它安装到不同目录中的node_modules
,例如vendor/node_modules
。如何实现这一点?
您可以通过使用--prefix
标记和--global
*标记来实现此目的。
pje@friendbear:~/foo $ npm install bower -g --prefix ./vendor/node_modules
bower@0.7.0 /Users/pje/foo/vendor/node_modules/bower
即使这是一个“全局”安装,除非~/foo/vendor/node_modules
在PATH
中存在,否则安装的二进制文件将无法通过命令行访问。
npm
的每个可配置属性都可以在六个不同的位置设置。按优先级顺序:
--prefix ./vendor/node_modules
NPM_CONFIG_PREFIX=./vendor/node_modules
$HOME/.npmrc
或userconfig
参数$PREFIX/etc/npmrc
或userconfig
参数path/to/npm/itself/npmrc
./node_modules
目录中。全局安装的包会放在prefix
配置变量中(默认为/usr/local
)。npm config list
来查看当前配置,也可以运行npm config edit
来更改配置。npm
的文档非常有帮助。folders部分提供了npm的结构概述,而config部分则回答了这个问题。./vendor/node_modules/lib/bower
目录下,使用的是 npm#3.8.0
。 - e-cloudpackage.json 中未提供版本号
。 - FooBarbins 不会通过命令行访问
。当然,可以使用完整路径 npm install eslint@3.4.0 -g --prefix c:\my_npm\
调用程序,调用 c:\my_npm\eslint --fix my.js
。 - Bernhard Döblernpm install
,那么包将会安装在 B 目录中。这个解决方案似乎是针对单个包的安装的。 - Ryan-Neal Mesnpm install
会在本地安装依赖项。npm install X -g -prefix "..."
将模块 X 安装到前缀,npm install -g -prefix "..."
将当前包安装到前缀。 - AnnanFay%userprofile%
、%appdata%、环境变量等地方乱扔东西?我该如何告诉npm不允许它把玩具带到客厅、厨房和走廊以及整个地方,或者换句话说,它只能把玩具放在自己的房间D:\Projects\
里? - AaAnpm config set prefix "$(pwd)/vendor/node_modules"
或者
npm config set prefix "$HOME/vendor/node_modules"
使用以下命令检查配置:
npm config ls -l
或者像 @pje 说的那样,使用 --prefix
标志。
npm install
仍会在本地安装到 ./node_modules
,但 npm install -g
会安装到 "$(pwd)/vendor/node_modules"
。我可以想象将其设置后就忘记它,过一会儿回来时会想知道为什么我的全局包表现得很奇怪。 - AnnanFay$HOME
目录(可能是/Users/yourname/),如果不存在,请创建一个.npmrc
文件(npm用于用户配置的文件),并创建一个npm软件包安装目录(例如/Users/yourname/npm)。在那个.npmrc文件中,将"prefix"设置为你的新npm目录,这将是“全局”安装npm软件包的位置;这些“全局”软件包显然仅对你的用户帐户可用。prefix=${HOME}/npm
然后在命令行中运行此命令:
npm config ls -l
它应该给出你自己的本地配置和全局npm配置的输出,并且你应该在输出的长列表顶部附近看到你的本地prefix配置反映出来。/usr/local
文件夹的所有权,这是我在其他地方看到的推荐方法。例如,在 Windows 7 上,可以使用以下一组命令/操作:
创建个人环境变量,双反斜杠是必需的:
%NPM_HOME%
C:\\SomeFolder\\SubFolder\\
现在,将配置值设置为新文件夹(示例文件名):
npm config set prefix "%NPM_HOME%\\npm"
npm config set cache "%NPM_HOME%\\npm-cache"
npm config set tmp "%NPM_HOME%\\temp"
可选择在更改配置之前清除原始文件夹的内容。
删除npm缓存npm cache clear
列出npm模块npm -g ls
删除npm模块npm -g rm name_of_package1 name_of_package2
在寻找多个项目共享依赖项以使代码更加精简的过程中,我找到了以下信息:
require()
导入任何内容的 Node.js 的方法require()
导入的内容bin
和 man
路径添加到 $PATH
中npm link
(info) 允许你使用本地安装作为全局安装的源→ 坚持 Node.js 的方式并进行本地安装
参考文献:
./node_modules
的子目录中,我希望npm可以将它们安装到./vendor/node_modules
的子目录中(或告诉我这是不可配置的)。 - pje