npm设置代理 proxy、配置国内源

npm全称为Node Packaged Modules。它是一个用于管理基于node.js编写的package的命令行工具。其本身就是基于node.js写的,这有点像gem与ruby的关系。

在我们的项目中,需要使用一些基于node.js的javascript库文件,就需要npm对这些依赖库进行方便的管理。由于我们的开发环境由于安全因素在访问一些网站时需要使用代理,其中就包括npm的repositories网站,所以就需要修改npm的配置来加入代理。

下面简要介绍下npm的配置以及如何设置代理。

npm获取配置有6种方式,优先级由高到底。

  1. 命令行参数。 --proxy http://server:port即将proxy的值设为http://server:port
  2. 环境变量。 以npm_config_为前缀的环境变量将会被认为是npm的配置属性。如设置proxy可以加入这样的环境变量npm_config_proxy=http://server:port
  3. 用户配置文件。可以通过npm config get userconfig查看文件路径。如果是mac系统的话默认路径就是$HOME/.npmrc
  4. 全局配置文件。可以通过npm config get globalconfig查看文件路径。mac系统的默认路径是/usr/local/etc/npmrc
  5. 内置配置文件。安装npm的目录下的npmrc文件。
  6. 默认配置。 npm本身有默认配置参数,如果以上5条都没设置,则npm会使用默认配置参数。

针对npm配置的命令行操作

1
2
3
4
5
6
7
   npm config set <key> <value> [--global]
   npm config get <key>
   npm config delete <key>
   npm config list
   npm config edit
   npm get <key>
   npm set <key> <value> [--global]

在设置配置属性时属性值默认是被存储于用户配置文件中,如果加上--global,则被存储在全局配置文件中。

如果要查看npm的所有配置属性(包括默认配置),可以使用npm config ls -l

如果要查看npm的各种配置的含义,可以使用npm help config

设置代理

1.首先查看下目前配置:npm config list 查看是否已经配置了

2.设置网络代理的命令如下:npm config set proxy=”http://192.168.2.1:8080″

3.国外源速度不稳定,可设置国内淘宝源。查看现有源  npm config get registry

4.设置淘宝源:npm config set registry https://registry.npm.taobao.org

5.再次查看即可确认源已修改。用新源更新一波package:npm update

http 代理

npm 原生支持 http 代理,直接设置即可

1
2
3
4
5
6
7
# 假设本地代理端口为8080
npm config set proxy "http://localhost:8080"
npm config set https-proxy "http://localhost:8080"

# 有用户密码的代理
npm config set proxy "http://username:password@localhost:8080"
npm confit set https-proxy "http://username:password@localhost:8080"

socks5 代理

npm 不支持 socks 代理,但是我们可以用一个工具将 http 代理转成 socks 代理,然后将 npm 代理地址设置到这个工具的地址。

1
2
3
4
5
6
7
8
# 假设本地socks5代理端口为8081
# 首先安装转换工具
npm install -g http-proxy-to-socks
# 然后使用这个工具监听8080端口,支持http代理,然后所有8080的http代理数据都将转换成socks的代理数据发送到8081上
hpts -s localhost:8081 -p 8080
# 最后设置npm代理为8080
npm config set proxy "http://localhost:8080"
npm config set https-proxy "http://localhost:8080"

相当于又加了一个中间层,将 http 转成 socks。

删除代理

1
2
npm config delete proxy
npm config delete https-proxy

修改源

如果代理不支持https的话需要修改npm存放package的网站地址。

$ npm config set registry “http://registry.npmjs.org/”

$ npm config set registry 'https://registry.npm.taobao.org'
$ export ELECTRON_MIRROR='https://npm.taobao.org/mirrors/electron/'
$ export SASS_BINARY_SITE='https://npm.taobao.org/mirrors/node-sass'

Error: Electron failed to install correctly, please delete node_modules/electron and try installing again

Electron 下载安装失败的问题,解决方式请参考 https://github.com/electron/electron/issues/8466#issuecomment-571425574