重要信息:本说明文档涵盖 Yarn 1(经典版)。
有关 Yarn 2+ 文档和迁移指南,请参阅 yarnpkg.com。

创建包

是一个目录,其中包含一些代码以及一个 package.json 文件,该文件向 Yarn 提供有关您包的信息。

大多数包都使用某种版本控制系统。最常见的是 git,但 Yarn 接受您选择使用的任何版本控制系统。对于本指南,我们的示例将使用 git。

注意:如果您想按照本指南进行操作,请务必先安装 gitYarn

创建您的第一个包

为了创建您的第一个包,打开系统终端/控制台并运行以下命令

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 <[email protected]>",
  "license": "MIT"
}

package.json 中看到的字段具有以下含义

  • name 是您的包的标识符,如果您要将其发布到全局存储库,则需要确保它是唯一的。
  • version 是您的包的与语义化版本控制兼容的版本,您可以随意发布包,但它们必须有新版本。
  • description 是一个可选字段(但推荐使用),其他 Yarn 用户使用该字段来搜索并理解您的项目。
  • main 用于定义 Node.js 用于打包或开发环境中使用的代码的入口点。如果未指定,则默认为 index.js
  • repository 是另一个可选字段(但推荐使用),它可以帮助您的包的用户查找源代码并参与贡献。
  • author 是某个包的创建者或维护者。它遵循以下格式 "您的姓名 <[email protected]> (https://your-website.com)"
  • license 是您包的已发布合法条款以及您的包中的代码允许使用的情况。

如今 package.json 支持“exports”入口点,如果定义了该入口点,它将取代“main”入口点。当运行 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 <[email protected]> (https://their-website.com)",
    "Another Friend <[email protected]> (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 能够高效率地安装数百甚至数千个包。

许多小型包是很好的包管理范例。这通常可以减少下载大小,因为您无需打包大量依赖项,只需使用其中的少量部分即可。

您还应考虑包的内容。确保您不会无意中分发测试或使用您的包时不需要的任何其他文件(如构建脚本、图像等)。

此外,请注意您所依赖的包,如果没有正当理由,请优先考虑较小的依赖项。确保您不会无意中依赖大量内容。