【Git/SVN】npm、cnpm、npx、nrm

一、npm

npm(node package manager)nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等);
首先安装nodejs , 官网下载 nodejs

安装完后打开控制台win+R 输入cmd

然后输入node -v 查看版本 显示v x.x.x 表示安装成功

npm是内嵌在nodejs的,nodejs安装完成后,npm自动安装,查看版本npm -v

1.1 npm基本命令

说明:npm(node package manager)nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等);
使用npm安装插件:命令提示符执行 npm install [-g] [–save-dev]

node 插件名称。例:npm install gulp-less –save-dev

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

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

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

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

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

删除全部插件:npm uninstall gulp-less gulp-uglify gulp-concat

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

使用npm更新插件:npm update [-g] [–save-dev]

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

查看npm帮助:npm help

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

二、 cnpm

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

2.1 安装cnpm

官方网址:http://npm.taobao.org

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

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

2.2 cnpm回调npm

如果像上面一样进行了淘宝镜像的话,那平时都需要将npm 改用成 cnpm,那如果我们想用回来npm怎么操作呢?

npm config delete registry
npm config delete disturl

或者 

npm config edit
找到淘宝那两行,删除

因为我们镜像时有两种方式:

npm config set registry https://registry.npm.taobao.org
npm config set disturl https://npm.taobao.org/dist

所以知道通过哪种方式镜像的话,就对应删除即可,成功后即可使用npm了

三、npx

npx是一种在npm中安装工具,也可以被单独的下载使用

在npm 5.2.0 的时候发现会买一送一,自动安装了npx。

3.1 npx的好处

我们如果没有接触npx的时候,全局安装一些包都是通过npm的(npm install <node> -g),但是这种方式是不推荐的,尤其在工作中,例如我们需要使用Node进行环境的开发,起初我们全局安装了Node v6.x.x的版本;由于版本的迭代,项目此时需要升级Node的版本才能继续进行开发,此时原本的项目运行在这个Node v6.x.x版本下的代码,则需要全局卸载再进行新版本的Node安装,周而复此每次需要更新全局安装的包时都要这样进行,否则项目由于环境的影响会出现报错,此时npx就出来了,它解决的问题就是这个,我们往下看,首先我们来对比一下优劣势

全局安装劣势:

  • 占用本机空间
    npm会在machine上创建一个目录(mac是/usr/local/lib/node_modules)存放所有global安装的包, 其实node_module占用的空间比较大的
  • 版本问题
    假如一个项目中的某一个dependency是全局安装的,也就意味着不同的开发人员使用的这个dependency版本完全基于本地的版本,也就会导致不同的开发人员使用不同的版本

使用npx的优势也就凸显出来了:

当在执行 npx <command> 的时候,npx会做什么事情,它的优点有哪些?
例如我们全局安装一个express时 → npx express --view=ejs <项目名称>

  1. 帮你在本地(可以是项目中的也可以是本机的)寻找这个 command → 找到了: 就用本地的版本 || 没找到: 直接下载最新版本,完成命令要求
  2. 使用完之后不会在你的本机或者项目留下任何东西
  3. 不会污染本机
  4. 永远使用最新版本的dependency

任何command都通过npx在machine任何位置使用

举个例子,在某一个项目中使用 npm install --save-dev @babel/core @babel/cli 安装babel。此时:
你在命令行中使用 babel script.js 一定会报错说babel不存在,即便你的 node_module 中babel静静的躺在那里,你只有两种方式可以使用babel

你可以通过在 package.json 的script中使用babel去compile某一个directory(用 npm run-script 的形式)

你也可以通过使用 ./node_modules/.bin/babel script.js 用babel去compile某一个script文件(使用babel包中的可执行文件)

从上面来看npm的局限性就很大

虽然你的node_module中有babel,等价于你的machine上有babel,但是你不能方便的在任何位置使用babel,只能通过以上的两种方式。

但是有了npx在任何位置使用babel command似乎就不是难题了

当你任何位置(根目录下/项目根目录下)运行 npx babel script.js 不会再报错说babel不存在了:npx会帮你找到本机下的babel然后运行

关于更具体的用法可以参考下面两篇文章

阮一峰npx使用教程
npx的优势和使用方法

四、 nrm

4.1 什么是nrm

nrm 是一个 npm 源管理器,允许你快速地在 npm 源间切换。

4.2 安装nrm

在命令行执行命令,npm install -g nrm,全局安装nrm
或者使用 npx nrm (推荐)

4.3 使用方法

执行命令nrm ls查看可选的源

nrm ls                                                                                                                                    

* npm -------- https://registry.npmjs.org/
  yarn ------- https://registry.yarnpkg.com/
  cnpm ------- http://r.cnpmjs.org/
  taobao ----- https://registry.npm.taobao.org/
  nj --------- https://registry.nodejitsu.com/
  npmMirror -- https://skimdb.npmjs.com/registry/
  edunpm ----- http://registry.enpmjs.org/

其中,带*的是当前使用的源,上面的输出表明当前源是官方源

切换:如果要切换到taobao源,执行命令 nrm use taobao

增加:你可以增加定制的源,特别适用于添加企业内部的私有源,执行命令 nrm add <registry> <url>,其中reigstry为源名,url为源的路径

删除:执行命令 nrm del <registry> 删除对应的源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值