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 --yes e 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.