关于npm
npm 是世界上最大的软件注册表。来自全球的开源开发人员使用 npm 来共享和借用包,当然也可以创建私有包在私有项目中使用
1. npm组成
- 网站:(webSite): 提供了搜索、浏览和管理 npm 包的用户界面,同时也是一个社区交流的平台
- 命令行工具: 用于在本地安装和管理 Node.js 应用程序的依赖包,
- npm 注册表(Registry): :一个庞大的在线数据库,存储了数以万计的可重用的 JavaScript 模块
2. npm初始化
使用npm init或者npm init -y(直接选择所有默认值)可以快速生成一个node项目,同时当前文件夹下会存在一个package.json文件,大致内容如下:
{
// 包的名称,必填项 小写,且不含任何空格。可以包含连字符、点和下划线
"name": "npmtest",
// 包版本 必填项,需要遵循[版本控制准则](https://docs.npmjs.com/about-semantic-versioning)
"version": "1.0.0",
"description": "", // 包的描述
"main": "index.js", // 包的入口文件
// 脚本命令
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
// 作者
"author": "",
// 许可证:常见的 :
// 1. ISC(它允许用户自由地使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的 副本)
// 2. MIT(允许用户自由地使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副 本,但必须包含版权声明和许可声明
// 3. GPL 一个强 copyleft 许可证,要求任何使用或衍生该软件的作品都必须使用相同的许可证发布。这意味着任何使用 GPL 许可证的软件的项目也必须开源
"license": "ISC"
}
3. 关于README .md
- 在文本编辑器的包根目录中,创建一个名为 .
README.md的文件,它包括有关在包中安装、配置和使用代码的说明;以及用户可能认为有用的任何其他信息
4. 关于dependencies和devDependencies
在 npm 项目中,dependencies 和 devDependencies 是 package.json 文件中的两个重要字段,用于区分生产环境和开发环境的依赖项
dependencies
- 定义:
dependencies列出的是项目在生产环境中运行所必需的依赖项 - 用途:
- 这些依赖项是项目正常运行所必需的。
- 当用户通过
npm install安装项目时,这些依赖项会被自动安装
- 这些依赖项是项目正常运行所必需的。
- 当用户通过
- 例子:比如
loadsh,axios,exprss这些在正式上线或者打包后都需要用到的依赖 - 安装命令:
npm i package
devDependencies
- 定义:
devDependencies列出的是项目在开发和构建过程中所需的依赖项。 - 用途:
- 这些依赖项主要用于开发、测试和构建过程,而不是运行时。
- 当用户通过
npm install --production安装项目时,这些依赖项不会被安装
- 例子:比如
eslint,webpack这些只在本地运行需要使用的依赖,在正式上线和打包后并不需要 - 安装命令:
npm i package -D或npm i package --save-dev
关于语义版本控制
- 补丁版本:
1.0``1.0.x``~1.0.4 - 次要版本:
1``1.x``^1.0.4 - 主要版本:
*``x在 a.b.c中,a就是主要版本,b为次要版本,c是补丁版本, 常见用法举例:
"dependencies": {
// 安装准确版本
"[package]": '1.2.2'
// 允许安装次要版本和补丁版本(即 `1.x.x`),但不跨越主要版本。如果在使用npm install安装依赖的时候,package.json中是^1.0.0,但是实际包已经更新到了1.2.3,那么实际下载的包会是1.2.3
"[package]": "^1.0.0",
//允许安装补丁版本(即 `1.2.x`),但不跨越次要版本。
"[package]": "~2.2.0"
//允许安装所有大于或等于 `2.2.0` 的版本。
"[package]": ">=2.2.0"
// 允许安装所有小于 `2.2.0` 的版本。
"[package]": "<2.2.0"
// 允许安装所有大于或等于 `1.2.3` 且小于 `2.0.0` 的版本
"[package]": ">=1.2.3 <2.0.0"
},
关于npm的常见命令
- npm install package@version或者npm install package 安装指定的包。
- npm install
- 如果
package-lock.json文件不存在,npm i会根据package.json创建一个package-lock.json文件。 - 如果package-lock.json文件存在,npm i会根据package.json中的依赖版本范围和现有的package-lock.json文件来安装依赖,并在必要时更新package-lock.json文件。 - 如果package.json中的依赖版本范围发生变化,npm i会更新package-lock.json文件以反映这些变化。
- 如果
- npm ci
- 项目必须存在
package-lock.json - 只会根据
package-lock.json更新整个项目,不能用来更新单个项目,它并不会更新package-lock.json - 如果node_modules已经存在,它会删除node_modules再更新
- 项目必须存在
- npm uninstall package 删除指定的包
- npm cache clean 清楚npm缓存
- npm config get registry 获取当前配置的 npm 注册表地址
- npm config set registry 修改当前配置的 npm 注册表地址,一般会改成淘宝镜像源:registry.npmmirror.com