是否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
*即使这是一个“全局”安装,安装的 bin 也无法通过命令行访问,除非~/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 config:
npm config set prefix "$(pwd)/vendor/node_modules"
或者
npm config set prefix "$HOME/vendor/node_modules"
检查您的配置
npm config ls -l
或者正如@pje 所说并使用--prefix
标志
对于 OSX,您可以转到您的用户$HOME
(可能是 /Users/yourname/),如果它不存在,则创建一个.npmrc
文件(npm 用于用户配置的文件),并为您的 npm 包创建一个目录以安装在(例如,/Users/yourname/npm)。在该 .npmrc 文件中,将“前缀”设置为新的 npm 目录,该目录将安装“全局”安装的 npm 包;显然,这些“全球”软件包仅对您的用户帐户可用。
在 .npmrc 中:
prefix=${HOME}/npm
然后从命令行运行此命令:
npm config ls -l
它应该在您自己的本地配置和全局 npm 配置中提供输出,并且您应该看到反映了您的本地前缀配置,可能在长输出列表的顶部附近。
为了安全起见,我推荐这种方法来配置您的用户帐户的 npm 行为而不是 chown-ing 您的/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
在搜索了这个我想要几个具有共享依赖项的项目成为 DRYer 之后,我发现:
require()
require()
bin
和man
路径$PATH
npm link
( info ) 允许您使用本地安装作为全局变量的来源→ 坚持Node方式,本地安装
参考: