共计 2674 个字符,预计需要花费 7 分钟才能阅读完成。
什么是 package.json?
package.json 是 JavaScript 我的项目的清单,该文件记录了你的我的项目的名称、版本、依赖等相干信息,同时它也是你将我的项目公布到 npm 上的根据,能够说,package.json 在前端模块化时代,相当于我的项目的身份证,充沛理解 package.json 的用户和含意是前端必备过程
初始化 package.json
通过 npm 或者 yarn 指令能够疾速创立 package.json 文件:
npm init -y
// or
yarn 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 还有其余不罕用的、或者特定环境下的配置,就不列举了。