此篇文章适合于对 npm
, node
有一定了解,但不清楚 package.json
文件具体作用及其含义的读者
package.json 文件是什么?
nodejs
的项目遵循模块化的架构,package.json
文件是用来描述项目的相关信息,便于 npm
、yarn
等包管理工具对项目进行操作。简单的来理解,就是每个项目都可以被叫做“包”,package.json
则是用来描述包信息的一个文件,一般存在于项目的根目录下。
直接上个实例
package.json
文件本身是 JSON
文件,当然也遵循 JSON
的语法.
1 | // package.json 文件内容 |
它有什么用?🤔
它配置和描述了该如何与项目进行交互、运行。包管理器(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
入口,这样可以防止代码意外发布(示例在下方,加减分别代表增删)。
1 | { |
例如:博客项目可能还需要
"title": "Viki's Blog"
类似的字段
其他字段参考: keywords
, contributors
, homepage
, preferGlobal
, style
, bin
, bugs
, config
, browser
, engines
, man
, peerDependencies
脚本(scripts)字段 👟
这个字段约定了什么时候用npm start
,npm run dev
应该执行什么,或者说它告诉了程序员npm start
运行的是什么命令。使用的时候可根据需要在此自定义。
例如:若一个项目的 package.json
如下
1 | { |
则在项目路径下运行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
的环境