npm介绍

npm

前言:我们在日常使用npm下载包的时候,可能就是在网上搜一下下载教程,然后按照那些文章中所介绍的命令去下载。我相信在执行那些命令的时候,大部分人都不知道,到底为什么要这样子写,只知道使用这些命令可以下载到自己想使用的包。如果你想了解那些命令是什么意思的话,那么希望这篇文章可以带给你一些收获。

认识npm

npm是一个NodeJS包管理器和分发工具,当我们需要使用npm命令的时候,我们需要安装一下Node.js,不然我们就不能使用npm命令。

Node.js下载网址:https://nodejs.org/en/download/

我们会看到如下界面:

npm可以下载python吗 npm如何下载_npm可以下载python吗

我们会看到有一个LTS版本和一个Current版本,那么我们该如何选择呢?

我来先给咱们解释一下:其实从版本号就可以看出一个新一个老。Current就是当前最新的版本,最新的功能特性都在这里面了。就是拿来给你试用测试的,要是大家都用得还好,功能稳定了,就发布到LTS版本。所以LTS就是稳定版。

在这里我建议大家选择LTS版本的,它不仅可以满足我们的日常学习,而且主要的是它用着稳定,简直香喷喷。

当我们安装好Node之后,因为npm是Node自带的一个包管理器,所以所我们不需要安装,就可以直接使用npm去运行命令啦。

如果想查看自己的node的版本号,我们可以使用win+R组合键,打开cmd,在里面输入node -v就可以查看自己所安装的Node的版本号了。

npm命令

在这里我会将平时经常用到的npm命令展示给大家。

1.下载包命令
npm install 包的名称  // 也可以简写为 npm i 包的名称

在这里我给大家推荐一个搜索需要使用的包的网址:https://www.npmjs.com/,在这个网站上面,只要你有足够的耐心去寻找所想要的包,你可以找到好多优秀好用的包。同时也介绍了下载这包的命令。

但是大家在下载一些包的时候,是不是速度经常很慢很慢。这是因为npm默认的是当国外的网站上下载,所以说速度会很慢很慢。在这里我们为了提高下载的速度,可以使用国内的淘宝镜像。

那我们如果知道自己当前的默认下载路径呢,在这里我们可以使用:

npm config get registry  //查询当前自己所使用的默认下载路径

当我们需要切换到淘宝镜像的时候,我们可以执行:

npm config set registry=https://registry.npm.taobao.org/     //切换到淘宝镜像

到这里你有没有觉得上面的切换代码的方式很麻烦,需要写好长一串代码,而且一个不留神写错了,也运行不了。在这里我给大家推荐一个很好用的小工具,它可以快速的查看和切换下包的镜像源-------nrm。我们可以通过

npm i nrm -g // 将nrm安装为全局可用的工具
//查看所有的镜像源
nrm ls
// 切换下包的镜像
nrm use taobao

当我们执行了nrm ls命令后,可以得到下图:

npm可以下载python吗 npm如何下载_前端_02

我们可以根据返回的目录,选择想要使用的镜像源,然后输入 nrm use [镜像源],就可以切换到相应的镜像源去下载了。是不是使用了这个工具之后就方便了好多。

全局包命令:

会将包安装为全局包,默认会安装在:C:\Users\XXXXX\AppData\Roaming\npm\node_modules

npm install 包名 -g

我们在平时的下载中也会经常遇到:

npm i 包名 -D    // devDependencies,开发依赖包,只在开发期间使用
或
npm i 包名 --save-dev    // devDependencies
或
npm i 包名 --save   // dependencies,核心依赖包,在开发期间和项目上线之后都会用到

以上三种中,我们前两种没啥区别(-D就是--save-dev的缩写)。在我们安装包的时候,会在我们多安装的目录里面,创建一个packpage.jsonpackpage-lock.json的配置文件,如果没有packpage.json文件的话,我们可以使用npm init -y来创建配置文件。在pack-lock.json中写入了一些项目的名称、下载的包的名称、版本号、下载地址等。在packpage.json中,会存在dependenciesdevDependencies,当我们使用前两个命令时,下载的包名添加在devDependencies中,使用最后一个会添加包名到dependencies中。

现在我来解释以下:,一些包我们在发布后用不到它,而只是在我们开发才用到它,那么就使用--save-dev比较好,在devDependencies下创建模块。而dependencies 下的模块,则是我们发布后还需要依赖的模块,譬如像jQuery库或者Angular框架类似的,我们在开发完后后肯定还要依赖它们,否则就运行不了。

2.卸载包命令
npm remove 包名 [-g] 简写 npm rm 包名  
或
npm uninstall 包名
需要注意的是:以上两个没啥区别  只不过是 remove 是 uninstall 的别名,它的别名还有,un、rm、unlink
3.更新包
npm update 包名  简写:npm up 包名
4.查看已安装的包
npm list [-g]  简写 npm ls [-g]
5.清除缓存
npm cache clean --force
6.npm 查看命令
npm root  # 查看项目中模块所在的目录
npm root -g  # 查看全局安装的模块所在目录
npm list 或者 npm ls  # 查看本地已安装模块的清单列表
npm view jquery dependencies  # 查看某个包对于各种包的依赖关系
npm view jquery version  # 查看jquery最新的版本号
npm view jquery versions  # 查看所有jquery历史版本号(很实用)
npm view jquery  # 查看最新的jquery版本的信息
npm info jquery  # 查看jquery的详细信息,等同于上面的npm view jquery
npm list jquery 或 npm ls jquery  # 查看本地已安装的jquery的详细信息
npm view jquery repository.url  # 查看jquery包的来源地址
  1. npm 其他命令
npm cache clean  # 清除npm的缓存
npm prune  # 清除项目中没有被使用的包
npm outdated  # 检查模块是否已经过时
npm repo jquery  # 会打开默认浏览器跳转到github中jquery的页面
npm docs jquery  # 会打开默认浏览器跳转到github中jquery的README.MD文件信息
npm home jquery  # 会打开默认浏览器跳转到github中jquery的主页

模块加载机制

优先从缓存缓存中加载

模块在第一次加载后会被缓存。这也就意味了多次调用require不会导致代码被执行多次。

内置模块加载的优先级最高
自定义模块:

必须指定以 ./ 或 …/开头的路径标识符,若不指定,node则会将内置模块或者第三方模块进行加载。同时,如果省略文件的扩展名,则会按照顺序分别尝试加载以下文件:

1.按照确切的文件名进行加载

2.补全.js扩展名进行加载

3.不全.json扩展名进行加载

4.不全.node扩展名进行加载

5.加载失败,终端报错
第三方模块

如果传递给require()的模块不是一个内置模块,也不是自定义模块,则Node.js会从当前模块的目录开始,尝试从/node_modules文价夹中加载第三方模块。

把目录作为加载模块

再将目录作为加载模块时,

1.首先,会查找目录下面的packpage.json的文件,然后在里面寻找main属性,作为require的加载的入口。

2.如果第一步查找失败,则会在文件夹下面查找index.js 文件

3.如以上两步全都失败,则会打印错误信息,报告,模块缺失