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

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 link

O 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@latest

O assistente pergunta o nome e o template. Também aceita argumentos para execução direta:

npm create rodi@latest -- meu-jogo --template obby

Para experimentar a versão local durante o desenvolvimento, execute npm link na pasta do Rodi e depois:

create-rodi meu-jogo --template simulator

No 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 version

rodi 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 sync

Cada 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 publish

O 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.