此篇文章适合于对 JavaScript nodejs npm json 有一定了解,但不清楚 package.json 文件具体作用及其含义的读者
什么是 package.json 文件?
nodejs 的项目遵循模块化的架构,package.json 文件是用来描述项目的相关信息,便于 npm、yarn 等包管理工具对项目进行操作。简单的来理解,就是每个项目都可以被叫做“包”,package.json 则是用来描述包信息的一个文件,一般存在于项目的根目录下。
直接上个实例 :
package.json 文件本身是 json 文件,当然也遵循 json的语法.
JSON语法参考链接 => https://www.runoob.com/json/json-syntax.html
// package.json 文件内容
{
"name": "demo", // 包名,必须,字母小写,无空格,下划线、横线可选
"version": "1.1.0", // 版本号,必须
"author": "Viki", // 作者信息
"description": "source code repo", // 包描述
"main": "main.js", // 入口文件
"license": "MIT", // 遵循的协议
"scripts": {
// 自定义脚本
"start": "react-native run-android" // 脚本示例
// ... 其他自定义脚本
},
"dependencies": {
// 生产依赖(项目正式上线时所依赖的包)
"react": "^16.13.1" // 表示兼容 react 的16.13.1版本
// ... 其他生产依赖
},
"repository": {
// 项目仓库信息
"type": "git",
"url": "git@github.com:abc/xyz.git"
},
"devDependencies": {
// 开发依赖(开发和测试环境中依赖的包)
"@babel/core": "~7.0.0"
// ... 其他开发依赖
}
// ... 以上是常见的描述信息,还可在此添加其他自定义的描述信息
}
它有什么用?
它配置和描述了该如何与项目进行交互、运行。包管理器(npm、yarn等)也可以通过它来识别项目并分析出如何处理项目的依赖关系。当你执行npm instal或者yarn来安装依赖的时候,就是通过这个文件来识别。此外,如果你的项目需要发布到 npm 的 registry 上供别人使用,也需要通过这个文件来提供项目的信息。
在 npm 5.x 及以上还会生成一个 package-lock.json 文件,它用来描述更加确切的版本信息。package.json 文件有缺陷,只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,每次 npm install 拉取的是该大版本下的最新的版本,为了稳定性考虑,我们几乎是不敢随意升级依赖包的,这将导致多出来很多工作量,测试/适配等,所以 package-lock.json 文件出来了,当你每次安装一个依赖的时候就锁定在你安装的这个版本。
自定义字段
package.json 文件中的字段不是固定的。如果你要发布的话,那就只有 name 和 version 是必须的,其他可选,且可以根据需要自定义添加。需要的时候可被其他文件引用。如果不需要发布,则任何都是可选的,且建议将private字段设置为true并移除main入口,这样可以防止代码意外发布(示例在下方,加减分别代表增删)。
{
+ "private": true,
- "main": "index.js",
}
其他字段参考: keywords、contributors、homepage、preferGlobal、style、bin、bugs、config、browser、engines、man、peerDependencies
脚本(scripts)字段
这个字段约定了什么时候用npm start,npm run dev应该执行什么,或者说它告诉了程序员npm start运行的是什么命令。使用的时候可根据需要, 在此自定义。
例如:若一个项目的 package.json如下
{
"name": "demo",
"version": "1.0.0",
"scripts": {
"start": "cd app && react-native run-android"
}
}
则在项目路径下运行npm run start或者yarn start时,等效于执行cd app进入 app 目录,然后执行react-native run-android
版本描述方式
常见的版本描述方式有以下几种
具体的版本 比如1.2.2,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。
~ + 版本 比如~1.2.2,表示安装 1.2.x 的最新版本(不低于 1.2.2),但是不安装 1.3.x,也就是说安装时不改变大版本号和次要版本号。
^ + 版本 比如ˆ1.2.2,表示安装 1.x.x 的最新版本(不低于 1.2.2),但是不安装 2.x.x,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为 0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
latest 安装最新版本。
如何生成?
手动写:
新建一个文本文件并修改文件名和后缀名为package.json
自动生成:
通过npm init新建,前提是已经配置好了 npm 的环境.
想了解更多?
强烈推荐阅读 => package.json文件:
https://javascript.ruanyifeng.com/nodejs/packagejson.html
No comments:
Post a Comment