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

genpaths

v3.2.0

Published

Gerador automático de paths e estruturas de arquivos para projetos com suporte a tipos customizados

Readme

🚀 Path Generator

Um gerador automático de estruturas de arquivos e paths para projetos JavaScript/TypeScript. Crie rapidamente features completas com entities, repositories, interfaces, hooks e enums organizados de forma padronizada.

� Instalação

Via NPX (Recomendado)

npx genpaths

Instalação Global

npm install -g genpaths

🎯 Características

  • ✅ Suporte para JavaScript e TypeScript
  • Suporte a múltiplos idiomas (Português e Inglês)
  • ✅ Templates personalizáveis
  • ✅ Configuração flexível via arquivo .genpaths.json
  • Arquivos index.{ts/js} automáticos em cada pasta de tipo
  • Pasta base configurável (src, lib, ou nenhuma)
  • ✅ Geração seletiva de tipos de arquivo
  • ✅ Suporte a paths aninhados
  • ✅ Modo interativo intuitivo
  • ✅ CLI amigável com cores e emojis

🚀 Uso Rápido

Inicializar projeto (Novo!)

npx genpaths init

Este comando irá:

  1. Perguntar qual idioma você prefere (pt-BR ou en)
  2. Perguntar qual linguagem usar (TypeScript ou JavaScript)
  3. Copiar todos os templates relevantes para .genpaths/templates/
  4. Criar um arquivo .genpaths.json com configuração padrão

Templates incluídos:

  • Base (default): entity, repository, use-case, enum, component, hook

Gerar uma feature completa

npx genpaths create User

Isso criará a seguinte estrutura:

src/
  entities/
    user.entity.ts
    index.ts
  repositories/
    user.repository.ts
    index.ts
  use-cases/
    user.use-case.ts
    index.ts
  enums/
    user.enum.ts
    index.ts
  components/
    User.tsx
    index.ts
  hooks/
    useUser.ts
    index.ts

Gerar apenas tipos específicos

# Apenas entities e repositories
npx genpaths create Product --types entities,repositories

# Apenas hooks
npx genpaths create useAuth --types hooks

# Todos exceto enums
npx genpaths create Order --except enums

Customizar localização

# Gerar em pasta base diferente
npx genpaths create shared/helpers --base-dir src/utils

# Gerar em pasta de saída diferente
npx genpaths create User --output-dir modules

Especificar linguagem

# Forçar JavaScript
npx genpaths create Auth --js

# Forçar TypeScript
npx genpaths create Auth --ts

Paths aninhados

# Cria em features/auth/Login/
npx genpaths create auth/Login

Gerar apenas tipos específicos

# Apenas entities e interfaces
npx genpaths Product --only entities,interfaces

# Todos exceto enums
npx genpaths Order --except enums

Paths aninhados

# Cria em features/auth/Login/
npx genpaths create auth/Login

📋 Comandos Disponíveis

Gerar Feature

npx genpaths create <nome> [opções]

Comandos Utilitários

# Configurar projeto interativamente
npx genpaths init

# Copiar templates padrão para personalização
npx genpaths defaults

# Mostrar configuração atual
npx genpaths config

# Mostrar ajuda
npx genpaths --help

⚙️ Opções de CLI

| Opção | Descrição | Exemplo | | -------------------- | -------------------------------------------- | ------------------------------------ | | --types <tipos> | Tipos a gerar | --types entities,repositories | | --except <tipos> | Gera todos exceto os especificados | --except enums | | --base-dir <pasta> | Pasta base do projeto (sobrescreve config) | --base-dir src/utils | | --output-dir <pasta>| Pasta de saída (sobrescreve config) | --output-dir modules | | --js | Força geração em JavaScript | --js | | --ts | Força geração em TypeScript | --ts | | --locale, -l | Define o idioma (pt-BR ou en) | --locale en | | --interactive, -i | Força modo interativo | -i | | --help, -h | Mostra ajuda | --help |

🌍 Localização (i18n)

O genpaths suporta múltiplos idiomas para tornar a ferramenta mais acessível!

Idiomas Disponíveis

  • 🇧🇷 Português (pt-BR) - Idioma padrão
  • 🇺🇸 Inglês (en)

Como Usar

# Durante o init, escolha seu idioma preferido
npx genpaths init

# Ou defina diretamente via linha de comando
npx genpaths --locale en
npx genpaths User --locale pt-BR

# O idioma é salvo no .genpaths.json para uso futuro

Exemplos de Uso

🇧🇷 Em Português:

$ npx genpaths User

