什么是NPM?
npm是一个JavaScript包管理工具,能够允许开发者轻松地下载、安装、共享、管理项目的依赖库和工具,是node.js自带的包管理工具,因此,你需要先安装Node.js
安装node.js
直接到官网进行下载即可,下载完成后,在终端运行
node -v
NPM的主要功能
包管理
安装各种第三方库,像vue、axios、React等等。
npm install vue
因为npm官方本身是外网的,国内下载非常慢,需要修改下载镜像——一般使用淘宝的镜像
npm install -g cnpm --registry=https://registry.npmmirror.com
package.json的说明与使用
主要作用:用于描述项目的元数据和依赖关系,一般位于项目的根目录,是项目的配置文件
{
"name"://项目名称
"version"://项目的版本号
"description"://项目的简要描述
"main"://项目的入口文件
"script":{//可执行脚本命令
}
"dependencies":{//项目需要依赖库
}
"devDependencies":{//开发环境的依赖库,不会在生产环境中安装
}
"keywords"://关键字,有助于项目在NPM搜索中找到项目
"author"://作者信息
"license"://项目的许可证类型
}
版本管理
可以根据项目情况安装低版本的依赖,也可以进行版本的锁定,或者更新最新的版本。
版本号遵循语义化版本控制(SemVer)
1. 版本格式
-
结构:
MAJOR.MINOR.PATCH
(主版本号.次版本号.修订号)-
MAJOR:不兼容的API变更时递增。
-
MINOR:向下兼容的功能新增时递增。
-
PATCH:向下兼容的问题修复时递增。
-
2. 核心规则
-
0.y.z(初始阶段):视为不稳定版本,MINOR的变化可能包含破坏性变更。
-
版本不可修改:发布后内容不可更改,需通过新版本号修复问题。
-
公共API定义:版本变更基于用户可见的API变动,需明确界定接口范围。
3. 预发布与构建元数据
-
预发布版本:追加连字符标识(如
1.0.0-alpha.1
),优先级低于正式版。 -
构建元数据:加号后添加信息(如
1.0.0+build.123
),不影响版本优先级。
4. 版本比较规则
-
优先级顺序:
1.0.0 < 1.0.1 < 1.1.0 < 2.0.0
。 -
预发布版本低于正式版(如
1.0.0-beta < 1.0.0
)。
5. 应用场景示例
-
PATCH升级:修复Bug(如
1.0.0 → 1.0.1
)。 -
MINOR升级:新增兼容功能(如
1.0.1 → 1.1.0
)。 -
MAJOR升级:破坏性变更(如
1.1.0 → 2.0.0
)。
包发布
开发者可以自己制作npm库后发布到npm仓库中,供其他开发者下载使用。
命令行工具
npm常用命令
npm init -y //初始化一个新的带有默认设置的package.json文件
npm install package-name //本地安装指定包
npm update package-name //更新指定的依赖包
npm uninstall package-name //卸载指定的依赖包
npm list //查看当前项目以安装的依赖包列表
npm login //登录到npm账号
npm publish //发布当前包到npm注册表中
npm run start //运行start脚本,其他脚本类推
PNPM
项目初衷——节省磁盘空间
使用 npm 时,依赖每次被不同的项目使用,都会重复安装一次。 而在使用 pnpm 时,依赖会被存储在内容可寻址的存储中,如果你用到了某依赖项的不同版本,只会将不同版本间有差异的文件添加到仓库。所有文件都会存储在硬盘上的某一位置。
安装
在Windows上
使用 PowerShell:
Invoke-WebRequest https://get.pnpm.io/install.ps1 -UseBasicParsing | Invoke-Expression
使用 npm:
npm install -g pnpm@latest-10
使用 HomeBrew:
brew install pnpm
命令
pnpm add sax//安装软件包及其依赖的任何软件包。
pnpm i || install// 用于安装项目的所有依赖项。
pnpm up || update//更新所有依赖项。
pnpm rm || remove//删除软件包。
pnpm rebuild || rb//重新构建软件包。
pnpm audit --fix//检查已安装程序包的已知安全问题。
pnpm list || ls//此命令将以树结构的形式输出已安装的所有软件包的版本以及及其依赖项。
pnpm run "script"//运行在软件包清单文件中定义的脚本,可以把run省略。
pnpm create *//从 `create-*` 或 `@foo/create-*` 启动套件创建一个项目。