Nodejs的cnpm包管理器快速入门

          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"目录,则程序会报错~
posted @ 2021-01-04 23:09  尹正杰  阅读(651)  评论(0编辑  收藏  举报