13-npm package.json
package.json
npm 5 版本在延续 npm 3 扁平化依赖包安装方式的基础上,新增了一个package-lock.json文件。package-lock.json的主要作用就是锁定依赖项的安装目录和依赖包的版本信息。
当我们执行npm install的时候,node会从package.json文件读取模块名称,从package-lock.json文件中获取版本号。cnpm install不会去pack-lock.json中获取任何信息的,它只会根据各依赖包的配置下载对应版本的包。
package.json 位于模块的目录下,用于定义包的属性,当你的项目需要依赖多个包时,推荐使用 package.json。其优点为:
- 它以文档的形式规定了项目所依赖的包
- 可以确定每个包所使用的版本
- 项目可以重复的构建,在多人协作时更加方便
创建package.json文件
方式一:手动创建,文件中必须包含: name 和 version
方式二:通过
npm init
命令生成遵守规范的 package.json文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (node_modules) runoob # 模块名
version: (1.0.0)
description: Node.js 测试模块(www.runoob.com) # 描述
entry point: (index.js)
test command: make test
git repository: https://github.com/runoob/runoob.git # Github 地址
keywords:
author:
license: (ISC)
About to write to ……/node_modules/package.json: # 生成地址
{
"name": "runoob",
"version": "1.0.0",
"description": "Node.js 测试模块(www.runoob.com)",
……
}
Is this ok? (yes) yes以上的信息,你需要根据你自己的情况输入。在最后输入 “yes” 后会生成 package.json 文件。
该文件就是一个符合 npm 规范的 package.json 文件。这里的 index.js 作为包的接口。
也可简单的使用
npm init -y
。其中-y
(代表yes)
Package.json 属性说明
- name - 包名。全部小写,没有空格,可以使用下划线或者横线
- version - 包的版本号。x.x.x的格式,符合语义化规则
- description - 包的描述,有助于搜索。
- homepage - 包的官网 url 。
- author - 包的作者姓名。
- license:默认是MIT
- contributors - 包的其他贡献者姓名。
- dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
- devDependencies,在开发、测试环境中用到的依赖
- repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
- main - main 字段指定了程序的主入口文件,require(‘moduleName’) 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
- keywords - 关键字,有助于人们使用npm search搜索时候发现你的项目
- scripts:支持的脚本,默认是一个空的test
指定依赖包
两种依赖包:
- dependencies: 在生产环境中需要依赖的包。通过
npm install <packge> --save
命令自动添加依赖到文件(或者使用简写的参数-S
)。 - devDependencies:仅在开发和测试环节中需要依赖的包。通过
npm install <packge> --save-dev
命令自动添加依赖到文件(或者使用简写的参数-D
)。
当然你也可以在文件中手动添加依赖
如果其他人也需要这个项目,只需要把这个 package.json 文件给他,然后进行简单的 npm install
即可。
语义化版本规则
我们经常看到设置有依赖dependencies的内容,例如 “vue”: “^2.5.22”,key是依赖包的名称,value是这个依赖包的版本,那么版本签名的^是什么意思呢,或者版本前面直接是一个*是什么意思,这就是npm的语义化版本规则。
npm包提供者需要了解npm规则,应该注意版本规范,如果打算与别人分享,应该从1.0.0版本开始,遵循如下标准
- 补丁版本,解决了bug或者一些较小的更改,增加最后一位数字,如:1.0.1
- 小版本,增加了新特性,同时不会影响之前的版本,增加中间一位数据,如:1.1.0
- 大版本,大改版,无法兼容之前的版本,增加第一位数字,如:2.0.0
使用者,可以在package.json文件中写明可以接受的更新程度,
- 接受补丁版本的更新,1.0 1.0.x -1.0.4
- 接受小版本的更新,1 1.x ^1.0.4
- 接受大版本的更新 * x