{"id":29177711,"url":"https://github.com/totvs/md2poui","last_synced_at":"2025-07-01T18:07:50.888Z","repository":{"id":44993566,"uuid":"189016752","full_name":"totvs/md2poui","owner":"totvs","description":"Conversor de arquivos markdown para componentes Angular utilizando recursos da biblioteca PO UI","archived":false,"fork":false,"pushed_at":"2023-02-09T14:39:50.000Z","size":936,"stargazers_count":6,"open_issues_count":14,"forks_count":3,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-05-08T01:47:01.933Z","etag":null,"topics":["angular","markdown","po-ui","thf"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/totvs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-28T11:39:33.000Z","updated_at":"2023-11-21T12:43:04.000Z","dependencies_parsed_at":"2023-01-31T16:46:38.186Z","dependency_job_id":null,"html_url":"https://github.com/totvs/md2poui","commit_stats":null,"previous_names":["totvs/md2thf"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/totvs%2Fmd2poui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/totvs%2Fmd2poui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/totvs%2Fmd2poui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/totvs%2Fmd2poui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/totvs","download_url":"https://codeload.github.com/totvs/md2poui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/totvs%2Fmd2poui/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":258803353,"owners_count":22760437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","markdown","po-ui","thf"],"created_at":"2025-07-01T18:07:50.110Z","updated_at":"2025-07-01T18:07:50.864Z","avatar_url":"https://github.com/totvs.png","language":"TypeScript","readme":"# md2poui\n\nConversor de arquivos `markdown` para componentes `Angular` utilizando recursos visuais das bibliotecas [`PO UI`][po-ui].\n\n## Instalação\n\n```bash\nnpm install md2poui -g\n```\n\nou\n\n```bash\nnpm install md2poui --save-dev\n```\n\n## Modo de uso\n\n```javascript\nconst md2poui = require('md2poui');\nmd2poui('C:/pathFromMdFiles', 'C:/pathToAngularFiles');\n```\n\nou\n\n```bash\nmd2poui C:/pathFromMdFiles C:/pathToAngularFiles\n```\n\n## Release Notes\n\n### 4.0.0\n  - Atualizado para para rodar com a versão 15 do po-ui e node 18.\n\n### 3.0.0\n\n- Removido suporte ao `Portinari UI` e adicionado suporte somente ao **PO-UI**.\n- Removida a criação de âncoras, devido a limitação técnica do **PO-UI**.\n\n### 2.0.2\n\n- Inclusão do campo de filtro no menu da página inicial.\n\n### 2.0.1\n\n- Corrigida geração da página inicial ao usar nome de módulo com mais de uma palavra.\n- Corrigida geração de componentes que possuem números no início do nome.\n\n### 2.0.0 **Nova Versão!**\n\n- Removido suporte ao `THF`.\n- Adicionada nova configuração: `options.home`.\n  \u003e Mais informações disponíveis no item [`options`](#options).\n\n### 1.2.5\n\n- Corrigido parâmetro `parentRoutePath` na versão CLI - por [@laraujo0901](https://github.com/laraujo0901).\n\n### 1.2.4\n\n- Melhoria na conversão das imagens para que as mesmas não gerem barra de rolagem horizontal para a página.\n- Corrigidas configurações padrões.\n- Corrigida geração de componentes onde a pasta contém números que\n  representam sua ordem de criação.\n\n### 1.2.3\n\n- Adicionado suporte ao **PortinariUI**!\n- Adicionadas novas configurações: `options.portinariUi` e `options.parentRoutePath`.\n  \u003e Mais informações disponíveis no item [`options`](#options).\n- A partir desta versão, se definida a configuração `options.flatDirs=false` o menu será gerado de forma hierárquica obedecendo a estrutura dos arquivos `markdown`.\n- Adicionado suporte a diretórios na lista de exclusões.\n- Alterado nome do método que retorna os itens para `getMenuItems`.\n- O módulo de rotas agora possui _fallback_ para caminhos inválidos.\n\n### 1.2.1, 1.2.2\n\n- Adicionadas novas configurações: `options.recursive` e `options.highlightClassName`.\n  \u003e Mais informações disponíveis no item [`options`](#options).\n- Adicionado suporte a arquivos no parâmetro de origem.\n\n### 1.2.0\n\n- Adicionado suporte à execução do md2poui \"globalmente\" via linha de comando.\n\n### 1.1.1 e 1.1.2\n\n- Corregidas dependências utilizadas pelo projeto.\n\n### 1.1.0\n\n- Adicionado suporte a ícones do padrão do GitHub.\n  \u003cbr/\u003eExemplo: `:warning:` será :warning: - por [@marcospds](https://github.com/marcospds).\n- Adicionadas novas configurações: `options.createHelpers` e `options.copyExternalFiles`.\n  \u003e Mais informações disponíveis no item [`options`](#options).\n\n### 1.0.2\n\n- Corrigida verificação das configurações padrões quando não era informado `exclusions`.\n- Adicionado suporte a links internos na geração dos componentes.\n- Adicionado suporte à âncoras para títulos de até três níveis.\n\n### 1.0.1\n\n- Primeira versão!\n\n## Parâmetros\n\n```typescript\nfunction md2poui(srcPath: string, destDir: string, options?: Options): void {}\n```\n\n### `srcPath`\n\nCaminho de origem dos arquivos `markdown` que serão convertidos. São considerados todos os arquivos com extensão `.md` encontrados na pasta raiz e nas subpastas do caminho informado.\n\nExemplo: `C:/zoologico`.\n\n### `destDir`\n\nDiretório de destino dos arquivos `Angular` que serão criados a partir da conversão dos arquivos `markdown`.\n\nExemplo: `C:/portal/src/app/zoologico`.\n\n\u003e Arquivos existentes no diretório de destino não são excluídos.\n\n### `options`\n\nOpções de configurações e definições customizadas de conversão dos arquivos:\n\n```typescript\n{\n  exclusions: string[] = [],\n  highlightClassName: string = 'highlight',\n  flatDirs: boolean = false,\n  recursive: boolean = true,\n  createHelpers: boolean = true,\n  home: boolean = true,\n  moduleName: string = 'docs',\n  parentRoutePath: string = '{{moduleName}}',\n  copyExternalFiles: boolean = true,\n  resourceFolderName: string = 'assets',\n  resourcePathName: string = 'app/{{moduleName}}/{{resourceFolderName}}'\n}\n```\n\n### `options.exclusions`\n\nLista com os arquivos `markdown` ou diretórios que serão desconsiderados da conversão. O caminho informado nesta lista pode ser relativo ou completo ao diretório informado no parâmetro `srcPath`.\n\nValor padrão: `[]`\u003cbr\u003e\nExemplo: `['C:/zoologico/onca/README.md', 'chimpanze/README.md']`.\n\n### `options.highlightClassName`\n\nNome da classe `CSS` que será utilizada nos elementos de códigos de exemplo.\n\n\u003e Independente desta configuração, a classe contendo o nome da linguagem sempre é inserida.\n\nValor padrão: `highlight`.\n\n### `options.flatDirs`\n\nSe verdadeiro, irá criar as pastas dos componentes na pasta raíz da pasta de destino informada no parâmetro `destDir`, caso contrário irá obedecer a mesma estrutura encontrada na pasta de origem informada no parâmetro `srcPath`.\n\nValor padrão: `true`\n\nExemplo:\n\n`srcPath`\n\n```\nC:\\\n└── zoologico\\\n    └── animais\\\n    │   └── leao\\\n    │   |   ├── README.md\n    │   └── zebra\\\n    │   |   ├── README.md\n    └── atracoes\\\n    │   ├── README.md\n    ├── README.md\n```\n\n`destDir` com `options.flatDirs=true`\n\n```\nC:\\portal\\src\\app\\\n└── zoologico/\n    └── leao/\n    │   ├── leao.component.ts\n    └── zebra/\n    │   ├── zebra.component.ts\n    └── atracoes/\n    │   ├── atracoes.component.ts\n    ├── zoologico.component.ts\n    ├── zoologico.module.ts\n    ├── zoologico.service.ts\n    ├── zoologico-routing.module.ts\n```\n\n`destDir` com `options.flatDirs=false`\n\n```\nC:\\portal\\src\\app\\\n└── zoologico/\n    └── animais/\n    │   └── leao/\n    │   |   ├── leao.component.ts\n    │   └── zebra/\n    │   |   ├── zebra.component.ts\n    └── atracoes/\n    │   ├── atracoes.component.ts\n    ├── zoologico.component.ts\n    ├── zoologico.module.ts\n    ├── zoologico.service.ts\n    ├── zoologico-routing.module.ts\n```\n\n### `options.recursive`\n\nSe verdadeiro, irá ler recursivamente todas as pastas abaixo da pasta de origem informada no parâmetro `srcPath`.\n\nValor padrão: `true`.\n\n### `options.createHelpers`\n\nSe verdadeiro, irá criar os arquivos auxiliares de módulo, rotas e serviço.\n\nValor padrão: `true`.\n\n### `options.home`\n\nSe verdadeiro, irá criar uma página inicial já com menu para os componentes criados.\n\nValor padrão: `true`.\n\n### `options.moduleName`\n\nNome do módulo `Angular` que será criado para agrupar os componentes gerados a partir da conversão dos arquivos `markdown`.\n\nValor padrão: `docs`.\n\n\u003e O nome do módulo deve ser informado em `kebab-case`.\n\n### `options.parentRoutePath`\n\nCaminho da rota pai que será utilizado para as rotas dos componentes.\n\nValor padrão: `{{options.moduleName}}`.\n\nExemplo:\n\n`options.parentRoutePath='zoo/animais'`\n\n```javascript\n{\n  label: \"Leão\",\n  link: \"zoo/animais/leao\"\n}\n```\n\n### `options.copyExternalFiles`\n\nSe verdadeiro, irá copiar os arquivos externos referenciados nos arquivos `markdown` para a pasta de recursos.\n\nValor padrão: `true`.\n\n### `options.resourceFolderName`\n\nNome da pasta de recursos que será criada para armazenar os arquivos externos referenciados nos arquivos `markdown`.\n\nOs arquivos encontrados na conversão são copiados para dentro desta pasta com um nome único gerado automaticamente para não haver conflitos e as referências são alteradas para apontar para o arquivo copiado.\n\nValor padrão: `assets`.\n\n\u003e Esta pasta deve ser incluída como `asset` da aplicação `Angular`.\n\n\u003e Geralmente estes arquivos são imagens referenciadas pela marcação `markdown` ou `HTML`, como nos exemplos abaixo:\u003cbr\u003e \u003e `![Minha Imagem](imagens/minhaImagem.png)` ou\u003cbr\u003e \u003e `\u003cimg alt=\"Minha Imagem\" src=\"imagens/minhaImagem.png\" /\u003e`\n\n### `options.resourcePathName`\n\nCaminho que será utilizado para referenciar os arquivos externos copiados durante a conversão dos arquivos `markdown`.\n\nPadrão: `src/app/{{options.moduleName}}/{{options.resourceFolderName}}`.\n\n\u003e Este caminho deve ser acessível pela aplicação `Angular`.\n\n## Facilitadores\n\nAlém da conversão e criação dos componentes `Angular` são criados mais três arquivos auxiliares: módulo, rotas e serviço.\n\nO arquivo de módulo agrega todos os componentes criados e o roteamento destes componentes - com o uso do arquivo de roteamento.\n\nJá o arquivo de serviço possui facilitadores para retornar a lista das rotas dos componentes no formato esperado pelo menu do [`PO-UI`][po-menu].\n\n_Module_\n\n```typescript\nimport { NgModule } from '@angular/core';\nimport { PoModule } from '@po-ui/ng-components';\n\nimport { WikiRoutingModule } from './wiki-routing.module';\nimport { WikiService } from './wiki.service';\n\nimport { SampleComponent } from './sample/sample.component';\n\n@NgModule({\n  declarations: [SampleComponent],\n  imports: [PoModule, WikiRoutingModule],\n  providers: [WikiService]\n})\nexport class WikiModule {}\n```\n\n_Routing_\n\n```typescript\nimport { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { SampleComponent } from './sample/sample.component';\n\nconst routes: Routes = [\n  {\n    path: 'sample',\n    component: SampleComponent\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class WikiRoutingModule {}\n```\n\n_Service_\n\n```typescript\nimport { Injectable } from '@angular/core';\nimport { PoMenuItem } from '@po-ui/ng-components';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class WikiService {\n  constructor() {}\n\n  public getWikiMenuItems(): PoMenuItem[] {\n    return [\n      {\n        label: 'Sample Component',\n        link: 'wiki/sample'\n      }\n    ];\n  }\n}\n```\n\n## Visualização dos arquivos externos\n\nOs arquivos externos referenciados nos arquivos `markdown` são copiados para a pasta de recursos (conforme parâmetros `options.copyExternalFiles` e `options.resourceFolderName`) com outro nome gerado dinâmicamente.\n\nPara que seja possível a visualização dos arquivos desta pasta pela aplicação `Angular` é necessário adicionar a pasta de recursos como `asset` alterando o arquivo `angular.json` da aplicação:\n\n```json\n{\n  \"assets\": [\n    \"src/favicon.ico\",\n    \"src/assets\",\n    \"src/app/zoologico/resources\"\n  ]\n}\n```\n\n## Feito com md2poui\n\nToda a área de documentação do portal [**TOTVS Java Framework**](https://tjf.totvs.com.br) foi desenvolvida utilizando o `md2poui`.\n\n[po-ui]: https://po-ui.io/\n[po-menu]: https://po-ui.io/documentation/po-menu\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftotvs%2Fmd2poui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftotvs%2Fmd2poui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftotvs%2Fmd2poui/lists"}