国内直接使用npm下载模块经常很慢,甚至下载失败,可以使用淘宝的cnpm提高速度
但直接使用cnpm模块下载的依赖有时会出现问题(据说是cnpm下载的依赖目录结构与npm不一样)
更好的方式是使用淘宝的npm源,即使用参数
--registry=https://registry.npm.taobao.org
cnpm官网提供了alias
方式
alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"
# Or alias it in .bashrc or .zshrc
$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc
但问题是这个命令并不支持windows啊,只能另外找alias的方式
以powershell为例,其实是带了Set-Alias
命令设置别名的,并且可以写到配置文件中自动加载别名,可以参考这篇文章 PowerShell下使用Aliases
问题又来了,Set-Alias
但是这个方法应该不支持语句,只能给 function 或者 program 设置 alias。
也就是说下面这句是不行的(带了语句)
set-alias cnpm "npm --registry=https://registry.npm.taobao.org"
只能使用set-alias cnpm npm
可以曲线救国,先定义一个函数,再去Set-Alias
function Start-npmWithTaobao {
$argList = $args -Join ' '
Start-Process -FilePath 'npm' -ArgumentList "--registry=https://registry.npm.taobao.org $argList" -NoNewWindow
}
Set-Alias cnpm Start-npmWithTaobao
还真是麻烦… 后来发现nrm
模块直接就能切换各种npm源了,瞎搞
$ npm install -g nrm
$ nrm ls
* npm ---- https://registry.npmjs.org/
cnpm --- http://r.cnpmjs.org/
eu ----- http://registry.npmjs.eu/
au ----- http://registry.npmjs.org.au/
sl ----- http://npm.strongloop.com/
nj ----- https://registry.nodejitsu.com/
$ nrm help // show help
$ nrm list // show all registries
$ nrm use cnpm // switch to cnpm
$ nrm home // go to a registry home page