{"_id":"@carlos-iso/versioner","_rev":"6-9004ca17595abd51a85027d6bfe8f615","name":"@carlos-iso/versioner","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.2":{"name":"@carlos-iso/versioner","version":"0.0.2","keywords":["version","versioning","release","git","automation","cli","build","semver","expo"],"author":{"name":"Carlos-iso"},"license":"MIT","_id":"@carlos-iso/versioner@0.0.2","maintainers":[{"name":"carlos-iso","email":"carlosdev2022@gmail.com"}],"homepage":"https://github.com/Carlos-iso/versioner","bugs":{"url":"https://github.com/Carlos-iso/versioner/issues"},"bin":{"versioner":"bin/versioner.js"},"dist":{"shasum":"1925e8d417e38fe934fe00fa2064f717ced2816f","tarball":"https://registry.npmjs.org/@carlos-iso/versioner/-/versioner-0.0.2.tgz","fileCount":29,"integrity":"sha512-KmankBH/5pd3N0DXP47+oulIjJsqADyQAX9WdWuHkv6w8J+kkWj8aIIsjcxNI4EdGwxXu/PQYetG+/rBxbOF3w==","signatures":[{"sig":"MEUCIQCi8Va2XY1g8/xkyY9F3F2w7pPlAb6nH4YJARnRE6cNUgIgGhli+9jA/qsyfWWlgi4Qz4O15lvwdNEncNklHebcsFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56146},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"1bbca53347e841eba7417c80db9578e4bed4e278","scripts":{"dev":"node ./bin/versioner.js","help":"node ./bin/versioner.js help","test":"node ./test/smoke.js","start":"node ./bin/versioner.js","prepublishOnly":"node ./src/test/smoke.js"},"_npmUser":{"name":"carlos-iso","email":"carlosdev2022@gmail.com"},"repository":{"url":"git+https://github.com/Carlos-iso/versioner.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI para automatizar versionamento e fluxo de Git usando um modelo de versionamento baseado em marcos do projeto (major.minor.build).","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/versioner_0.0.2_1784904816742_0.9893025863560374","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Movido para @kinetnode/versioner. Instale: npm i @kinetnode/versioner"},"0.0.5":{"name":"@carlos-iso/versioner","version":"0.0.5","keywords":["version","versioning","release","git","automation","cli","build","semver","expo"],"author":{"name":"Carlos-iso"},"license":"MIT","_id":"@carlos-iso/versioner@0.0.5","maintainers":[{"name":"carlos-iso","email":"carlosdev2022@gmail.com"}],"homepage":"https://github.com/Carlos-iso/versioner","bugs":{"url":"https://github.com/Carlos-iso/versioner/issues"},"bin":{"versioner":"bin/versioner.js"},"dist":{"shasum":"ece23767cf51addb6454b1047ede9a3cf4734ca9","tarball":"https://registry.npmjs.org/@carlos-iso/versioner/-/versioner-0.0.5.tgz","fileCount":29,"integrity":"sha512-8msINck5396DHIX12B+a5L+oJY4OxlTUA+2q+ld0mp2GWx5RKQUIKvXsNOkMIbp9l7xZTb1u+sDSP5F2h8pxtw==","signatures":[{"sig":"MEQCIAWrvOvD3t1ny/BB0WCPmEjVWSi+CJ3CZe3wseS0R8yxAiBXuDJ5rkdLxHc7Wh3wN6OPYiOLjvMAtyfHIMfGypJ3KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56145},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"edec1449cfebc9fe074e87399ae9c9884fe2fe8e","scripts":{"dev":"node ./bin/versioner.js","help":"node ./bin/versioner.js help","pull":"git pull origin main && npm install","test":"node ./src/test/smoke.js","start":"node ./bin/versioner.js","versioner:build":"versioner build 'Update To Presentation'"},"_npmUser":{"name":"carlos-iso","email":"carlosdev2022@gmail.com"},"repository":{"url":"git+https://github.com/Carlos-iso/versioner.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI para automatizar versionamento e fluxo de Git usando um modelo de versionamento baseado em marcos do projeto (major.minor.build).","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/versioner_0.0.5_1785539220730_0.5010903768678481","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Movido para @kinetnode/versioner. Instale: npm i @kinetnode/versioner"},"0.0.6":{"name":"@carlos-iso/versioner","version":"0.0.6","keywords":["version","versioning","release","git","automation","cli","build","semver","expo"],"author":{"name":"Carlos-iso"},"license":"MIT","_id":"@carlos-iso/versioner@0.0.6","maintainers":[{"name":"carlos-iso","email":"carlosdev2022@gmail.com"}],"homepage":"https://github.com/Carlos-iso/versioner","bugs":{"url":"https://github.com/Carlos-iso/versioner/issues"},"bin":{"versioner":"bin/versioner.js"},"dist":{"shasum":"14ba960c1e3724b558ee77c2716101eef5bb4e8d","tarball":"https://registry.npmjs.org/@carlos-iso/versioner/-/versioner-0.0.6.tgz","fileCount":31,"integrity":"sha512-GuLNX0HeNJS98RpzEM2LKPg+v1WC0JuDEzb6QvDef1aWnYO31xZrdO6IfMiUDGj0JYjS/oNxH2R/xldM2r7waw==","signatures":[{"sig":"MEYCIQD3RzpYRlkw98bdAVO2CP5fzprEgA/PIhuBpntALb0oLAIhAPk0Et0uqFCEZ9dYIbJ3bnxlVaEUCgDl0Dimc8TJX/RI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73951},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"7ced57ef47174001400cfe697bdbd314b3a07358","scripts":{"dev":"node ./bin/versioner.js","help":"node ./bin/versioner.js help","pull":"git pull origin main && npm install","test":"node ./src/test/smoke.js","start":"node ./bin/versioner.js","versioner:build":"versioner build 'Update To Presentation'"},"_npmUser":{"name":"carlos-iso","email":"carlosdev2022@gmail.com"},"repository":{"url":"git+https://github.com/Carlos-iso/versioner.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI para automatizar versionamento e fluxo de Git usando um modelo de versionamento baseado em marcos do projeto (major.minor.build).","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/versioner_0.0.6_1786066253749_0.19095428474422538","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Movido para @kinetnode/versioner. Instale: npm i @kinetnode/versioner"},"0.0.7":{"name":"@carlos-iso/versioner","version":"0.0.7","keywords":["version","versioning","release","git","automation","cli","build","semver","expo"],"author":{"name":"Carlos-iso"},"license":"MIT","_id":"@carlos-iso/versioner@0.0.7","maintainers":[{"name":"carlos-iso","email":"carlosdev2022@gmail.com"}],"homepage":"https://github.com/Carlos-iso/versioner","bugs":{"url":"https://github.com/Carlos-iso/versioner/issues"},"bin":{"versioner":"bin/versioner.js"},"dist":{"shasum":"086fbb78cdab458775da97aebf403c6e80053b3a","tarball":"https://registry.npmjs.org/@carlos-iso/versioner/-/versioner-0.0.7.tgz","fileCount":31,"integrity":"sha512-wkuM/Ebr4TR1BfpE5/kS2pAl2UVDe3ipAHWb/ruAa0vTUdD5OsembdcZnDhOTZuR9AUOErwlZZ7XAWs/6s+d7Q==","signatures":[{"sig":"MEQCIDDi8Sf02Xc5DFiNaVvWupR5wjIf7Psi40OPHj+Xv2K4AiACTp8tTczb9as5PRqe9gdyFCiZD9nCyyIUEB6vg/QPCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73951},"main":"src/index.js","type":"commonjs","engines":{"node":">=18"},"gitHead":"15088a6f31e52f622fff20fc49a9dd49fdd5954c","scripts":{"dev":"node ./bin/versioner.js","help":"node ./bin/versioner.js help","pull":"git pull origin main && npm install","test":"node ./src/test/smoke.js","start":"node ./bin/versioner.js","versioner:build":"versioner build 'Update To Presentation'"},"_npmUser":{"name":"carlos-iso","email":"carlosdev2022@gmail.com"},"repository":{"url":"git+https://github.com/Carlos-iso/versioner.git","type":"git"},"_npmVersion":"11.19.0","description":"CLI para automatizar versionamento e fluxo de Git usando um modelo de versionamento baseado em marcos do projeto (major.minor.build).","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/versioner_0.0.7_1787024209278_0.9540937830325655","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Movido para @kinetnode/versioner. Instale: npm i @kinetnode/versioner"}},"time":{"created":"2026-07-24T14:53:36.636Z","modified":"2026-08-21T13:19:55.722Z","0.0.2":"2026-07-24T14:53:36.879Z","0.0.5":"2026-07-31T23:07:00.869Z","0.0.6":"2026-08-07T01:30:53.898Z","0.0.7":"2026-08-18T03:36:49.415Z"},"bugs":{"url":"https://github.com/Carlos-iso/versioner/issues"},"author":{"name":"Carlos-iso"},"license":"MIT","homepage":"https://github.com/Carlos-iso/versioner","keywords":["version","versioning","release","git","automation","cli","build","semver","expo"],"repository":{"url":"git+https://github.com/Carlos-iso/versioner.git","type":"git"},"description":"CLI para automatizar versionamento e fluxo de Git usando um modelo de versionamento baseado em marcos do projeto (major.minor.build).","maintainers":[{"name":"kinetnodenpm","email":"carlosdev2022@gmail.com"}],"readme":"# Versioner\n\nCLI que substitui o fluxo manual de release por um único comando.\n\nAntes:\n\n```bash\n# edita package.json\n# edita app.json\ngit add .\ngit commit -m \"v1.4.273 - Corrige login\"\ngit push\n```\n\nDepois:\n\n```bash\nversioner build \"Corrige login\"\n```\n\nSem dependências externas. Só Node.js e Git.\n\n---\n\n## Instalação\n\nSem instalar:\n\n```bash\nnpx @carlos-iso/versioner init\n```\n\nGlobal:\n\n```bash\nnpm install -g @carlos-iso/versioner\n```\n\nRequer Node.js 18 ou superior.\n\n---\n\n## Início rápido\n\n```bash\ncd meu-projeto\nnpx @carlos-iso/versioner init\nnpx versioner build \"primeira release\"\n```\n\nO `init` cria dois arquivos, detecta o `package.json` e o `app.json`, e pergunta a versão inicial.\n\nSe estiver usando como dependência do projeto, adicione atalhos no `package.json`:\n\n```json\n{\n    \"scripts\": {\n        \"build\": \"versioner build\",\n        \"minor\": \"versioner minor\",\n        \"major\": \"versioner major\"\n    }\n}\n```\n\nE use:\n\n```bash\nnpm run build -- \"Corrige login\"\n```\n\n---\n\n## Modelo de versionamento\n\nFormato:\n\n```\nmajor.minor.build\n```\n\nExemplo: `2.14.583`\n\n### Build\n\nIncrementa em **toda** release e **nunca** volta para zero. Representa o total de releases já publicadas.\n\n```\n2.14.583 → 2.14.584 → 2.14.585\n```\n\n### Minor\n\nPequenas evoluções dentro de uma mesma versão principal. Zera quando ocorre um Major.\n\n```\n2.14.583 → 2.15.584\n```\n\n### Major\n\nGrandes marcos: primeira versão pública, reescrita, nova arquitetura. Definido manualmente.\n\n```\n2.14.583 → 3.0.584\n```\n\nO Build continua incrementando normalmente mesmo em um Major.\n\n### Por que não SemVer (padrão)\n\nO SemVer descreve compatibilidade de API. Este modelo descreve o **histórico do projeto**: quantas grandes versões existiram, quantas evoluções cada uma recebeu e quantas releases foram publicadas desde o início.\n\nO formato continua compatível com `x.y.z`, então o `package.json` permanece válido.\n\nSe preferir o comportamento SemVer, ative `semver: true` no `versioner.config.json` — veja a seção [SemVer](#semver).\n\n---\n\n## Comandos\n\n| Comando | O que faz |\n|---|---|\n| `versioner init` | Inicializa o Versioner no projeto |\n| `versioner build \"msg\"` | Incrementa a Build e publica a release |\n| `versioner minor \"msg\"` | Incrementa Minor e Build |\n| `versioner major \"msg\"` | Incrementa Major, zera Minor, incrementa Build |\n| `versioner version` | Mostra a versão atual |\n| `versioner status` | Mostra versão, arquivos monitorados e estado do Git |\n| `versioner pull` | Atualiza o repositório local com as mudanças do remoto |\n| `versioner merge <branch>` | Faz merge de um branch no branch atual |\n| `versioner help [comando]` | Ajuda |\n\nAliases: `b`, `m`, `M`, `i`, `v`, `s`, `p`, `h`.\n\n### Flags de release\n\n| Flag | Efeito |\n|---|---|\n| `--no-push` | Faz commit mas não envia para o remoto |\n| `--no-git` | Só versiona os arquivos, não toca no Git |\n| `--tag` | Cria uma tag Git para a release |\n| `--no-tag` | Desativa a tag mesmo se ligada na config |\n| `--dry-run` | Simula tudo sem gravar nada |\n\n### Flags do init\n\n| Flag | Efeito |\n|---|---|\n| `--yes`, `-y` | Usa os padrões sem perguntar |\n| `--force`, `-f` | Sobrescreve arquivos existentes |\n\n### Flags do pull\n\n| Flag | Efeito |\n|---|---|\n| `--merge` | Usa merge em vez de rebase (padrão é rebase) |\n\n---\n\n## SemVer\n\nPara projetos que seguem o [Versionamento Semântico](https://semver.org/), ative o modo SemVer no `versioner.config.json`:\n\n```json\n{\n    \"semver\": true\n}\n```\n\nCom `semver: true`, o comportamento de cada comando muda:\n\n| Versão atual | Comando | Resultado |\n|---|---|---|\n| `1.2.5` | `build` | `1.2.6` (patch++) |\n| `1.2.5` | `minor` | `1.3.0` (minor++, patch vira 0) |\n| `1.2.5` | `major` | `2.0.0` (major++, minor e patch viram 0) |\n\nComparação com o comportamento padrão (sem SemVer):\n\n| Versão atual | Comando | Padrão | SemVer |\n|---|---|---|---|\n| `1.2.5` | `minor` | `1.3.6` | `1.3.0` |\n| `1.2.5` | `major` | `2.0.6` | `2.0.0` |\n\nNo padrão, o `build` é um contador global que nunca zera — ele representa o total de releases já feitas. No SemVer, o `patch` reinicia a cada `minor` ou `major`, seguindo a convenção da comunidade.\n\n---\n\n## Add por arquivo\n\nPor padrão, o Versioner executa `git add .` antes de cada commit, incluindo todas as mudanças do repositório. Para controlar quais arquivos entram no commit, configure `addAll: false`:\n\n```json\n{\n    \"git\": {\n        \"addAll\": false\n    }\n}\n```\n\nCom `addAll: false`, a sintaxe muda: o primeiro argumento é a lista de arquivos (separados por espaço), e o segundo é a mensagem do commit.\n\n```bash\nversioner build \"src/login.js\" \"Corrige autenticação\"\nversioner minor \"src/auth.js src/session.js\" \"Adiciona refresh token\"\n```\n\nOs arquivos de versão (`.versioner.json`, `package.json` etc.) são sempre incluídos automaticamente, independente do que você especificar. Arquivos não listados permanecem no working tree sem serem commitados.\n\n---\n\n## Arquivos gerados\n\n### `.versioner.json`\n\nO contador de versão do projeto.\n\n```json\n{\n    \"major\": 1,\n    \"minor\": 4,\n    \"build\": 273\n}\n```\n\n### `versioner.config.json`\n\nDefine o comportamento e quais arquivos recebem a versão.\n\n```json\n{\n    \"versionFile\": \".versioner.json\",\n    \"files\": [\n        {\n            \"path\": \"package.json\",\n            \"field\": \"version\"\n        },\n        {\n            \"path\": \"app.json\",\n            \"field\": \"expo.version\"\n        }\n    ],\n    \"commit\": {\n        \"template\": \"v{version} - {message}\",\n        \"minLength\": 3,\n        \"maxLength\": 100\n    },\n    \"git\": {\n        \"enabled\": true,\n        \"add\": true,\n        \"addAll\": true,\n        \"commit\": true,\n        \"push\": true,\n        \"tag\": false,\n        \"tagPrefix\": \"v\",\n        \"tagMessage\": \"Release {version}\"\n    },\n    \"semver\": false\n}\n```\n\n**`files`** — qualquer arquivo `.json`. O campo `field` aceita caminhos aninhados:\n\n```\nversion\nexpo.version\nproject.meta.version\n```\n\n**`commit.template`** — aceita `{version}`, `{message}` e `{type}`.\n\n**`git.addAll`** — `true` faz `git add .` (padrão); `false` exige que os arquivos sejam listados no comando.\n\n**`semver`** — `false` usa o modelo de build global (padrão); `true` segue o padrão SemVer com resets.\n\nArquivos de código (`app.config.js`, `app.config.ts`) são detectados pelo `init` mas **não** são alterados automaticamente. Nesses casos, leia a versão do JSON:\n\n```js\nconst { version } = require(\"./package.json\");\n\nexport default {\n    expo: { version },\n};\n```\n\n---\n\n## Segurança da release\n\nSe qualquer etapa falhar no meio do caminho, o Versioner reverte o arquivo de versão e todos os arquivos alterados. Nada fica commitado pela metade.\n\nO `push` é ignorado com um aviso quando não existe remoto configurado, em vez de derrubar a release. Se a branch ainda não tiver upstream, o Versioner usa `--set-upstream origin <branch>` automaticamente.\n\nMensagens de commit são passadas por `execFile` com array de argumentos, então aspas, `$` e crases não quebram nem executam nada.\n\n---\n\n## Uso programático\n\n```js\nconst { ReleaseManager, createContext } = require(\"@carloscoding/versioner\");\n\nconst context = createContext({ type: \"build\", message: \"Release automática\" });\n\nnew ReleaseManager().run(context);\n```\n\nTambém são exportados `VersionManager`, `ConfigManager`, `FileManager`, `GitManager`, `CommandRouter`, `logger` e `constants`.\n\n---\n\n## Arquitetura\n\n```\nbin/versioner.js         Binário da CLI (shebang)\nsrc/cli.js               Bootstrap da CLI e tratamento de erro\nsrc/index.js             Entrada programática (require do pacote)\nsrc/services/            CommandRouter (mapa nome → classe)\nsrc/commands/            Um arquivo por comando\nsrc/managers/            Release, Version, Config, File, Git\nsrc/core/Context.js      Objeto compartilhado da execução\nsrc/utils/               file, object, time, args, logger\nsrc/constants/           Valores fixos e metadados de ajuda\n```\n\nRegra central: nenhum Manager conhece outro Manager. Todos leem e escrevem apenas no `Context`. O `ReleaseManager` só orquestra a sequência:\n\n```\nvalidate → loadConfig → version → updateFiles → git → finish\n```\n\n---\n\n## Desenvolvimento\n\n```bash\nnpm test    # 42 asserções em um repositório Git temporário\n```\n\nPara logs completos de erro:\n\n```bash\nVERSIONER_DEBUG=1 versioner build \"teste\"\n```\n\nCores são desativadas automaticamente com `NO_COLOR=1` ou fora de um TTY.\n\n---\n\n## Licença\n\nMIT.\n","readmeFilename":"README.md"}