什么是package.json?
package.json是JavaScript我的项目的清单,该文件记录了你的我的项目的名称、版本、依赖等相干信息,同时它也是你将我的项目公布到npm上的根据,能够说,package.json在前端模块化时代,相当于我的项目的身份证,充沛理解package.json的用户和含意是前端必备过程
初始化package.json
通过npm或者yarn指令能够疾速创立package.json文件:
npm init -y// oryarn init -y
-y
示意创立默认的package.json,如果不应用-y
,则会要求你被动填写json内容。
默认文件内容:
{ "name": "test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC"}
package.json的配置
- name
项目名称,必填字段,默认取的是以后我的项目的文件夹名字。
字段值限度:
- 长度必须 <= 214个字符,只能蕴含小写字母、'-'和'_'。如果我的项目要公布到npm,必须合乎该标准,即便不须要公布到npm,咱们仍应该准守这样的标准,养成好习惯
- 如果你的我的项目要公布到npm,name就不能与已有的包名反复,在创立package.json之前,咱们能够通过npm指令来查看是否名字反复:
npm view package-name
package-name替换成本人的我的项目名,如果npm上存在对应的包,会返回该包的模块信息,否则返回404
- version
我的项目版本号,格局为 主版本号.次版本号.订正号
,主版本号通常示意做了不兼容的API批改,次版本号通常示意做了向下兼容的的功能性新增,订正号示意做了向下兼容的bug修复
如果版本改变比拟大,运行不稳固,能够先公布后行版本,在惯例版本号前面通过'-'连贯标识符:外部版本(alpha)、公测版本(beta)和候选版本(rc),如:
'2.1.0.alpha''2.1.0-beta''2.1.0-rc'
后行版本后仍可接小版本后,示意不同的后行版本:
'2.1.0.alpha.1''2.1.0.alpha.5'
通过npm指令,能够查看线上npm包的最新版本以及版本记录
// 查看最新版本npm view package-name version// 查看所有版本号npm view package-name version
- description
我的项目的简介,让他人晓得你的我的项目是用来做什么的,这在你公布到npm上时特地有用
- main
main指定了我的项目的入口文件,当你制作一个插件公布到npm上后,他人通过import和require等形式导入你的我的项目时,导入的就是main指定的文件,如果不指定main字段,则会在导入时主动寻求根目录下的 index.js、index.json等index命名的文件,如果没有找到,导入就会报错。
- scripts
定义我的项目node脚本,通过key-value的模式定义脚本名脚本执行内容,前端我的项目中通过 npm run xx
或 yarn xx
执行对应脚本。比方:npm run dev
比拟少人晓得的一种用法是:通过非凡的命名,能够达到命令前置、后续的操作,比方当你开发运行我的项目开发时,心愿我的项目文档服务先启动,能够这样实现:
{ // ... "scripts": { "dev": "npm run server", "predev": "npm run docs" }}
当你运行指令 npm run dev
时,其中 predev
指令会先执行完,如果你心愿后续再执行其余指令,能够应用 postdev
命令名。
predevpostdev中的dev对应你的dev指令名
- keywords
我的项目的关键词,有助于npm上的搜寻
- author
我的项目作者,能够应用字符串,能够应用对象:
{ "author": "landejin <1294619453@qq.com> (http://landejin.cn)"}
{ "author": { "name": "landejin", "email": "1294619453@qq.com", "url": "http://landejin.cn" }}
- license
我的项目遵循的协定
- contributors
我的项目协作者,应用数组,和author一样能够填写字符串或者对象
{ "contributors": [ "landejin <1294619453@qq.com> (http://landejin.cn)" ]}
- bugs
我的项目的的问题跟踪器,个别能够链接到github的issues
{ "bugs": "https://github.com/nodejscn/node-api-cn/issues"}
- engines
我的项目运行的版本信息,该配置只起阐明作用
{ "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0", "yarn": "^0.13.0" }}
- homepage
我的项目的主页,通常是官网文档之类的文档
{ "homepage": "http://nodejs.cn"}
- private
申明以后包是公有包,防止误操作公布到npm上
{ "private": true}
- dependencies
我的项目公布运行所依赖的npm包,当应用 npm install xx
时,用依赖包会主动写入该配置项
{ "dependencies": { "vue": "^2.5.2" }}
- devDependencies
我的项目开发时所依赖的npm包,写在该配置的包示意只在开发过程中应用,而不会呈现在线上的代码中,比方ESLint、Less等
{ "devDependencies": { "autoprefixer": "^7.1.2", "babel-core": "^6.22.1" }}
- browserslist
用于标识我的项目反对的浏览器环境,babel、Autoprefixer和其余工具会用到该配置
"browserslist": [ "> 1%", "last 2 versions", "not ie <= 8"]
具体的用户和配置能够参考: [https://www.npmjs.com/package...]
下面只列举了罕用的一些配置,package.json还有其余不罕用的、或者特定环境下的配置,就不列举了。