npm ? cnpm ? 傻傻分不清楚?

2,668 阅读5分钟
  • npmcnpm 的区别

相信很多人都不太明白 npm 和 cnpm 到底是什么东东, 为啥在国内要用 淘宝镜像使用 cnpm,

  1. 两者之间只是 node 中包管理器的不同哟,

  2. npm是node官方的包管理器。cnpm是个中国版的npm,是淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

  3. 如果因为网络原因无法使用 npm 下载,那 cnpm 这个就派上用场了。

一定切记切记,npmcnpm 只是下载器的不同,好像 npm 用人力板车去拉包,而 cnpm 却使用货车去运包。 而存包的地址则在下文 nrm 的查看。

  • nrm 的使用

很多人都说如果 npm 速度不够快。 继而使用

npm install -g cnpm --registry=https://registry.npm.taobao.org

这个命令行 就可以使用 cnpm 了。 但是它的实质是 

  1. 全局安装 cnpm 

  2. 并且将安装 ' 包 '(各种包) 的地址切换到 国内的淘宝镜像\

这里面省略了一个很重要的东西,就是 nrm 的使用,这个包的功能可以让我们随意的切换我们下载包的地址。 

  1. 如果装好了 cnpm 可以, cnpm i nrm -g 

  2. nrm ls 查看所有 包下载路径, 也就是存放包的不同位置,自然就有取包的速度区分

QQ20220311-104833@2x.png

  1. nrm use 使用包路径, 当然也可以直接用 nrm help 查看 nrm 功能帮助

如果没有了解过 npmcnpm 的朋友可以再往下看详细理解以下

  • npm 介绍

说明:npm(node package manager) nodejs 的包管理器,用于 node 插件管理(包括安装、卸载、管理依赖等);

使用 npm 安装插件:命令提示符执行 npm install <name> [-g] [--save-dev]<name>node 插件名称;

-g:全局安装。将会安装在 C:\Users\Administrator\AppData\Roaming\npm,并且写入系统环境变量;  非全局安装:将会安装在当前定位目录;  全局安装可以通过命令行在任何地方调用它,本地安装将安装在定位目录的 node_modules 文件夹下,通过 require() 调用; 

ES6 可以直接使用 import 调用,前提安装以下包:

  1. cnpm i babel-core babel-loader@7 babel-plugin-transform-runtime -D  (需要指定版本,babel 官网指定说明的)

  2. cnpm i babel-preset-env babel-preset-stage-0 -D

--save:将保存配置信息至 package.jsonpackage.json是nodejs项目配置文件);

-dev:保存至 package.jsondevDependencies 节点,不指定 -dev 将保存至 dependencies节点;一般保存在 dependencies 的像这些 express/ejs/body-parser 等等。

为什么要保存至 package.json ?因为 node 插件包相对来说非常庞大,所以不加入版本管理,将配置信息写入 package.json 并将其加入版本管理,其他开发者对应下载即可(命令提示符执行 npm install ,则会根据 package.json 下载所有需要的包,npm install --production只下载 dependencies 节点的包)。

使用npm卸载插件:npm uninstall <name> [-g] [--save-dev]  PS:不要直接删除本地插件包

删除全部插件: npm uninstall gulp-less gulp-uglify gulp-concat …… ???太麻烦

借助rimraf: npm install rimraf -g 用法: rimraf node_modules

使用npm更新插件:npm update <name> [-g] [--save-dev]

更新全部插件:npm update [--save-dev]

查看npm帮助:npm help

当前目录已安装插件:npm list

PS:npm安装插件过程:从registry.npmjs.org下载对应的插件包(该网站服务器位于国外,所以经常下载缓慢或出现异常),解决办法往下看

  • 选装 cnpm

说明:因为 npm 安装插件是从国外服务器下载,受网络影响大,可能出现异常,如果 npm 的服务器在中国就好了,所以我们乐于分享的淘宝团队干了这事。32个赞!来自官网: “这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。”

官方网址:npm.taobao.org

安装:命令提示符执行npm install -g cnpm --registry=https://registry.npm.taobao.org;   注意:安装完后最好查看其版本号 cnpm -v ,或关闭命令提示符重新打开,安装完直接使用有可能会出现错误;

注:cnpmnpm 用法完全一致,只是在执行命令时将 npm 改为 cnpm(以下操作将以 cnpm 代替npm)。

  • 新建 package.json

说明:package.json是基于nodejs项目必不可少的配置文件,它是存放在项目根目录的普通json文件;

它是这样一个json文件 (注意:json文件内是不能写注释的,而且必须是双引号,复制下列内容请删除注释):

{
  "name": "test",   //项目名称(必须)
  "version": "1.0.0",   //项目版本(必须)
  "description": "This is for study webpack project !",   //项目描述(必须)
  "homepage": "",   //项目主页
  "repository": {    //项目资源库
    "type": "git",
    "url": "https://xxx/xxxx"
  },
  "author": {    //项目作者信息
    "name": "....",
    "email": "....@qq.com"
  },
  "license": "ISC",    //项目许可协议
  "devDependencies": {    //项目依赖的插件
  }
}

当然我们可以手动新建这个配置文件,但是作为一名有志青年,我们应该使用更为效率的方法:命令提示符执行cnpm init -y

查看package.json帮助文档,命令提示符执行cnpm help package.json

特别注意:package.json是一个普通json文件,所以不能添加任何注释。

  • 小Tips: npm 安装 -D-S的区别:

  1. -D 是在开发环境中协助开发需要使用的;

  2. -S 是生产环境打包时需要的;

  3. package.json-DdevDependencies对象中,-Sdependencies对象中。