package.json的理解与学习

1、package.json是什么

1、每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。
2、package.json文件可以手工编写,也可以使用npm init命令自动生成。

下面是一个最简单package.json

1
2
3
4
5
{
"name": "",
"version": ""
}
// package.json文件就是一个JSON对象,该对象的每一个成员就是当前项目的一项设置。比如name就是项目名称,version是版本

2、详解package.json里面的各个字段

2.1 scripts字段

scripts指定了运行脚本命令的npm命令行缩写。

1
2
3
4
5
6
7
8
9
10
11
npm run dev 执行了scripts字段里面的dev里面的内容

"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"unit": "jest --config test/unit/jest.conf.js --coverage",
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs",
"build": "node build/build.js"
}

2.2 dependencies字段,devDependencies字段

dependencies((上线和开发都需要的依赖))字段指定了项目运行所依赖的模块,devDependencies(开发时运行的依赖)指定项目开发所需要的模块。
它们都指向一个对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。
关于安装模块的版本需要注意下面几点:

1
2
3
4
5
6
1、指定版本:例如"vue": "2.5.2",即执行npm install时只安装2.5.2版本的vue
2、波浪号(tilde)+ 指定版本:例如"vue": "~2.5.2",即安装2.5.x里面的最新版本,不会安装2.6.x里面的版本
3、插入号(caret)+ 指定版本:例如"vue": "^2.5.2",即安装2.x.x里面的最新版本,但不会安装3.x.x里面的版本
4、latest:安装最新版本,例如:"vue": latest

ps:版本号的3位数字分别对应 大版本,次要版本,小版本

3、engines 字段

engines字段指明了该模块运行的平台。

1
2
3
4
"engines": {
"node": ">= 4.0.0", // 需要node的版本大于等于4.0
"npm": ">= 3.0.0" // 需要npm的版本大于等于3.0
}

4、browserslist 字段

限制了浏览器或者客户端需要什么版本才可运行,一些插件例如Autoprefixer会读取里面配置的浏览器来自动加上css前缀。

1
2
3
4
5
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]

package.json的理解与学习
https://xypecho.github.io/2018/05/29/package-json的理解与学习/
作者
很青的青蛙
发布于
2018年5月29日
许可协议