npm 镜像设置
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm config set sharp_dist_base_url https://npm.taobao.org/mirrors/sharp-libvips/
npm config set electron_mirror https://npm.taobao.org/mirrors/electron/
npm config set puppeteer_download_host https://npm.taobao.org/mirrors/
npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/
npm config set sentrycli_cdnurl https://npm.taobao.org/mirrors/sentry-cli/
npm config set sqlite3_binary_site https://npm.taobao.org/mirrors/sqlite3/
npm config set python_mirror https://npm.taobao.org/mirrors/python/
npm config set disturl https://npm.taobao.org/mirrors/node/
# 查看Node版本和NPM版本确认已安装Node环境
node -v
npm -v
# 安装nrm并设置NPM的淘宝镜像
npm i -g nrm
nrm use taobao
# 设置依赖安装过程中内部模块下载Node的淘宝镜像
npm config set disturl https://npm.taobao.org/mirrors/node/
# 设置常用模块的淘宝镜像
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm config set sharp_dist_base_url https://npm.taobao.org/mirrors/sharp-libvips/
npm config set electron_mirror https://npm.taobao.org/mirrors/electron/
npm config set puppeteer_download_host https://npm.taobao.org/mirrors/
npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/
npm config set sentrycli_cdnurl https://npm.taobao.org/mirrors/sentry-cli/
npm config set sqlite3_binary_site https://npm.taobao.org/mirrors/sqlite3/
npm config set python_mirror https://npm.taobao.org/mirrors/python/
复制代码
针对node-sass
的情况:
# 安装rimraf并设置package.json
npm i -g rimraf
# 安装前请确保当前的Node版本和node-sass版本已兼容
# 安装失败
npm cache clean -f
npm rebuild node-sass 或 npm run reinstall
复制代码
package.json
中加入npm scripts
:
{
"scripts": {
"reinstall": "rimraf node_modules && npm i"
}
}
复制代码
总结
NPM镜像问题的坑确实很多,归根到底还是网络环境导致的。
解决这种NPM镜像问题的好方法,遇到一些上面没有提到的模块,可尝试通过以下步骤去解决问题。
- 执行
npm i
前设置淘宝镜像,保证安装项目依赖时都走国内网络 - 安装不成功时,肯定是在安装过程中该模块内部又去下载了其他国外服务器的文件
- 在Github上克隆一份该模块的源码进行分析,搜索包含
base、binary、cdn、config、dist、download、host、mirror、npm、site、url
等这样的关键词(自行探索,通常mirror的匹配度最高) - 在搜查结果里查找形态像镜像地址的代码块,再分析该代码块的功能并提取最终的镜像地址,例如
node-sass
的sass_binary_site
- 去淘宝镜像官网、百度、谷歌等网站查找你需要的镜像地址,如果实在找不到就规范上网把国外服务器的镜像文件拉下来搬到自己的服务器上
- 设置模块依赖的镜像地址:
npm config set <registry name> <taobao url / yourself url>
- 重新执行
npm i
安装项目依赖,大功告成