Criando um Pacote
Um package é um diretório com algum código e um arquivo package.json que fornece informação para o Yarn sobre o seu pacote.
A maioria dos pacotes usam algum tipo de sistema de controle de versão. O mais comum é git, mas o Yarn não se importa com qual você escolher usar. Para este guia, nossos exemplos vão usar git.
Nota: Se você quer seguir este guia, certifique-se de instalar primeiro git e Yarn.
Criando seu primeiro pacote
Para criar seu primeiro pacote, abra o terminal/console do seu sistema e execute os seguintes comandos:
git init my-new-project
cd my-new-project
yarn init
Isso vai criar um novo repositório git, posicioná-lo dentro deste, e então abrir um formulário interativo para criar um novo projeto yarn com as seguintes questões:
name (my-new-project):
version (1.0.0):
description:
entry point (index.js):
git repository:
author:
license (MIT):
Você pode digitar as respostas para cada um dos campos ou apenas apertar enter/return para usar o valor padrão ou deixar em branco.
Dica: Se você quer usar os valores padrões para tudo, pode executar
yarn init --yese ele vai pular todas as perguntas.
package.json 
Agora você deve ter um package.json que parece com isso:
{
  "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"
}
Os campos que você vê no package.json tem os seguintes significados:
- name é o identificador do seu pacote, se você vai publicá-lo no registro global, você precisa ter certeza que é único.
- version é a versão, compatível com o formato semver, do seu pacote, você pode publicar um pacote quantas vezes você quiser, mas eles devem ter novas versões.
- description é um campo opcional, mas recomendado, que é usado por outros usuários do Yarn para buscar e entender o seu projeto.
- main é usado para definir o ponto de entrada do seu código usado por programas como Node.js. Se não for especificado, o padrão será index.js.
- repository é outro campo opcional, mas recomendado, que ajuda os usuários do seu pacote a encontrarem o código fonte para contribuir.
- author é o criador ou mantenedor de um pacote. Segue o formato "Seu Nome <voce@exemplo.com>(http://seu-website.com)"
- license são os termos legais de publicação do seu pacote e qual é o uso permitido do código do seu pacote.
Quando você executa yarn init, tudo o que ele está fazendo é criar esse arquivo, nada acontece em segundo plano. Você pode ficar à vontade para editar esse arquivo o quanto você quiser.
Campos adicionais
Vamos ver alguns campos adicionais do package.json que você pode querer adicionar.
{
  "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 é uma lista de termos que outros desenvolvedores podem procurar para achar seu pacote ou pacotes relacionados.
- homepage é uma url que aponta os usuários para o seu website que os informa sobre o pacote com uma introdução, documentação e links para recursos adicionais.
- bugs é uma url que aponta os usuários do seu pacote para caso eles descubram um problema com seu pacote.
- contributors é uma lista de colaboradores do seu pacote. Se há outras pessoas envolvidas no seu projeto, elas podem ser especificadas aqui.
- files é uma lista de arquivos que devem ser incluídos no seu pacote quando publicado e instalado. Se não especificado, Yarn vai incluir todos os arquivos.
- bin é um mapeamento de comandos cli (binários) para o Yarn criar para o pacote quando instalá-lo.
Para uma lista completa de todos os campos do package.json e mais detalhes sobre cada campo acima, por favor veja package.json documentation.
Licenciamento e de código aberto
Pacotes Yarn são geralmente incentivados a ser open source, no entanto, é importante notar que pacotes não são inerentemente de código aberto simplesmente publicando-os.
Para seu código ser abeto, ele precisa ter uma licença de código aberto. Há muitas licenças de código aberto para escolher, algumas das mais comuns são:
Se você quiser mais opções, você pode obter uma lista mais completa aqui.
Quando você escolhe uma licença de código aberto para seu pacote, certifique-se de adicionar o arquivo LICENSE na pasta raiz do seu pacote com o texto da licença e atualize seu campo license no arquivo package.json.
Nota: Se você não quer que seu projeto seja licenciado como um projeto de código aberto, você deve ser explícito sobre qual é o licenciamento ou se não é licenciado.
Compartilhamento de código
Você provavelmente vai querer que os usuários do seu pacote sejam capazes de acessar o código fonte e terem maneiras de reportar problemas. Há alguns websites populares para hospedagem do seu código:
Esses sites permitem que seus usuários vejam seu código, reportem problemas e contribuam com o projeto. Quando você tiver seu código em algum lugar, você deve adicionar os seguintes campos no seu arquivo 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"
  }
}
Documentação
Você deve idealmente escrever sua documentação antes de sair publicando seu pacote. O mínimo que você deve escrever é um arquivo README.md na pasta raiz do seu projeto que introduz seu pacote e documenta a API pública.
Boa documentação é definida por dar aos usuários todo conhecimento que precisam para começar, e continuar, a usar seu projeto. Pense sobre as questões que alguém que não saiba nada sobre seu projeto possa ter. Descreva as coisas com precisão e detalhamento, tanto quanto for necessário, mas também tente mantê-lo breve e fácil de ler. Projetos com documentação de alta qualidade são muito mais bem sucedidos.
Mantenha pacotes pequenos
Ao criar pacotes Yarn, você é incentivado a mantê-los pequenos e simples. Quebre pacotes grandes em vários pacotes menores, se tiver sentido fazer assim. Isso é altamente recomendado, já que Yarn é capaz de instalar centenas, ou até milhares, de pacotes de forma muito eficiente.
Muitos pacotes pequenos são um grande modelo de gerenciamento de pacotes. Muitas vezes isso leva a menores tamanhos de download, já que você não está agrupando dependências massivas e usando apenas um pequeno pedaço do pacote.
Você deve considerar também o conteúdo do seu pacote. Certifique-se de que não está distribuindo acidentalmente seus testes ou quaisquer outros arquivos que não sejam necessários para o uso do seu pacote (scripts de compilação, imagens, etc).
Também tenha cuidado com os pacotes que você está dependendo, prefira dependências pequenas, a menos que você tenha uma boa razão para fazer o contrário. Certifique-se de que não está acidentalmente dependendo de algo massivo.