背景
目前 需要维护一个开源组件,想学习一下开源组件和一般项目的package.json的区别。
目标
• 了解package.json与项目的关系
• 了解常见字段
• 了解怎样管理package.json文件
package.json 是什么
我们在项目的根目录下都会看见有package.json,这个文件究竟有什么用呢?它包含关于项目的使用人可读元数据,比如项目名称和说明,以及功能元数据,比如程序包的版本号和程序所需的依赖项列表。
有什么用?
package.json 是配置和描述如何与程序交互和运行的中心。 npm CLI (和yarn )用它来识别你的项目,并了解怎样去处理项目的依赖关系。package.json 文件可以用npm启动项目,运行脚本、安装依赖项、发布到NPM注册表以及许多其他有用的任务。
常见字段
name
“name”: “my-project”
这个字段定义包的名称,发布到NPM注册表的时候,这是软件包在其中显示的名称。最长限制214个字符,只能是小写字母。
如果将软件包发布到NPM,这个字段是必须并且唯一的。如果尝试用NPM注册表上当前已经使用的名称发布程序包,则会收到错误的消息,如果软件包不是发布到NPM上,则没问题。
version
“version”: “1.5.0”
version 字段对于任何已发布的软件包都非常重要,并且在发布之前都是必填的。这是package.json描述的软件当前版本。
license
licence 字段使我们可以定义适用于package.json所描述代码的许可证。 同样在将项目发到NPM注册表时,这个非常重要,因为许可证可能胡限制某些开发人员或组织对软件的使用。拥有清晰的许可证有助于明确定义该软件可以使用的术语。
author 和 contributors
"author": "Jon Church jon@example.com https://www.osioslabs.com/#team",
"contributors": [{
"name": "Amber Matz",
"email": "example@example.com",
"url": "https://www.osiolabs.com/#team"
}],
两个字段功能类似,但是author字段只有一个,contributors 则可以有多个
descrition
NPM 注册表将description字段用于描述发布的软件包,让别人了解一下。在npmjs.com网站上描述这个软件包。
用户搜索NPM注册表的时候,这个字符串用于帮助了解软件包,这是软件包的简短摘要。
keywords
“keywords”: [“server”, “osiolabs”, “express”, “compression”]
关键词数组,用于别人检索这个软件包。不发布到NPM上 没什么用。
main
“main”:“lib/index.js”
main 字段是 package.json 的功能属性,定义项目的入口点,通常用于启动项目的文件。
如果你的包是由用户安装的,当用户执行require(‘foo-libs’)时,这里就是返回main字段对应文件的module.export 属性。
scripts
"scripts": {
"start": "node index.js",
"dev": "nodemon"
}
scripts 字段是 package.json 中的另一种元数据功能。scripts 属性接受一个对象,它的值为可以通过 npm run 运行的脚本,其键为实际运行的命令。这些通常是终端命令,我们把它们放入 scripts 字段,可以既可以记录它们又可以轻松地重用。
repository
"repository": {
"type": "git",
"url": "https://github.com/osiolabs/example.git"
}
你可以通过提供 repository 字段来记录项目代码所在的资源库。该字段是一个对象,用于定义源代码所在的 url 及其使用的版本控制系统的类型。对于开源项目,可能是以 Git 作为版本控制系统的 GitHub 或 Bitbucket 。
dependencies
"dependencies": {
"express": "^4.16.4",
"compression": "~1.7.4"
}
与dependencies类似,这里列出的包仅在开发期间需要,在生产中不需要。
管理package.json
package.json 文件必须是有效的 JSON。这意味着任何缺少的逗号、丢失的引号或其他格式错误都将阻止 npm 与 package.json 进行交互。如果确实引入了错误,则下次运行 npm 命令时将会看到错误提示。建议尽可能使用 npm CLI 更新和管理 package.json,以避免意外将错误引 入package.json 中。
{
"name": "@femessage/element-ui", 组件名
"version": "2.12.0", 版本号
"description": "A Component Library for Vue.js.", 描述
"main": "lib/element-ui.common.js",入口文件
"files": [包含的文件
"lib",
"src",
"packages",
"types"
],
"publishConfig": {
"access": "public"
},
"typings": "types/index.d.ts", 类型检查
"scripts": { 脚本
"dev": "npm run bootstrap && npm run build:file && cross-env NODE_ENV=development webpack-dev-server --config build/webpack.demo.js & node build/bin/template.js",
...
},
"repository": {
"type": "git",
"url": "git+https://github.com:femessage/element.git"
},
"homepage": "http://femessage.github.io/element/",主页
"keywords": [ 关键词 用于检索
"eleme",
"vue",
"components"
],
"license": "MIT",许可证
"bugs": {
"url": "https://github.com/femessage/element/issues"
},
"unpkg": "lib/index.js",
"style": "lib/theme-chalk/index.css",
"dependencies": { 依赖库
"async-validator": "~1.8.1",
...
},
"peerDependencies": {
"vue": "^2.5.17"
},
"devDependencies": {开发环境依赖
"@babel/runtime": "^7.7.7",
...
},
"gren": "@femessage/grenrc"
}
此文章转载于:https://www.yuque.com/peilin-nmtvf/spt1b3/xcd79t