NPM(Node Package Manager) Node包(模块)管理工具,借助NPM,可以帮助用户快速安装和管理依赖包,这样我们就可以很方便的使用来自全球Node开发者提供的包
那么什么是NPM以及包, 包跟模块又有什么区别?
1. 什么是包
所谓的包就是CommonJS的包规范, 在模块的基础上进一步组织JavaScript代码的方式
包模块示意图:
CommonJS的包规范定义包是由包结构和包描述文件两部分组成. 前者用于组织包中的各种文件, 后者则用于描述包的相关信息.以供外部读取分析
CommonJS模块的基本单位 就是单个的JS文件,但复杂的功能往往由多个子模块组成,为了便于管理和使用,我们可以把由多个子模块组成的大模块成为包,并把所有的子模块放在同一个目录里
组成一个包的所有子模块中需要一个入口模块,入口模块的导出对象被称为包的导出对象
默认包中的入口模块为index.js,也可以在包中新建一个package.json 包描述文件,设置main属性值为模块入口
简单理解如下:
包 === 项目
模块 === 文件
2. 包结构
package.json
是node.js
项目的包描述文件,以JSON格式的形式描述文件
2.1 如果创建package.json
npm init
自动快速初始化项目(全部以yes生成package.json)
npm init -y
2.2 package.json
的常用属性
- name 项目名称
- version 版本号
- description 项目描述
- main 主入口文件
- dependencies 依赖描述
- devDependencies 开发时依赖(导出不依赖)
- scripts 脚本命令(可以使用npm命令进行执行)
- license 开源协议
- keyword 关键字
3. NPM
CommonJS包规范是理论, NPM是其中的一种实践.借助NPM,可以帮助用户快速安装管理依赖包.
3.1 安装包
- 安装包(安装最新版)
// npm install '<包的名称>'
npm install express
可以缩写
npm i express
效果同上
执行上面的命令, npm会在当前目录下创建node_modules目录, 然后在node_modules目录下创建express目录, 接着将包解压到这个目录
安装成功后,就可以通过require()引入该包
const express = require('express')
- 指定安装包的版本
npm i '<包的名称>@版本号'
npm i express@1.0.0
- 全局安装包
npm i '包的名称' -g
如果包中含有命令行工具, 那么需要使用-g
参数,进行全局模式安装包.
查看全局安装的位置
// 查看全局包的路径
npm root -g
在c盘,用户下的 AppData目录下 的Roaming下的npm下的node_modules文件夹里
- 将安装的包写入依赖
npm i '包的名称' --save
将安装包写入package.json依赖列表
- 将安装的包写入开发时依赖
npm i '包的名称' --save-dev
3.2 npm其他命令
- 搜索包
npm search '包的名称'
- 查看包的信息
npm view '包的名称'
- 卸载包
npm uninstall '包的名称'
- 更新包
npm update '包的名称'
4. cnpm
npm就是一个下载工具,默认就是取github上去下载,下载会比较忙,所以淘宝做了镜像.10分保持跟官网一次同步,只能下载不能上传
npm官网:www.npmjs.com
淘宝镜像: http://npm.taobao.org/