create-rodi
v0.1.3
Published
Rodi — a modular command-line toolkit for Roblox developers
Readme
Rodi — Roblox Developer Toolkit
CLI modular para criar projetos compatíveis com Rojo, gerar módulos Luau, executar ferramentas de qualidade e gerir pacotes/plugins locais.
Requisitos
- Node.js 20 ou superior.
- Rojo para compilar e sincronizar projetos.
- Selene para lint Luau.
- StyLua para formatação Luau.
Instale as ferramentas oficiais conforme a documentação dos respetivos projetos: Rojo, Selene e StyLua.
Instalação e desenvolvimento
npm install
npm run build
npm test
npm linkO pacote chama-se create-rodi para suportar a convenção npm npm create rodi@latest. O comando rodi continua disponível como binário do mesmo pacote. Durante o desenvolvimento, npm link disponibiliza localmente os comandos rodi e create-rodi. Para disponibilizar npm create rodi@latest a todos, publique o pacote no npm com npm publish e uma conta autorizada; essa publicação não é feita automaticamente.
Criar projeto com npm
Depois de o pacote estar publicado no npm:
npm create rodi@latestO assistente pergunta o nome e o template. Também aceita argumentos para execução direta:
npm create rodi@latest -- meu-jogo --template obbyPara experimentar a versão local durante o desenvolvimento, execute npm link na pasta do Rodi e depois:
create-rodi meu-jogo --template simulatorNo PowerShell do Windows, use create-rodi.cmd e rodi.cmd se a política de execução bloquear os lançadores .ps1.
Licença
O Rodi é distribuído sob a licença proprietária incluída no ficheiro LICENSE. É permitido instalar e usar uma cópia não modificada em projetos pessoais ou comerciais, mas não redistribuir, vender ou distribuir versões modificadas da CLI. A licença cobre o Rodi, não os jogos ou outros conteúdos criados com ele. As dependências mantêm as respetivas licenças.
Comandos
rodi init [nome] [-t base|simulator|tycoon|rpg|obby|survival] [-d diretório]
rodi add <datastore|leaderstats|inventory|shop|currency|combat|quest|admin|player-data|round> [--with-ui] [--with-remotes] [-d diretório]
rodi create [script <nome>|datastore|leaderstats|inventory|shop|currency|combat|quest|admin|player-data|round] [-d <pasta-do-projeto>]
rodi build [--check]
rodi sync [serve|build]
rodi test
rodi check [--fix] [--format text|json] [-d <pasta-do-projeto>]
rodi lint [caminho]
rodi format [caminho] [--check]
rodi analyze [--fix] [--format text|json] [-d <pasta-do-projeto>] (alias de check)
rodi plugin list|install <pasta>|remove <nome>
rodi package list|install <pasta>|update|remove <nome>
rodi publish
rodi doctor
rodi help
rodi versionrodi init gera default.project.json e uma árvore Rojo com ReplicatedStorage, ServerScriptService, ServerStorage, StarterPlayer, StarterGui e Workspace. Os templates são pontos de partida estruturais com inicialização funcional — não afirmam gerar automaticamente todas as mecânicas de jogo.
rodi build valida a configuração e executa rojo build; rodi build --check valida sem compilar. rodi sync usa rojo serve (ou rojo build) e requer o plugin Rojo no Roblox Studio para sincronização ao vivo. rodi test e rodi check executam verificações estáticas integradas, não substituindo testes no Roblox Studio. O analisador heurístico assinala padrões para revisão e não substitui uma auditoria de segurança.
rodi add <sistema> é a forma recomendada de adicionar um sistema ao projeto. --with-ui e --with-remotes confirmam componentes já integrados nos sistemas que os suportam (shop e round incluem ambos; combat inclui remotes). Os ficheiros existentes nunca são sobrescritos. O comando antigo rodi create continua disponível.
rodi check verifica a configuração Rojo e os problemas estáticos encontrados. Use --format json para obter { "ok": boolean, "findings": [...] }, adequado a scripts e CI. --fix aplica apenas a formatação do StyLua aos ficheiros em src; é necessário ter StyLua instalado. Os alertas são heurísticos e devem ser confirmados manualmente. rodi analyze continua disponível como alias.
Fluxo recomendado:
npm create rodi@latest -- meu-jogo --template survival
cd meu-jogo
rodi add inventory
rodi check
rodi syncCada sistema gera os seus ficheiros de servidor e, quando aplicável, o cliente e os RemoteEvents necessários; o comando lista todos os caminhos criados e recusa sobrescrever qualquer ficheiro. Shop cria uma interface de compra funcional e depende dos leaderstats Coins; Combat cria controlos de ataque e valida alcance/linha de visão no servidor; Round cria um estado de ronda com interface. O serviço de dados carrega, guarda e faz autosave de Coins. Admin permite /kick <jogador> ao proprietário de experiências pessoais; experiências de grupo não autorizam administradores automaticamente. Inventory e Quest expõem módulos de servidor para outros scripts chamarem; os dados de Inventory/Quest são de sessão e não persistem após sair do servidor.
Pacotes e plugins locais
Não há registos externos de pacotes/plugins inventados. Instale pacotes a partir de diretórios locais contendo um rodi-package.json:
{
"name": "shared-utils",
"version": "1.0.0",
"entry": "src/init.luau"
}Os pacotes são copiados para src/Packages/<nome> e registados em rodi-packages.json. rodi package update volta a copiar a versão atualmente declarada nas origens locais guardadas; não existe descoberta automática de versões externas. rodi plugin install <pasta> copia um diretório local para .rodi/plugins; os plugins são armazenados, não executados automaticamente.
Publicação Open Cloud
Configure uma chave API Open Cloud com as permissões de publicação apropriadas e os identificadores do universo/place:
$env:ROBLOX_API_KEY = "..."
$env:ROBLOX_UNIVERSE_ID = "..."
$env:ROBLOX_PLACE_ID = "..."
rodi publishO comando compila o projeto com Rojo e envia o modelo resultante ao endpoint Open Cloud de publicação de places. Confirme a configuração e as permissões da chave antes da publicação; a atualização pode afetar o place ativo.
Compatibilidade e contribuições
TypeScript, Node.js e node:path são usados para compatibilidade entre Windows, macOS e Linux. Os comandos externos falham explicitamente quando uma ferramenta não está instalada ou termina com erro. Execute npm test antes de submeter alterações.
