node第三章( npm Package json)
npm
npm (全称 Node Package Manager)是node.js的包管理工具,它是一个基于命令行的工具,用于开发者
在自己项目中安装、升级、移除和管理依赖项
- 类似于PHP的工具:
Composer。它是 PHP 的包管理器,可以用于下载、安装和管理 PHP 的依赖项,类似于 npm。 - 类似于
Java的工具:Maven。它是 Java 的构建工具和项目管理工具,可以自动化构建、测试和部署 Java 应用程序,类似于 npm 和 webpack 的功能。 - 类似于
Python的工具:pip。它是 Python 的包管理器,可以用于安装和管理 Python 的依赖项,类似于 npm。
npm命令
-
npm init: 初始化一个新的npm项目,创建package.json文件快速生成:
npm init --y快速初始化npm项目 但是 文件名不能包含中文名 -
npm install: 根据package.json 文件 下载依赖 且会在当前目录存放一个node_modules。简写:
npm i注意:如果没有package-lock.json 文件也会生成 如果有就会比较lock文件与package.json是否一致 如果不一致就更新lock里面文件
-
npm install <package-name>: 安装指定包,并将其添加到package.json 文件生产依赖中(npm5.0.0)简写:
npm i <package-name> -
npm install <package-name> --save: 安装指定包,并将其添加到package.json 文件生产依赖中(低版本)简写:
npm i <package-name> 注意: 因为自
npm 5.0.0版本开始,npm install命令默认就会保存依赖信息到package.json文件中,所以--save选项已经不再需要了。如果你使用的是npm 5.0.0或更高版本,你可以直接使用npm i <package-name>来安装并保存依赖。 -
npm install <package-name> --save-dev:安装指定的包,并将其添加到 package.json 文件中的开发依赖列表中。简写:
npm i <package-name> -D -
npm install <page-name> -g全局安装指定的包相同写法 :
npm install -g <package-name>简写 :
npm i <package-name> -g或npm i -g <package-name> -
npm update <package-name>: 更新指定的包简写:
npm up <package-name> -
npm uninstall <package-name>卸载指定的包简写:
npm un <package-name> -
npm run <script-name>: 执行package.json文件里面script中自定义命令 -
npm search <keyword>: 搜索 npm 库中包含指定关键字的包 -
npm info <package-name>: 查看包的详细信息 -
npm list:列出当前项目中安装的所有包 -
npm outdated: 列出当前项目 需要更新的包 -
npm audit: 检查该项目的依赖项是否出现安全漏洞 -
npm publish将自己开发的包发布的npm官网中 -
npm login登录自己npm账号 -
npm logout退出自己npm账号 -
npm link将本地模块链接到全局的node_modules目录下 -
npm config list用于列出 npm配置信息 。执行该命令可以查看当前系统和用户级别的所有npm配置信息以及当前项目的配置信息(如果在当前项目执行该命令) -
npm get registry用户获取用户当前npm镜像源,registry配置项用于npm指定下载地址,如果从未设置过默认是官方镜像源 -
npm set registry<registry-url>将registry设置指定的url -
npm cache clean清除缓存
更多命令查看 docs.npmjs.com/cli-documen…
package.json
执行npm init 可以初始化package.json
-
name: 项目中的名称,必须是唯一 通常采用大小字母和连字符组合使用 -
version:项目版本号 通常采用语义化版本规范 -
description: 项目描述 -
main: 项目的主入口文件路径,通常是一个JavaScript文件 -
keywords:项目的关键字列表 方便他人通过npm搜索发现该项目 -
type:指定模块的类型这个属性的主要作用是确定.js文件应该被当作 CommonJS 模块还是 ES 模块。 -
author: 作者的信息 包含 姓名 邮箱 网址 等 -
license项目的许可证类型 可以是自定义的许可证类型或者常见的许可证类型(MIT APache 等) -
dependencies: 项目中所依赖的包 这些包会在执行npm i自动执行 -
devDependencies项目开发过程中所需要的包 这些包不会随项目一起发布 他只是开发环境需要使用 -
peerDependencies:这是一个对等依赖,也就是你使用的这个包的前提是必须包含另一个包举例:假如你在使用Element-Puls这个UI框架,使用的前提是必须下载vue3,AntDesing依赖于React React-dom
-
scripts:定义了一些脚本命令,比如启动项目、运行测试等。- 配置后我们可以通过
npm run命令的key执行这个命令npm run start
"scripts": { "start": "node ./index.js", }npm run start和npm start的区别是什么?- 他们是等价的,但不是所有命令都能省略
run - 对于常用的
startteststoprestart可以省略run直接执行npm test等
- 他们是等价的,但不是所有命令都能省略
- 配置后我们可以通过
-
bin: 字段用于指定某些脚本作为可执行文件。这些脚本可以在命令行中直接运行,而不需要node命令。 -
repository:项目代码仓库的信息,包括类型、网址等。 -
bugs:项目的 bug 报告地址。 -
homepage:项目的官方网站地址或者文档地址。
依赖的版本管理
npm的包通常需要遵循semver版本的规范
- semver: semver.org/lang/zh-CN/
- npm semver:docs.npmjs.com/misc/semver
semver版本规范是X.Y.Z
- X主版本号(major): 当你有重大更新,并且不兼容以前的版本
- Y次版本号(minor):新增了某些功能并且功能你做了向下兼容
- Z修订号(patch):没有新的功能,修复了一些bug,优化了某个功能
当执行npm install的时候~和^和没有符号的区别
- 举例
"dependencies": {
"vue":"3.2.0",
"dayjs":"^1.11.13",
"axios": "~1.7.9"
}
x.y.z:表示一个明确的版本号,永远不会更新和变动;^x.y.z:表示x是保持不变的,y和z永远安装最新的版本;~x.y.z:表示x和y保持不变的,z永远安装最新的版本;