1、什么是package.json?
package.json文件描述了一个NPM包的所有相关信息,包括作者、简介、包依赖、构建等信息。格式必须是严格的JSON格式。当我们创建一个前端项目时候,可以使用npm init命令,通过交互式的命令,自动生成一个package.json文件,里面包含了常用的一些字段信息。
下面是简单的package.json文件格式,仅仅定义了里两个元数据:名称和版本号
{
"name":"xxx",
"version":"0.1.0",
}
package.json文件就是一个JSON对象,该对象的每一个成员就是当前项目的一项设置。比如name就是项目名称,version是版本(遵守“大版本.次要版本.小版本”的格式)。
2、package.json具体配置说明
{
"name": "gml",
"title": "test01",
"author": "2939292@qq.com",
"version": "0.0.0",
"homepage": "xxxxx",
"repository": {
"type": "git/svn",
"url": "https://github.com/xxxxx"
},
"bugs": "https://github.com/xxxxx",
"devDependencies": {
"grunt": "~0.4.5",
"grunt-contrib-less": "~0.11.4",
"grunt-contrib-watch": "~0.6.1",
"grunt-banner": "~0.2.3",
"grunt-contrib-uglify": "~0.5.1"
},
"scripts": {
"preview": "cd _site; python -m SimpleHTTPServer 8020",
"py3view": "cd _site; python3 -m http.server 8020",
"watch" : "grunt watch & npm run preview & jekyll serve -w",
"py3wa" : "grunt watch & npm run py3view & jekyll serve -w",
"boil" : "git push boilerplate boilerplate:master",
"push" : "git push origin master --tag",
"cafe" : "git co gitcafe-pages; git merge master; git push gitcafe gitcafe-pages:gitcafe-pages --tag; git co master;"
}
}
必须字段
1.Name
项目名称
全部小写,没有空格,可以使用下划线或者横线
2.Version
项目版本号
x.x.x 的格式
符合“语义化版本规则”
可选字段
1.title
标题
2.author
"author": "gml <29392923829@qq.com>",
3.homepage
项目url主页
4.repository
用于指示代码存放的位置。
"repository": {
"type": "git/svn",
"url": "https://github.com/choerodon/choerodon.git"
}
6.devDependencies
指定项目开发所需要的模块,如果只需要下载使用某些模块,而不下载这些模块的测试和文档框架,放在这个下面比较不错。
"devDependencies": {
"eslint":"^5.15.1",
"eslint-config-airbnb":"^17.1.0",
"eslint-plugin-babel":"^5.3.0",
"eslint-plugin-import":"^2.17.2",
"eslint-plugin-jsx-a11y":"^6.2.1",
"eslint-plugin-react":"^7.13.0",
"lint-staged":"^8.1.7"
}
7.scripts
object
Key是生命周期事件名,value是在事件点要跑的命令。参考npm-scripts。
**scripts指定了运行脚本命令的npm命令行缩写,比如push指定了运行npm run push时,所要执行的命令。
"scripts": {
"dev":"rimraf .cache && npm start",
"start":"yqcloud-front-boot start --config ../config.js",
"build":"yqcloud-front-boot build --config ../config.js",
"lint":"npm run lint:es && npm run lint:style",
"lint:es":"eslint src/**/*.{js,jsx} ../config.js",
"lint:style":"stylelint src/**/*.scss --syntax scss",
"lint-staged":"lint-staged",
"lint-staged:es":"eslint",
"eslint":"npm run eslint:fix",
"eslint:fix":"eslint --fix 'src/**/*.js*'"
},
其它字段
1.Dependencies
指示当前包所依赖的其他包。
{ "dependencies" :
{ "foo" : "1.0.0 - 2.9999.9999"
, "bar" : ">=1.0.2 <2.1.2"
, "baz" : ">1.0.2 <=2.3.4"
, "boo" : "2.0.1"
, "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
, "asd" : "http://asdf.com/asdf.tar.gz"
, "til" : "~1.2"
, "elf" : "~1.2.3"
, "two" : "2.x"
, "thr" : "3.3.x"
}
}
版本格式可以是下面任一种:
* ersion 完全匹配
* >version 大于这个版本
* >=version大于或等于这个版本
* <version
* <=version
* ~version 非常接近这个版本
* ^version 与当前版本兼容
* 1.2.x X代表任意数字,因此1.2.1, 1.2.3等都可以
* http://... Unix系统下使用的tarball的URL。
* * 任何版本都可以
* ""任何版本都可以
* version1 - version2 等价于 >=version1 <=version2.
* range1 || range2 满足任意一个即可
* git... Git地址
* user/repo
2.License
授权方式,如果是使用一个普遍的license,比如BSD-3-Clause或MIT,直接使用:
{ "license" : "(ISC OR GPL-3.0)" }/{ "license" : "BSD-3-Clause" }/{ "license" : "SEE LICENSE IN <filename>" }
如果您不希望以任何条款授予他人使用私有或未发布软件包的权利:
{ "license": "UNLICENSED" }
3.main
main字段指定了加载的入口文件,require(‘moduleName’)就会加载这个文件。这个字段的默认值是模块根目录下面的index.js。
4.Config
object
Config对象中的值在Scripts的整个周期中皆可用,专门用于给Scripts提供配置参数。
5.Keywords
字符串数组。人们使用 npm search 搜索时发现你的项目
6.Description
必须是字符串。npm search的时候会用到。
7.Bin
bin项用来指定各个内部命令对应的可执行文件的位置。很多的包都会有执行文件需要安装到PATH中去。
这个字段对应的是一个Map,每个元素对应一个{ 命令名:文件名 }。
{ "bin" : { "npm" : "./cli.js" } }
8.Engines
engines字段指明了该模块运行的平台,比如 Node 的某个版本或者浏览器
既可以指定node版本:
{ "engines" : {"node" : ">=0.10.3 <0.12" } }
也可以指定npm版本:
{ "engines" : {"npm" : "~1.0.20" } }
以上只是总结一部分以及常用的字段,详细信息鉴于npm官网:http://caibaojian.com/npm/