.CNPM实现原理 CNPM全称为"China N">

Nodejs的cnpm包管理器快速入门

作者:尹正杰版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.China Node Package Manager(简称"CNPM")概述 1>.CNPM实现原理 CNPM全称为"China N

Nodejs的cnpm包管理器快速入门

作者:尹正杰版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.China Node Package Manager(简称"CNPM")概述

1>.CNPM实现原理

CNPM全称为"China Node Package Manager",即中国的包管理镜器。其原理是用一个完整npmjs.org镜像,你可以用此代替官方版本(只读),同步频率目前为10分钟一次以保证尽量与官方服务同步。

在生产环境中,当我们下载的包比较大时,CNPM的作用还是相当可观的,毕竟你在国外下载一个比较大的包耗时较长,由于网络环境等因素可能要用到40分钟左右还未必能下载完毕,而用国内的软件源可能仅需几秒就可以搞定包下载的问题。

温馨提示:

当我们使用cnpm命令下载软件包时,默认会走国内的软件源去下载包,而使用npm命令下载软件包时,依旧还是回去官网下载哟~当然,你也可以将npm别名为cnpm哟,但我不推荐这样做,因为一旦国内的软件源服务器宕机后,你依旧无法访问官方的软件源(因为您将npm的别名指向了cnpm)

2>.CNPM的参考文档

国内的NPM软件源有很多,其中阿里云的软件源就是一个不错的选择,本片笔记就是使用阿里的软件源。

参考连接:

https://developer.aliyun.com/mirror/NPM

二.基于cnpm工具安装软件源

1>.安装cnpm软件包

C:\Users\yinzhengjie>npm install -g cnpm --registry=https://registry.npm.taobao.org

npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142

npm WARN deprecated har-validator@5.1.5: this library is no longer supported

C:\Users\yinzhengjie\AppData\Roaming\npm\cnpm -> C:\Users\yinzhengjie\AppData\Roaming\npm\node_modules\cnpm\bin\cnpm

+ cnpm@6.1.1

added 689 packages from 974 contributors in 21.483s

C:\Users\yinzhengjie>

C:\Users\yinzhengjie>npm install -g cnpm --registry=https://registry.npm.taobao.org

2>.基于cnpm工具安装所需的软件包

C:\Users\yinzhengjie\demo>type package.json

{

"name": "demo",

"version": "1.0.0",

"description": "My local warehouse",

"main": "index.js",

"scripts": {

"test": "echo "Error: no test specified" && exit 1"

},

"author": "",

"license": "ISC",

"dependencies": {

"math": "0.0.3"

}

}

C:\Users\yinzhengjie\demo>

C:\Users\yinzhengjie\demo>cnpm i express --save

√ Installed 1 packages

√ Linked 48 latest versions

√ Run 0 scripts

√ All packages installed (52 packages installed from npm registry, used 2s(network 2s), speed 333.54kB/s, json 49(122.96kB), tarball 547.46kB)

C:\Users\yinzhengjie\demo>

C:\Users\yinzhengjie\demo>type package.json

{

"name": "demo",

"version": "1.0.0",

"description": "My local warehouse",

"main": "index.js",

"scripts": {

"test": "echo "Error: no test specified" && exit 1"

},

"author": "",

"license": "ISC",

"dependencies": {

"express": "^4.17.1",

"math": "0.0.3"

}

}

C:\Users\yinzhengjie\demo>

C:\Users\yinzhengjie\demo>cnpm i express --save

三.NodeJS搜索包的流程

NodeJS在使用模块名字来引入模块时,它会在当前目录的"node_modules"目录中寻找是否含有该模块,如果有则直接使用,如果没有则继续向上一级目录的"node_modules"中寻找,如果有就直接使用,如果没有就重复之前的步骤继续向上级目录找,直到找到根目录为止。

如果NodeJS到根目录的"node_modules"目录下依旧没有找到对应的模块文件,或者根目录压根就没有"node_modules"目录,则程序会报错~

相关推荐