package.json 详解

背景

目前 需要维护一个开源组件,想学习一下开源组件和一般项目的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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值