npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@kinetnode/versioner-cli

v0.0.1

Published

Versioner com TUI navegável — wrapper do @kinetnode/versioner com interface interativa via Cliplay.

Readme

versioner-cli

Interface TUI para o @kinetnode/versioner. Exibe os comandos de release em um menu navegável com o sistema de temas do @kinetnode/cliplay, sem abrir o terminal a cada release.

Antes

versioner build "Corrige login"
versioner minor "Adiciona OAuth"
versioner status

Depois

versioner-cli   # navega, filtra e executa qualquer comando

A configuração de release vem do versioner.config.json. A aparência da interface vem do .cliplay.json. Dois arquivos, dois papéis.


Como funciona

O versioner-cli opera em dois modos:

Sem argumentos — abre o menu TUI:

versioner-cli

Com argumentos — delega direto para o versioner, sem abrir menu:

versioner-cli build "Corrige login"
versioner-cli status
versioner-cli pull

Tudo que o versioner aceita também funciona via versioner-cli, incluindo flags:

versioner-cli build "hotfix" --no-push
versioner-cli minor "Nova feature" --changelog
versioner-cli major "Reescrita" --dry-run

Pré-requisitos

  • Node.js 18 ou superior
  • Git instalado e no PATH
  • Os três pacotes instalados globalmente

Instalação

Instale os três pacotes de uma vez:

npm install -g @kinetnode/versioner @kinetnode/cliplay @kinetnode/versioner-cli

Ou separadamente, se preferir controlar as versões:

npm install -g @kinetnode/versioner
npm install -g @kinetnode/cliplay
npm install -g @kinetnode/versioner-cli

Verifique as instalações:

versioner --version
cliplay --version
versioner-cli --version

Configuração inicial

Entre na raiz do seu projeto e inicialize os dois pacotes:

cd meu-projeto
versioner init
cliplay init

Após o versioner init, o assistente detecta o package.json e o app.json, pergunta a versão inicial e gera dois arquivos:

.versioner.json         contador de versão
versioner.config.json   comportamento de release

Após o cliplay init, o assistente detecta os scripts disponíveis e gera:

.cliplay.json           aparência da interface

Com os dois arquivos gerados, rode:

versioner-cli

versioner.config.json

Controla o comportamento do versioner e do versioner-cli em releases.

{
    "versionFile": ".versioner.json",
    "files": [
        { "path": "package.json", "field": "version" },
        { "path": "app.json",     "field": "expo.version" }
    ],
    "commit": {
        "template": "v{version} - {message}",
        "minLength": 3,
        "maxLength": 100
    },
    "git": {
        "enabled": true,
        "add":     true,
        "addAll":  true,
        "commit":  true,
        "push":    true,
        "tag":     false,
        "tagPrefix":  "v",
        "tagMessage": "Release {version}"
    },
    "semver":     false,
    "changelog":  false,
    "workspaces": null
}

| Campo | Descrição | |---|---| | files | Arquivos .json que recebem a versão automaticamente | | commit.template | Template do commit. Aceita {version}, {message}, {type} | | git.enabled | false desativa todo o fluxo Git | | git.addAll | true faz git add .; false exige arquivos explícitos no comando | | git.push | false faz commit mas não envia para o remoto | | git.tag | true cria uma tag Git a cada release | | semver | true ativa o modo SemVer com reset de patch e minor | | changelog | true gera o CHANGELOG.md a cada release |

Quando git.commit é false ou git.enabled é false, o campo de mensagem no menu TUI é opcional — o versioner ignora a mensagem e só versiona os arquivos.

Documentação completa: README do versioner


.cliplay.json

Controla a aparência da interface do versioner-cli (e do cliplay).

{
    "theme": "default",
    "packageManager": "npm",
    "sources": {
        "package": true,
        "shell": false
    },
    "scripts": {
        "exclude": [],
        "shellDirs": [".", "scripts"]
    },
    "labels": {},
    "descriptions": {}
}

| Campo | Descrição | |---|---| | theme | Tema visual do menu. Opções: default, ocean, forest | | packageManager | Gerenciador de pacotes usado pelo cliplay (npm, yarn, pnpm, bun) | | sources.package | Lê scripts do package.json (usado pelo cliplay) | | sources.shell | Detecta arquivos .sh (usado pelo cliplay) | | scripts.exclude | Scripts a ignorar no cliplay | | labels | Nomes de exibição customizados para scripts do cliplay | | descriptions | Descrições exibidas ao lado dos scripts no cliplay |

Apenas o campo theme afeta o versioner-cli. Os demais campos são usados pelo cliplay.

Documentação completa: README do cliplay


Temas

| Tema | Cor principal | Acento | Cursor | |---|---|---|---| | default | Roxo #7C3AED | Verde #10B981 | ❯ | | ocean | Azul #0EA5E9 | Ciano #06B6D4 | → | | forest | Verde #16A34A | Lima #84CC16 | ▸ |

Sem .cliplay.json, o menu usa as cores ANSI padrão do terminal. Com o arquivo, aplica o tema exato via truecolor ANSI — as mesmas cores que o cliplay exibe.

Para trocar o tema, edite o .cliplay.json:

{ "theme": "ocean" }

Navegação no menu

| Tecla | Ação | |---|---| | ↑ ↓ | Navegar entre comandos | | Enter | Executar o comando selecionado | | i | Abrir campo de input (mensagem + flags) | | r | Recarregar o menu (relê as configurações) | | / | Filtrar comandos pelo nome | | Esc | Limpar filtro / cancelar input | | q | Sair |

Modo i — mensagem e flags

Pressionar i nos comandos de release (build, minor, major) abre um campo de input inline:

Mensagem + flags  ex: Corrige bug --no-push█

O que você digitar é separado em mensagem e flags antes de chamar o versioner:

Corrige autenticação --no-push --changelog

É equivalente a rodar:

versioner build "Corrige autenticação" --no-push --changelog

Pressionar Enter sem digitar nada executa o comando sem mensagem — útil quando git.commit está desativado no config.


Comandos disponíveis no menu

| Comando | O que faz | |---|---| | Build | Incrementa a build e publica a release | | Minor | Incrementa minor e build | | Major | Incrementa major e zera minor | | Status | Exibe versão, arquivos monitorados e estado do Git | | Version | Exibe apenas a versão atual | | Changelog | Gera ou atualiza o CHANGELOG.md | | Pull | Atualiza o repositório do remoto via rebase | | Init | Inicializa o Versioner no projeto atual | | Ajuda | Lista todos os comandos do versioner |


Relação entre os pacotes

versioner.config.json ──► versioner
                      └──► versioner-cli (comportamento de release)

.cliplay.json ────────► cliplay
              └────────► versioner-cli (aparência do menu)

O versioner-cli não duplica lógica. Ele lê as configurações dos dois pacotes e os chama por baixo:

  • Releases — chama o CommandRouter do @kinetnode/versioner
  • Aparência — lê o theme do .cliplay.json e aplica as cores do @kinetnode/cliplay

Desenvolvimento local

git clone https://github.com/Carlos-iso/versioner-cli
cd versioner-cli
npm link    # disponível globalmente como `versioner-cli`

Para testar sem instalar:

node bin/versioner.js
node bin/versioner.js build "teste" --dry-run

Licença

MIT