在NPM包管理系统中,package.json是一个重要文件,通过这个文件可以进行模块述、管理局部安装的包、运行脚本等。
1. package.json文件的作用
我们在项目中管理项目依赖包时,通过会创建一个package.json文件,这个有很多作用,如:
- 指定包/项目名、版本号
- 指定程序入口点
- 指定包
npm脚本信息 - 为项目所依赖的包提供文档
- 根据
npm的语义规则为依赖包指定所需的版本
2. package.json中的必须项
package.json是一个json格式的文件。在一个package.json,至少应该包含以下属性:
- "name":包/项目名。命名规则如下:
- 全部小写
- 只能是一个单词,不能有空格
- 可以包含横线、下划线
- "version":版本号
示例,下面是一个最简单化的package.json文件:
{
"name": "my-package-name",
"version": "1.0.0"
}
3. 创建package.json文件
3.1 问答方式创建
创建一个package.json文件,可以使用npm init命令:
npm init
输入命令后,npm会通过命令行问答的方式来初始化并创建package.json文件。
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: (npm) my-package
version: (1.0.0)
description: 我的第一个包
entry point: (index.js)
test command:
git repository:
keywords:
author: IT笔录-niefengjun.cn
license: (ISC)
About to write to /Users/liuht/code/npm/package.json:
{
"name": "my-package",
"version": "1.0.0",
"description": "我的第一个包",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "IT笔录-niefengjun.cn",
"license": "ISC"
}
Is this ok? (yes)
3.2 --yes初始化标识创建
如果觉得命令行模式复杂,可以添加--yes或-y参数,这样npm就会使用一些默认值进行初始化。
npm init --yes
这样,你不用回答任何问题就可以创建一个包含以下初始值的package.json文件:
{
"name": "my_package",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
在这个文件中各字段值,及取值方法如下:
name:包/项目名。当不存在git目录时,使用文件夹名;存在时使用git库名version:版本号。默认为1.0.0description:包/项目的描述。默认为空("")main:包/项目的启动文件(入口点)。默认为index.jsscripts:脚本。默认会创建一个空的test脚本。可以通过npm <script-name>的命令格式执行脚本,如:npm test会执行测试脚本。keywords:在npm中使用的查询关键字。默认为空数组([])author:包/项目作者。默认为空("")license:发行许可。默认为ISC
4. 管理依赖项
如果项目依赖(使用)了其它的包,也可以在package.json文件中进行管理。有以下两种管理依赖包的方式:
dependencies:在生产环境所使用的包devDependencies:在开发环境所使用的包
如,在项目生产环境中需要版本不低于1.0名为my_dep的包,而在开发环境中还需要版本不低于3.1名为my_test_framework的包,编辑这两个节点如下:
{
"name": "my_package",
"version": "1.0.0",
"dependencies": {
"my_dep": "^1.0.0"
},
"devDependencies" : {
"my_test_framework": "^3.1.0"
}
}
添加后运行npm install命令,相关模块就会被安装到当前项目的node_modules目录下。
使用--save和--save-dev安装参数
npm提供了更简单的安装和保存包的方式,在安装命令中添加--save和--save-dev参数,指定的包就会被安装且依赖信息会被保存在dependencies或devDependencies节点中。
将包信息写入package.json文件的dependencies节点下:
npm install <package_name> --save
将包信息写入package.json文件的devDependencies节点下:
npm install <package_name> --save-dev
