npm、cnpm和pnpm基本概念
首先介绍一下npm和cnpm是什么,顺便说一下pnpm。
npm
npm(Node Package Manager)是Node.js的默认包管理器,用于安装、管理和分享JavaScript代码包。它是全球最大的开源库生态系统之一,提供了数百万个包供开发人员使用。npm的特点包括包管理、版本控制、发布与共享以及执行自定义脚本等。
cnpm
cnpm(China Node Package Manager)是npm的一个镜像版本,由淘宝团队提供。它主要用于加速在中国大陆地区的包下载速度,因为它使用国内的镜像服务器来存储和分发npm包。cnpm的使用与npm非常相似,开发者可以通过简单地将npm命令替换为cnpm命令来使用它。cnpm的安装通常涉及全局安装cnpm并设置其使用淘宝镜像的仓库地址。
pnpm
pnpm(performant npm)是一个注重性能的包管理器,它通过使用硬链接和符号链接来避免重复安装依赖包,从而节省磁盘空间并提高安装效率。pnpm还支持创建非扁平的
node_modules
目录结构,适用于monorepo(单一代码仓库)开发模式。它的设计理念是在项目间共享相同版本的依赖包,减少冗余存储,并提供了更快的安装速度。
总结来说,npm是最广泛使用的Node.js包管理器,pnpm提供了更高效的依赖管理和安装体验,尤其适合大型项目和monorepo结构,而cnpm是针对中国用户优化的npm镜像,用于提高下载速度。
本文主要简单说明cnpm的安装和使用(为了提高下载速度)
npm配置淘宝镜像源
为什么不是cnpm配置淘宝镜像源,淘宝镜像源相当于电商购物的本地仓库,npm是运输工具,cnpm是高速运输工具,npm也可以设置淘宝镜像源,所以先说一下这个操作。
设置淘宝镜像源
npm config set registry https://registry.npmmirror.com
注意:原域名https://registry.npm.taobao.org/ 在 2022.06.30 号正式下线和停止 DNS 解析
查看镜像使用状态
npm config get registry
图片说明配置的是淘宝镜像。
恢复官方镜像源
npm config set registry https://registry.npmjs.org
安装cnpm并配置淘宝镜像源
安装cnpm并配置淘宝镜像
npm install -g cnpm --registry=https://registry.npmmirror.com
实际操作中我就到此为止了,下面的没有继续设置了,没有出现问题。
为了防止缓存导致的问题可以进行如下操作。
# 注册模块镜像(提高下载速度)npm set registry https://registry.npmmirror.com // node-gyp 编译依赖的 node 源码镜像 npm set disturl https://npmmirror.com/dist // 清空缓存 (清除所有缓存,避免潜在的缓存问题)npm cache clean --force // 强调配置镜像源后重新安装以确保cnpm使用正确的镜像源
npm install -g cnpm --registry=https://registry.npmmirror.com
最后可以使用cnpm install xxx来快速安装node包。
自动化打包构建常见包配置地址
# mirror config
sharp_binary_host = https://npmmirror.com/mirrors/sharp
sharp_libvips_binary_host = https://npmmirror.com/mirrors/sharp-libvips
profiler_binary_host_mirror = https://npmmirror.com/mirrors/node-inspector/
fse_binary_host_mirror = https://npmmirror.com/mirrors/fsevents
node_sqlite3_binary_host_mirror = https://npmmirror.com/mirrors
sqlite3_binary_host_mirror = https://npmmirror.com/mirrors
sqlite3_binary_site = https://npmmirror.com/mirrors/sqlite3
sass_binary_site = https://npmmirror.com/mirrors/node-sass
electron_mirror = https://npmmirror.com/mirrors/electron/
puppeteer_download_host = https://npmmirror.com/mirrors
chromedriver_cdnurl = https://npmmirror.com/mirrors/chromedriver
operadriver_cdnurl = https://npmmirror.com/mirrors/operadriver
phantomjs_cdnurl = https://npmmirror.com/mirrors/phantomjs
python_mirror = https://npmmirror.com/mirrors/python
registry = https://registry.npmmirror.com
disturl = https://npmmirror.com/dist