创建一个包
包 是由一些代码和一个 package.json
文件组成,它向 Yarn 提供有关你的包的信息。
大多数包使用某种类型的版本控制系统。最常见的就是 git,但 Yarn 不介意你选用任何一个。本指南中,我们的例子使用 git。
创建您的第一个包
为了创建你的第一个包,打开你的系统终端/控制台并运行以下命令:
git init my-new-project
cd my-new-project
yarn init
这将创建一个新的 git 仓库,把你放在里面,然后打开一个交互式表单来提出以下问题创建一个新的 yarn 项目:
name (my-new-project):
version (1.0.0):
description:
entry point (index.js):
git repository:
author:
license (MIT):
你可以输入每个问题的回答,也可以轻击回车键使用默认值或保留为空。
提示: 如果你想每个都用默认值,你也可以运行
yarn init --yes
,它将跳过所有问题。
package.json
现在你应该有一个看起来像这样的 package.json
:
{
"name": "my-new-project",
"version": "1.0.0",
"description": "My New Project description.",
"main": "index.js",
"repository": {
"url": "https://example.com/your-username/my-new-project",
"type": "git"
},
"author": "Your Name <you@example.com>",
"license": "MIT"
}
你在 package.json
里看到的字段具有以下含义:
- name 是你的包的标识,如果你打算把它发布到全局注册表,你需要确保它是唯一的。
- version 是和语言版本兼容的你的包版本号,你可以按你想的发布一个包,但他们必须得到新版本。
- description是可选但推荐的字段,用来让其他 Yarn 用户搜索并了解你的项目。
- main 用来定义会被像 Node.js 这样的程序使用的代码入口。如果没有指定,它默认是
index.js
。 - repository 是另一个可选但推荐填写的字段,它有助于你的用户找到代码来贡献。
- author 是包的创建者或维护者。它遵循
"你的名字 <you@example.com> (http://your-website.com)"
这样的格式。 - license 是你的包发布的法律条款,以及什么是你包里的代码许可的用法。
当你运行 yarn init
时,它做的一切就是创建这个文件,没有什么悄悄发生的。你可以按你想的那样自由的编辑这个文件。
附加字段
让我们了解一些你可能想加到 package.json
的附加字段。
{
"name": "my-new-project",
"...": "...",
"keywords": ["cool", "useful", "stuff"],
"homepage": "https://my-new-project-website.com",
"bugs": "https://github.com/you/my-new-project/issues",
"contributors": [
"Your Friend <their-email@example.com> (http://their-website.com)",
"Another Friend <another-email@example.com> (https://another-website.org)"
],
"files": [
"index.js",
"lib/*.js",
"bin/*.js"
],
"bin": {
"my-new-project-cli": "bin/my-new-project-cli.js"
}
}
- keywords 是一个术语列表,其他开发者可以搜索它们来找到你的包或相关的包。
- homepage 是一个指引用户到网站的 url,会告知他们包的简介、文档并链接到附加资源。
- bugs 是为发现包的问题的用户提供指示的 url。
- contributors 是包的贡献者列表。如果有别人参与你的项目,你可以在这里指明。
- files 是你的包发布和安装时应该包含在里面的文件列表。如果不指定,Yarn 会包括每个文件。
- bin 是一个让 Yarn 在包安装时给包创建 cli 命令(二进制)的映射表。
要得到 package.json
所有字段以及上面那些字段的更详细信息,请参阅 package.json
文档。
许可证和开源
Yarn 包一般鼓励 开源, 但重要的是要注意,简单的发布它们不是开源。
为了开放源代码,它需要有开源许可证。有很多开源许可证可以选择,这是常见的几个:
如果你想要更多选择,你可以得到一个更完整的列表。
当你为你的包选择一个开源许可证时,一定要在你的包根目录下添加一个有许可证文本的 LICENSE
文件,并更新你的 package.json
文件的 license
字段。
注意:如果不想你的项目被授权为开源项目,你应该明确是什么授权方式,或者它是否没有授权。
代码共享
你可能会想要允许你的包的用户能够访问你的源代码和拥有报告问题的途径。有几个受欢迎的网站可以托管你的代码:
这些网站允许你的用户看到你的代码、报告问题、贡献力量。一旦你有代码在哪里上线,你应该添加下面的字段到你的 package.json
:
{
"homepage": "https://github.com/username/my-new-project",
"bugs": "https://github.com/username/my-new-project/issues",
"repository": {
"url": "https://github.com/username/my-new-project",
"type": "git"
}
}
文档
理想情况下在,你的包发布之前你应该编写文档。 最少你应该在你项目的根目录下写一个 README.md
文件,介绍你的包并文档化公开 API。
良好的文档定义是给用户提供用你的项目开始和继续使用所需要的所有知识。 想想你的项目会有什么是一个啥都不知道的人的问题。 描述准确并尽可能详细,但也要尽量保持简单易读。 有高质量文档的项目更容易成功。
保持较小的包
当创建 Yarn 包时,鼓励你保持小而简单。 只要有合适理由,就把大包分成许多小包。 只是被强烈鼓励的,Yarn 能够高效的安装几百上千个包。
众多小包是包管理器的一种很棒的模型。通常这导致更小的下载大小,因为你不打包巨大的依赖,而只是使用它们很小一部分。
你还应该考虑包的内容。 确保你没有不小心发布你的测试或其它对用你的包的人来说不必要的文件(构建脚本、图片等)。
也要小心对待你依赖的包,除非有好的理由,尽量用小包。确认你没有意外的依赖巨大的东西。