前端开发系列080-Node篇之cnpm
一、简单介绍
CNPM是阿里的Node团队开发的一款NPM工具,由蚂蚁金服Node技术专家苏千(袁锋·Node技术专家
)和死马(何翊宇·Node技术专家·koa.js和egg.js框架核心维护者
)主导,内核使用了自主研发的npminstall实现。CNPM依托于淘宝NPM镜像,在国内能够更快速的进行包和依赖的安装。
在淘宝NPM镜像网站上面有关于镜像的说明:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步”。
也就是说,我们在管理和安装包的时候使用淘宝NPM镜像跟直接使用npm来进行安装的资源其实是相同的,因为国内网络环境的原因,我们直接使用淘宝NPM镜像来下载包速度会更快一些。
二、基本使用
$ npm install -g cnpm 全局安装CNPM
$ npm install -g cnpm - -registry=https://registry.npm.taobao.org 全局安装CNPM并切换源
注意 在命令行工具中执行上面命令的时候--
中间没有空格。
在全局安装CNPM
的时候如果切换了源,将会从Registry.npm.taobao.org来安装模块。当安装的时候如果发现安装的模块还没有同步过来, 那么淘宝NPM会自动在后台进行同步, 并且会让你从官方NPM Registry.npmjs.org进行安装. 当下次再安装这个模块的时候则直接从淘宝NPM安装。
$ cnpm -v 查看cnpm的版本信息
CNPM
支持 npm
除了 publish
之外的所有命令,而且这些命令的使用方式和npm
完全一致。
这里简单列出上面几个命令的执行演示。
wendingding$ npm install cnpm -g --registry=https://registry.npm.taobao.org
npm WARN deprecated socks@1.1.10: If using 2.x branch, please upgrade to at least 2.1.6
to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0
/usr/local/bin/cnpm -> /usr/local/lib/node_modules/cnpm/bin/cnpm
+ cnpm@6.0.0
added 12 packages, removed 8 packages and updated 58 packages in 29.841s
wendingding$ cnpm -v
cnpm@6.0.0 (/usr/local/lib/node_modules/cnpm/lib/parse_argv.js)
npm@6.4.1 (/usr/local/lib/node_modules/cnpm/node_modules/npm/lib/npm.js)
node@8.9.3 (/usr/local/bin/node)
npminstall@3.16.0 (/usr/local/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)
prefix=/usr/local
darwin x64 17.4.0
registry=https://registry.npm.taobao.org
wendingding$ cnpm install jquery
Installed 1 packages
Run 0 scripts
All packages installed (1 packages installed from npm registry,
used 624ms(network 622ms), speed 660.5kB/s, json 1(5.19kB), tarball 405.64kB)
dingding:cnpm wendingding$ cnpm install -g jquery
Downloading jquery to /usr/local/lib/node_modules/jquery_tmp
Copying /usr/local/lib/node_modules/jquery_tmp/_jquery@3.3.1@jquery
to /usr/local/lib/node_modules/jquery
Installing jquery's dependencies
to /usr/local/lib/node_modules/jquery/node_modules
All packages installed (used 4ms(network 2ms), speed 0B/s, json 0(0B), tarball 0B)
$ cnpm sync xxx 同步指定的模块。
CNPM
还支持同步模块,只需要使用sync
命令即可,下面列出同步模块命令的执行细节。
wendingding$ cnpm sync jquery
Start sync ["jquery"].
sync jquery, PUT https://registry.npm.taobao.org/jquery/sync?publish=false&nodeps=false
logurl: https://npm.taobao.org/sync/jquery#logid=6065624
[2018-11-27 10:16:56]
user: anonymous, sync jquery worker start, 1 concurrency,
nodeps: false, publish: false, syncUpstreamFirst: false
[2018-11-27 10:16:56] ----------------- Syncing jquery -------------------
[2018-11-27 10:16:56]
[c#0] [jquery] package(https://r.cnpmjs.org/jquery) status: 200,
dist-tags: {"beta":"3.3.1","latest":"3.3.1"},
time.modified: 2018-01-20T17:27:17.000Z, unpublished: null, start...
[2018-11-27 10:16:56] [jquery] found 0 missing star users
[2018-11-27 10:16:56] [jquery] all versions are exists
[2018-11-27 10:16:56] [jquery] no versions need to deleted
[2018-11-27 10:16:56] [jquery] all 383 npm users exists
[2018-11-27 10:16:56] [c#0] [jquery] synced success, 0 versions:
[2018-11-27 10:16:56] ----------------- Synced jquery success -------------------
[2018-11-27 10:16:56] [done] Sync jquery package finished, 1 success, 0 fail
Success: [ jquery ]
Fail: [ ]
Sync all packages done, successed: ["jquery"], failed: []
三、番外篇
我们使用CNPM的主要原因在于它在处理包的时候速度更快,很多人认为它的可取之处仅在于使用了国内的镜像,其实就算不用国内的镜像,CNPM的安装速度相对NPM也要更快一些。这是因为CNPM在处理的时候会把一些包缓存到node_module/.npminstall
目录下,再以符号链接的方式将依赖目录链接到其对应的路径,这样做的好处是相同版本的包在安装的过程中实际上只有一份实体。
CNPM
截止本文最新的版本6.0.0
,在目录结构和依赖支持方面它的4.2以及4.3+版本是比较重要的一个分水岭。在4.2的版本里,它的目录结构和NPM 2
保持一致,是嵌入式的结构。后来因为NPM 3
的原因导致很多前端以及部分Node依赖在NPM 2下无法正常工作。
因此,在4.3版本中CNMP为前端开发者加入了扁平化的支持,即后期的版本中除按照嵌入式目录结构安装依赖外,还会顺便将计算得到的依赖(依赖 、依赖的依赖或者是依赖的特定版本)存放一份到node_moudles目录下,不过这也导致>node_moubles下目录成群···
前端开发系列080-Node篇之cnpm的更多相关文章
- openlayers5-webpack 入门开发系列一初探篇(附源码下载)
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...
- leaflet-webpack 入门开发系列一初探篇(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...
- 【Windows10 IoT开发系列】配置篇
原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...
- 旨在脱离后端环境的前端开发套件 - IDT Server篇
IDT,一个基于Nodejs的,旨在脱离后端环境的前端开发套件,目的就是能让前端开发完全脱离后端的环境,无论后端是什么模板引擎(主流),都能应付自如. IDT主要包括两大部分:Server + Bui ...
- cesium-webpack 入门开发系列一初探篇(附源码下载)
前言 cesium-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 we ...
- 前端开发【第2篇:CSS】
鸡血 样式的属性多达几千个,但别担心,按照80-20原则,常用的也就几十个,你完全可以掌握它. Css初识 HTML的诞生 早期只有HTML的时候为了让HTML更美观一点,当时页面的开发者会把颜色写到 ...
- [置顶]【实用 .NET Core开发系列】- 导航篇
前言 此系列从出发点来看,是 上个系列的续篇, 上个系列因为后面工作的原因,后面几篇没有写完,后来.NET Core出来之后,注意力就转移到了.NET Core上,所以再也就没有继续下去,此是原因之一 ...
- openlayers4 入门开发系列之风场图篇
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- openlayers4 入门开发系列之热力图篇(附源码下载)
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- Android Metro风格的Launcher开发系列第三篇
前言: 各位小伙伴,又到了每周更新文章了时候了,本来是周日能发出来呢,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客,哪里有女王哪里就有压迫呀有木有!好了闲话 ...
随机推荐
- .net clr 8年才修复的BUG,你让我损失太多了
一.概述 .NET社区修复问题可谓是龟速,一个BUG在.NET 7.0+版本才修复,你让我损失了几万块,我现在还记得客户那种质疑的表情,你了解那种尬尴的气氛吗?你让我一度怀疑dotnetty,我从来不 ...
- 2319. 判断矩阵是否是一个 X 矩阵
2319. 判断矩阵是否是一个 X 矩阵 题解: 模拟 class Solution { public boolean checkXMatrix(int[][] grid) { int n = gri ...
- FreeSWITCH中SIP网关(Gateway)操作
freeswitch是一款简单好用的VOIP开源软交换平台. 以下是一篇关于FreeSWITCH中SIP网关(Gateway)操作的技术指南,基于提供的官方文档内容整理: 一.网关生命周期管理 1. ...
- QUBO建模
技术背景 QUBO(Quadratic Unconstrained Binary Optimization)模型是一种常用于求解组合优化问题的一种技术,它所能够求解的问题是这样定义的:给定一个布尔类型 ...
- 揭秘AI自动化框架Browser-use(二),如何构造大模型提示词
在上一篇技术分析中,我们探讨了Browser-use框架如何实现页面元素标注.本文将聚焦于其提示词构造流程,揭示AI如何理解浏览器界面的核心机制. 上一篇-揭秘AI自动化框架Browser-use(一 ...
- STM32F407——使用systick定时器裸机制作延时函数
准备工作: 软件:keil5 硬件:STM32F407ZET6芯片,gec6818开发板,st-link调试器 文档:<开发板原理图>,<Cortex M3与M4权威指南>,& ...
- 时间工具之“Java8 LocalDate 根据给定的日期,获取该日期上一周的周一周日,以及TemporalAdjusters的API”
一.场景 我们的周报需要获取该月的第一个周的星期一和星期日,用于计算该星期的功能业绩(如:上产品数量) 2022-04-25 00:00:00 到 2022-05-01 23:59:592022-05 ...
- Scroll滚动,你玩明白了嘛?
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- Windows配置VS Code详细流程
本文介绍Visual Studio Code(VS Code)软件在Windows操作系统电脑中的下载.安装.运行方法. Visual Studio Code(简称VS Code)是一款由微软 ...
- 全网最全!1500+ 免费、美观的前端网页模板,建站神器(包括HTML、Vue、Angular、React等)!
前言 经常有小伙伴问我 Vue.React.Bootstrap 或者 Angular 这些有好看且免费的前端模板推荐的吗?今天大姚给大家分享一个宝藏网站,它汇聚了1500+ 免费.美观的前端网页模板, ...