🏗️  Gerando feature "User" em typescript...
✨ Feature criada com sucesso!

🇺🇸 In English:

$ npx genpaths User --locale en

🏗️  Generating feature "User" in typescript...
✨ Feature created successfully!

Contribuindo com Traduções

Quer adicionar um novo idioma? É fácil!

  1. Crie um arquivo src/locales/[codigo].json (ex: es.json para espanhol)
  2. Copie a estrutura de en.json ou pt-BR.json
  3. Traduza todas as strings
  4. Adicione o idioma em src/locales/index.js
  5. Atualize o prompt em src/prompts.js
  6. Abra um Pull Request! 🎉

🔧 Configuração

Arquivo .genpaths.json

Crie um arquivo .genpaths.json na raiz do seu projeto para personalizar as configurações.

Configuração Padrão (TypeScript + src/)

Este é o padrão criado pelo comando genpaths init:

{
  "language": "typescript",
  "locale": "pt-BR",
  "baseDir": "src",
  "outputDir": "features",
  "defaultTypes": [
    "entities",
    "hooks",
    "repositories",
    "interfaces",
    "enums"
  ]
}

Exemplos de Configurações

JavaScript sem pasta base (Inglês):

{
  "language": "javascript",
  "locale": "en",
  "baseDir": "",
  "outputDir": "features",
  "defaultTypes": ["entities", "repositories"]
}

TypeScript com pasta lib:

{
  "language": "typescript",
  "locale": "pt-BR",
  "baseDir": "lib",
  "outputDir": "modules",
  "defaultTypes": ["entities", "interfaces", "hooks"]
}

Projeto minimalista:

{
  "language": "javascript",
  "locale": "en",
  "baseDir": "",
  "outputDir": "components",
  "defaultTypes": ["entities"]
}

Opções de Configuração

| Opção | Descrição | Exemplo | Padrão | |-------|-----------|---------|--------| | language | Linguagem do projeto | "typescript" ou "javascript" | "typescript" | | locale | Idioma da interface | "pt-BR" ou "en" | "pt-BR" | | baseDir | Pasta base do projeto | "src", "lib", "" (vazio para nenhuma) | "src" | | outputDir | Pasta onde features serão criadas | "features", "modules" | "features" | | defaultTypes | Tipos de arquivo a serem gerados | ["entities", "hooks"] | ["entities", "hooks", "repositories", "interfaces", "enums"] |

Configuração Interativa

npx genpaths init

Este comando guiará você através de um processo interativo para configurar:

  • Idioma preferido (Português ou Inglês)
  • Linguagem padrão (JS/TS)
  • Pasta base (src, lib, ou nenhuma)
  • Diretório de saída
  • Tipos de arquivo padrão

Usando o Arquivo de Exemplo

Você pode copiar o arquivo de exemplo incluído no pacote:

# Se instalado globalmente
cp $(npm root -g)/genpaths/.genpaths.json.example .genpaths.json

# Ou criar manualmente com os valores padrão
cat > .genpaths.json << 'EOF'
{
  "language": "typescript",
  "baseDir": "src",
  "outputDir": "features",
  "defaultTypes": ["entities", "hooks", "repositories", "interfaces", "enums"]
}
EOF

🎨 Arquivos Index Automáticos

Cada pasta de tipo gera automaticamente um arquivo index.{ts/js} que exporta o arquivo da feature:

// src/features/User/entities/index.ts
export * from './User.entity';

// src/features/User/hooks/index.ts
export * from './User.hook';

Isso permite importações mais limpas:

// Ao invés de:
import { Userentity } from './features/User/entities/User.entity';

// Você pode usar:
import { Userentity } from './features/User/entities';

📁 Tipos de Arquivo Suportados

| Tipo | Descrição | Arquivo Gerado | | -------------- | -------------------------- | -------------------------- | | entities | Classes de entityo/entidade | Feature.entity.js/ts | | repositories | Camada de acesso a dados | Feature.repository.js/ts | | interfaces | Interfaces TypeScript | Feature.interface.ts | | hooks | Custom hooks | Feature.hook.js/ts | | enums | Enumerações | Feature.enum.js/ts |

🎨 Templates Personalizados

Copiar Templates Padrão

npx genpaths defaults

Isso copiará os templates padrão para ./generator/templates/ permitindo personalização.

Estrutura de Templates

