Npm 管理
NVM 版本管理
安装
不同项目所依赖的 Node 版本并不相同,如果想要来回切换 Node 版本,一个比较好的方案是使用 NVM 工具。
按照 NVM 需要清理原来的 Node 环境。
mac 电脑执行以下命令即可卸载原来的 Node:
bash1rm -rf /Users/$USER/.npm 2rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*} 3rm -rf /usr/local/bin/node 4rm -rf /usr/local/include/node 5rm -rf /usr/local/lib/node_modules 6rm -rf /usr/local/share/doc/node 7rm /Users/$USER/.npmrc 8rm /usr/local/lib/dtrace/node.d 9rm /usr/local/share/man/man1/node.1 10rm /usr/local/share/systemtap/tapset/node.stp 11rm /var/db/receipts/org.nodejs.* 12rm /var/root/.npm 13rm /var/root/.npmrc
安装
bash1curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
使用
bash1nvm install node # "node" is an alias for the latest version 2nvm install 14.7.0 # or 16.3.0, 12.22.1, etc 3nvm ls # list local node 4nvm use node # 切换到最新版本 5nvm use 4.22 # toggle node 4.22
NRM 镜像管理
发布开源项目时,我们需要使用npm 官方镜像,但是官方镜像速度很慢,在开发的时候非常耽误功夫。
所以一般会在开发时用国内镜像而发布时则使用官方镜像。
这时候可以通过nrm来进行镜像管理。
安装
bash1npm install -g nrm
查看镜像
bash1nrm ls
bash1 npm ---------- https://registry.npmjs.org/ 2 yarn --------- https://registry.yarnpkg.com/ 3 tencent ------ https://mirrors.cloud.tencent.com/npm/ 4 cnpm --------- https://r.cnpmjs.org/ 5 taobao ------- https://registry.npmmirror.com/ 6 npmMirror ---- https://skimdb.npmjs.com/registry/
常用命令
bash1nrm add <name> <url> # 新增镜像 2nrm del <name> # 删除 3nrm test <name> # 测试镜像 4nrm use <name> # 使用哪个镜像 5nrm current # 查看当前镜像
测试速度
问题
有些 npm 依赖了 C++模块,在安装过程中会隐式安装node-gyp,node-gyp可编译这些依赖C++模块的模块。
node-gyp在首次编译时会依赖Node源码,所以又悄悄去下载Node。虽然上述已切换到淘宝镜像,但并没有效果。又因为国内网络环境原因,再次遇上安装过慢或安装失败的情况。
还好npm config提供一个参数disturl,它可设置Node镜像地址,当然还是将其指向国内的淘宝镜像。这样又能愉快地安装这些依赖C++模块的模块了。
bash1npm config set disturl https://npm.taobao.org/mirrors/node/
这样的问题非常多,下面是常见的解决方案:
bash1npm config set electron_mirror https://npm.taobao.org/mirrors/electron/ 2npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/ 3npm config set puppeteer_download_host https://npm.taobao.org/mirrors/ 4npm config set python_mirror https://npm.taobao.org/mirrors/python/ 5npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/ 6npm config set sentrycli_cdnurl https://npm.taobao.org/mirrors/sentry-cli/ 7npm config set sharp_binary_host https://npm.taobao.org/mirrors/sharp/ 8npm config set sharp_dist_base_url https://npm.taobao.org/mirrors/sharp-libvips/ 9npm config set sharp_libvips_binary_host https://npm.taobao.org/mirrors/sharp-libvips/ 10npm config set sqlite3_binary_site https://npm.taobao.org/mirrors/sqlite3/
遇到安装失败的情况需要清除缓存,再重新 build
bash1# 安装失败 2npm cache clean -f 3npm rebuild <package name> # 例如 node-sass 4# 或 npm run reinstall