Criando um pacote NPM
Published: 2023-03-26 00:29:50

Você pode adicionar um arquivo `package.json` ao seu pacote para facilitar o gerenciamento e a instalação por outras pessoas. Os pacotes publicados no registro devem conter um arquivo `package.json`.

Um arquivo `package.json`:
- lista os pacotes dos quais seu projeto depende
- especifica versões de um pacote que seu projeto pode usar usando [regras de versão semântica](https://docs.npmjs.com/about-semantic-versioning)
- torna sua compilação reproduzível e, portanto, mais fácil de compartilhar com outros desenvolvedores

>**Observação**
>Para facilitar a localização do pacote no site do npm, recomendamos incluir uma `descrição` personalizada no arquivo `package.json`.

## [](https://docs.npmjs.com/creating-a-package-json-file#packagejson-fields)Campos `package.json` 

### [](https://docs.npmjs.com/creating-a-package-json-file#required-name-and-version-fields)Os campos `name` e `version` são obrigatórios

Um arquivo `package.json` deve conter os campos `"name"` e `"version"`.

O campo `"name"` contém o nome do seu pacote e deve estar em letras minúsculas e uma palavra, e pode conter hífens e sublinhados.

O campo `"version"` deve estar no formato `x.x.x` e seguir o [diretrizes de versão semântica](https://docs.npmjs.com/about-semantic-versioning).

### [](https://docs.npmjs.com/creating-a-package-json-file#author-field)Campo Author

Se você quiser incluir as informações do autor do pacote no campo `"author"`, use o seguinte formato (e-mail e site são opcionais):

Seu nome <email@example.com> (http://example.com)

### [](https://docs.npmjs.com/creating-a-package-json-file#example)Examplo

```json
{
  "name": "meu-maravilhoso-pacote",
  "version": "1.0.0",
  "author": "Guilherme Siquinelli <email@guiseek.dev>"
}
```

## [](https://docs.npmjs.com/creating-a-package-json-file#creating-a-new-packagejson-file)Criando um novo arquivo `package.json`

Você pode criar um arquivo `package.json` executando um questionário CLI ou criando um arquivo `package.json` padrão.

### [](https://docs.npmjs.com/creating-a-package-json-file#running-a-cli-questionnaire)Executando um questionário CLI

Para criar um arquivo `package.json` com os valores que você fornecer, use o comando `npm init`.

1. No terminal, navegue até o diretório raiz do seu pacote.
    ```sh
    cd /caminho/para/pacote
    ```

2. Execute o seguinte comando:
    ```sh
    npm init
    ```

3. Responda às perguntas do questionário da linha de comando.

#### [](https://docs.npmjs.com/creating-a-package-json-file#customizing-the-packagejson-questionnaire)Personalizando o questionário `package.json` 

Se você espera criar muitos arquivos `package.json` , pode personalizar as perguntas feitas e os campos criados durante o processo `init` para que todos os arquivos `package.json` contenham um conjunto padrão de informações.

1. Em seu diretório pessoal (home), crie um arquivo chamado `.npm-init.js`.

2. Para adicionar perguntas personalizadas, usando um editor de texto, adicione perguntas com a função `prompt`:
    ```js
    module.exports = prompt("qual é o seu sabor de sorvete preferido, amigo?", "Gosto de todos");
    ```

3. Para adicionar campos personalizados, usando um editor de texto, adicione os campos desejados ao arquivo `.npm-init.js`:
    ```js
    module.exports = {
        customField: 'Example custom field',
        otherCustomField: 'This example field is really cool'
    }
    ```

Para saber mais sobre como criar personalizações `npm init` avançadas, consulte o [init-package-json GitHub repository](https://github.com/npm/init-package-json).

### [](https://docs.npmjs.com/creating-a-package-json-file#creating-a-default-packagejson-file)Criando um arquivo `package.json` padrão

Para criar um `package.json` padrão usando informações extraídas do diretório atual, use o comando `npm init` com a sinalização `--yes` ou `-y`. Para obter uma lista de valores padrão, consulte "[Valores padrões extraídos do diretório atual](https://docs.npmjs.com/creating-a-package-json-file#default-values-extracted-from-the-current-directory)".

1. Na linha de comando, navegue até o diretório raiz do seu pacote.
    ```sh
    cd /caminho/para/pacote
    ```

2. Execute o seguinte comando:
    ```sh
    npm init --yes
    ```

Resultado:

```json
{
  "name": "seu-maravilhoso-pacote",
  "description": "",
  "version": "1.0.0",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/seu-usuario/seu-maravilhoso-pacote.git"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/seu-usuario/seu-maravilhoso-pacote/issues"
  },
  "homepage": "https://github.com/seu-usuario/seu-maravilhoso-pacote"
}
```

#### [](https://docs.npmjs.com/creating-a-package-json-file#default-values-extracted-from-the-current-directory)Valores padrão extraídos do diretório atual

- `name`: o nome do diretório atual
- `version`: sempre `1.0.0`
- `description`: informações do README ou uma string vazia `""`
- `scripts`: por padrão, cria um script `test` vazio
- `keywords`: vazio
- `author`: vazio
- `license`: [`ISC`](https://opensource.org/licenses/ISC)
- `bugs`: informações do diretório atual, se presente
- `homepage`: informações do diretório atual, se presente

### [](https://docs.npmjs.com/creating-a-package-json-file#setting-config-options-for-the-init-command)Definir opções de configuração para o comando init

Você pode definir opções de configuração padrão para o comando init. Por exemplo, para definir o e-mail padrão do autor, o nome do autor e a licença, na linha de comando, execute os seguintes comandos

```sh
npm set init-author-email "example-user@example.com"
npm set init-author-name "example_user"
npm set init-license "MIT"
```