generator/
  templates/
    entities/
      {feature}.entity.js
      {feature}.entity.ts
      index.js
      index.ts
    repositories/
      {feature}.repository.js
      {feature}.repository.ts
      index.js
      index.ts
    interfaces/
      {feature}.interface.ts
      {feature}.interface.js
      index.js
      index.ts
    hooks/
      {feature}.hook.js
      {feature}.hook.ts
      index.js
      index.ts
    enums/
      {feature}.enum.js
      {feature}.enum.ts
      index.js
      index.ts

Variáveis Disponíveis nos Templates

  • {{feature}} - Nome da feature (capitalizado)
  • {{featureLower}} - Nome da feature (minúsculo)

Criar Tipos Customizados

Você pode criar seus próprios tipos além dos padrões (entities, hooks, repositories, interfaces, enums):

Passo 1: Criar a estrutura de templates

# Criar pasta para o novo tipo
mkdir -p generator/templates/services

# Criar template do arquivo principal
cat > generator/templates/services/{feature}.service.ts << 'EOF'
// Service for {{feature}}
export class {{feature}}Service {
  constructor() {
    // Initialize service
  }

  async find{{feature}}ById(id: string) {
    // Implementation
  }
}
EOF

# Criar template do index
cat > generator/templates/services/index.ts << 'EOF'
export * from './{{feature}}.service';
EOF

Passo 2: Adicionar ao arquivo de configuração

Edite .genpaths.json e adicione seu tipo customizado:

{
  "language": "typescript",
  "baseDir": "src",
  "outputDir": "features",
  "defaultTypes": [
    "entities",
    "hooks",
    "repositories",
    "interfaces",
    "enums",
    "services"
  ]
}

Passo 3: Usar o tipo customizado

# Gerar feature com o novo tipo
npx genpaths User

# Ou apenas o tipo customizado
npx genpaths User --only services

Isso criará:

src/
  features/
    User/
      services/
        User.service.ts
        index.ts

Regras para Tipos Customizados

  1. Nome da pasta: Use o nome do tipo no plural (ex: services, controllers, validators)
  2. Nome do arquivo: O sistema remove o 's' final automaticamente (ex: servicesservice)
    • Se o tipo não termina com 's', mantém o nome (ex: dtodto)
  3. Template principal: {feature}.TIPO.extensao (ex: {feature}.service.ts)
  4. Template index: index.extensao (ex: index.ts)
  5. Placeholder: Use {{feature}} para o nome capitalizado da feature

Exemplos de Tipos Customizados

Controllers

// generator/templates/controllers/{feature}.controller.ts
export class {{feature}}Controller {
  async handle(req, res) {
    // Implementation
  }
}

DTOs

// generator/templates/dtos/{feature}.dto.ts
export interface {{feature}}DTO {
  id: string;
  // Add properties
}

Validators

// generator/templates/validators/{feature}.validator.ts
export class {{feature}}Validator {
  validate(data: any): boolean {
    // Validation logic
    return true;
  }
}

📝 Exemplos Práticos

E-commerce

# Estrutura de produto
npx genpaths Product --only entities,interfaces,repositories

# Carrinho de compras
npx genpaths shopping Cart

# Sistema de pagamento
npx genpaths payment PaymentMethod --except hooks

Autenticação

# Módulo de usuário completo
npx genpaths auth User

# Apenas interfaces de auth
npx genpaths auth Login --only interfaces

API REST

# Para cada endpoint
npx genpaths api users --only entities,repositories
npx genpaths api posts --only entities,repositories
npx genpaths api comments --only entities,repositories

🛠️ Desenvolvimento

Requisitos

  • Node.js >= 14.0.0

Dependências

  • chalk - Cores no terminal
  • inquirer - Prompts interativos

Scripts de Desenvolvimento

# Clonar repositório
git clone <repository-url>
cd genpaths

# Instalar dependências
npm install

# Testar localmente
npm link
genpaths --help

🤝 Contribuindo

Contribuições são bem-vindas! Aqui estão algumas formas de ajudar:

🌍 Adicionar Traduções

Quer adicionar um novo idioma?

  1. Crie src/locales/[codigo].json (ex: es.json)
  2. Copie e traduza a estrutura de en.json ou pt-BR.json
  3. Adicione o código em src/locales/index.js
  4. Atualize src/prompts.js com a nova opção

💻 Código

  1. Fork o projeto GitHub
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)
  3. Commit suas mudanças (git commit -am 'Adiciona nova feature')
  4. Push para a branch (git push origin feature/nova-feature)
  5. Crie um Pull Request

📚 Documentação Adicional

🆘 Suporte

🎉 Agradecimentos

Obrigado a todos os contribuidores que ajudaram a tornar este projeto possível!


Se este projeto te ajudou, considere dar uma estrela no GitHub!