npm是什么?
npm是 一个包共享平台,npm是包管理工具
可通过npm官方平台https://www.npmjs.com/查询自己需要的包
npm的使用
Node.js自带了npm管理工具,所以只要安装了Node.js就可以使用npm
查看npm版本
npm -v
包是什么?
第三方模块又叫包
规范的包结构
- 包必须以单独的目录而存在
- 包的顶级目录下必须包含package.json这个包管理配置文件
- package.json必须包含name version main三个属性
安装包
- 安装包的最新版本,在终端使用
npm install 包名称
或npm i 包名称
。 - 安装指定版本,在终端使用
npm install 包名称@指定版本
或npm i 包名称@指定版本
包版本号规定使用三段式,例如2.24.0
第1位数字:大版本
第2位数字:功能版本
第三位数字:修复版本号
前面版本增长,后面版本号就要归零
初次安装包后
项目根目录会多一个叫 node_modules
的文件夹和package-lock.json
的配置文件
node_modules
:用来存放所有已安装到项目中的包
package-lock.json
:记录node_modules目录下的每个包的下载信息
package.json
npm规定,在项目根目录,必须提供一个叫package.json的包管理配置文件,用来记录与项目有关的一些配置文件。
package.json
方便剔除node_mosules目录之后,在团队成员之间共享项目的源代码
快速创建package.json
npm init -y
只能在英文的目录下运行成功且名称不能出现中文和空格
安装包后 npm包管理工具会自动把包名称和包版本号,记录到package.json中。
一次下完 package.json中的包使用 npm install
或npm i
卸载包使用npm uninstall 包名
dependencies节点
专门记录安装了哪些包。
线上线下都要用则记录到dependencies节点中
devDependencies节点
只在项目开发阶段用到,线上不会用到,则记录到这个节点。
使用npm i 包名 -D
或npm i 包名 --save-dev
下包慢问题
默认从国外https://registry.npmjs.org服务器进行下载
解决这个问题可以,切换npm的下包的镜像源。使用到淘宝(NPM镜像服务器)
镜像:是一种文件存储形式, 一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本为镜像
查看当前下包镜像源
npm config get registry
将下包的镜像切换为淘宝镜像源
npm config registry=https://registry.npm.taobao.org/
使用npm config get registry
查看镜像是否下载成功
nrm工具
可以快速查看和切换下包镜像
1.全局安装
npm i nrm -g
- 查看可用镜像
npm ls
- 切换为淘宝镜像
nrm use taobao
全局包
在安装包时添加-g
全局安装
全局包默认安装到c:/User/AppData/Roaming/npm/node_modules
目录下
工具性质的包才有全局安装的意义
卸载全局包
npm uninstall 包名 -g
开发自己的包
新建一个项目(文件夹)
包含:
package.json
index.js
README.md
包不能重名,需要提前在包管理平台 http://www.npmjs.com/搜一下创建的名字是否已经存在
package.json
使用npm init -y
快速创建package.json文件
{
"name": "mynpm",
"version": "1.0.0",// 版本号
"description": "", // 搜索时提示的文字
"main": "index.js", //入口文件
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],//搜索的关键词
"author": "",
"license": "ISC" //开源许可协议
}
index.js
fuction myMethod(){//具体方法...}
module.exports = {
myMethod
}
README.md
##安装
##导入
##具体使用
发布包流程
- http://www.npmjs.com/ 登录
2. 在终端登录
npm login
依次输入用户名、密码、邮箱后,即可登录成功
登录前需要包下包服务器切换到npm官方服务器
3. npm publish
注意包名不能雷同
删除已发布的包
- 72小时内可以删除,使用
npm unpublish 包名 --force
- 删除的包24小时内不允许重新发布
- 尽量不发布没有意义的包