npm本地安装包到自定义位置
是否可以通过命令标志或环境variables为npm install
指定一个自定义的软件包目的地?
默认情况下,npm本地安装最终node_modules
在当前目录下的node_modules
中,但是我希望它安装到不同目录下的node_modules
中,例如vendor/node_modules
。 我怎样才能做到这一点?
TL; DR
你可以通过使用--prefix
标志和--global
*标志来做到这一点。
pje@friendbear:~/foo $ npm install bower -g --prefix ./vendor/node_modules bower@0.7.0 /Users/pje/foo/vendor/node_modules/bower
*即使这是“全局”安装,除非PATH
存在~/foo/vendor/node_modules
否则通过命令行将无法访问安装的bin。
TL; R
npm
每个可configuration属性都可以在六个不同的地方设置。 按优先顺序排列:
- 命令行标志:–
--prefix ./vendor/node_modules
- 环境variables:
NPM_CONFIG_PREFIX=./vendor/node_modules
- 用户configuration文件:
$HOME/.npmrc
或userconfig
参数 - 全局configuration文件:
$PREFIX/etc/npmrc
或者userconfig
参数 - 内置的configuration文件:
path/to/npm/itself/npmrc
- 默认configuration: node_modules / npmconf / config-defs.js
默认情况下,本地安装的软件包将进入./node_modules
。 全局进入prefix
configurationvariables(默认是/usr/local
)。
你可以运行npm config list
来查看你当前的configuration和npm config edit
来修改它。
PS
一般来说, npm
的文档是非常有帮助的。 文件夹部分是npm的一个很好的结构概述, configuration部分回答了这个问题。
如果你想在configuration中,你可以像这样设置npmconfiguration:
npm config set prefix "$(pwd)/vendor/node_modules"
要么
npm config set prefix "$HOME/vendor/node_modules"
检查你的configuration
npm config ls -l
或者像@pje所说的那样使用--prefix
标志
对于OSX,您可以转到用户的$HOME
(可能是/ Users / yourname /),如果它尚不存在,则创build一个.npmrc
文件(npm用于用户configuration的文件),并创build一个目录你的npm包要安装在(例如/ Users / yourname / npm)。 在.npmrc文件中,将“prefix”设置为新的npm目录,这将是安装“全局”安装npm软件包的位置; 显然,这些“全球”软件包将仅供您的用户帐户使用。
在.npmrc中:
prefix=${HOME}/npm
然后从命令行运行这个命令:
npm config ls -l
它应该给你自己的本地configuration和全局npmconfiguration输出,你应该看到你的本地前缀configuration反映,可能接近输出长列表的顶部。
为了安全起见,我推荐使用这种方法来configuration你的用户帐户的npm行为,而不是在别的地方推荐你的/usr/local
文件夹。
在search这个自己想要共享依赖项目的几个项目是DRYer,我发现:
- 本地安装是任何你想通过
require()
使用Node的方式 - 全局安装是为了在你的path中需要的二进制文件,但是不能用于
require()
- 使用前缀意味着你需要添加适当的
bin
和man
path到$PATH
-
npm link
( info )让你使用本地安装作为全局的源代码
→坚持节点方式,并在本地安装
参考:
- 艾萨克的完美总结
- npm常见问题解答: “node_modules”是我神的主要对手的名字,也是我的宗教中的禁止之词。 我可以configurationnpm使用不同的文件夹吗? 😉
例如,在Windows 7上,可以使用以下一组命令/操作。
创build一个个人环境variables,双反斜杠是强制性的:
- variables名称:
%NPM_HOME%
- variables值:
C:\\SomeFolder\\SubFolder\\
现在,将configuration值设置为新文件夹(示例文件名称):
- 设置npm文件夹
npm config set prefix "%NPM_HOME%\\npm"
- 设置npm-cache文件夹
npm config set cache "%NPM_HOME%\\npm-cache"
- 设置npm临时文件夹
npm config set tmp "%NPM_HOME%\\temp"
或者,您可以在更改configuration之前清除原始文件夹的内容。
-
npm cache clear
npm-cachenpm cache clear
-
列出npm模块
npm -g ls
-
删除npm模块
npm -g rm name_of_package1 name_of_package2
我只是在本地安装,然后在你的package.json中,将它从依赖部分移到devDependencies。 根据您使用的部署,可能不会部署(例如,不会在heroku上)。
devDependencies": { "module": "0.1.0" }