@oktis-works/cms 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scaffold-docs.d.ts +7 -0
- package/dist/scaffold-docs.d.ts.map +1 -0
- package/dist/scaffold-docs.js +382 -0
- package/dist/scaffold-docs.js.map +1 -0
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +14 -0
- package/dist/scaffold.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** README.md do projeto scaffoldado. */
|
|
2
|
+
export declare function projectReadme(projectName: string): string;
|
|
3
|
+
/** PLUGIN.md — guia de desenvolvimento de plugins. */
|
|
4
|
+
export declare const PLUGIN_DOC = "# Desenvolvendo um Plugin\n\nPlugin \u00E9 a extens\u00E3o que se registra no runtime do CMS e participa do sistema\nde **hooks e filters** (transformar dados, reagir a eventos de conte\u00FAdo etc.).\nO cat\u00E1logo de hooks dispon\u00EDveis \u00E9 servido pela API em\n`GET /api/v1/hooks/catalog`.\n\n## Estrutura gerada\n\n```bash\nokcms plugin:create --name meu-plugin\n```\n\n```\nplugins/meu-plugin/\n\u251C\u2500\u2500 manifest.json # identidade + permiss\u00F5es + compatibilidade\n\u251C\u2500\u2500 index.js # entrypoint: module.exports.register(registry)\n\u2514\u2500\u2500 README.md\n```\n\n### manifest.json\n\n```json\n{\n \"name\": \"meu-plugin\",\n \"version\": \"0.1.0\",\n \"description\": \"Plugin meu-plugin para OkCMS\",\n \"type\": \"plugin\",\n \"main\": \"index.js\",\n \"scope\": \"tenant\",\n \"permissions\": [],\n \"compatibility\": { \"okcms\": \"^0.1.x\" }\n}\n```\n\n| Campo | Significado |\n|---|---|\n| `type` | `\"plugin\"` (fixo \u2014 temas usam `\"theme\"`) |\n| `main` | Arquivo de entrada com o registro |\n| `scope` | Escopo de atua\u00E7\u00E3o no multi-tenant (ex.: `tenant`) |\n| `permissions` | Permiss\u00F5es que o plugin pede (vazio = nenhuma) |\n| `compatibility.okcms` | Range semver exigido do CMS. **O scaffold preenche com a vers\u00E3o atual automaticamente** e o valor \u00E9 validado no scaffold e em cada instala\u00E7\u00E3o \u2014 manifesto incompat\u00EDvel \u00E9 rejeitado. |\n\n### index.js\n\n```js\n'use strict';\n\nmodule.exports.register = function register(registry) {\n registry.addFilter('theme:data:posts', (value) => value);\n};\n```\n\nO `register(registry)` \u00E9 chamado quando o plugin \u00E9 carregado. Use o registro\npara expor filters (transforma\u00E7\u00F5es) \u2014 veja o que existe em\n`GET /api/v1/hooks/catalog` para os nomes e contratos dispon\u00EDveis.\n\n## Fluxo de desenvolvimento\n\n```bash\n# 1. Crie (em ./plugins do projeto, ou num workspace externo com --dir)\nokcms plugin:create --name meu-plugin\n\n# 2. Implemente plugins/meu-plugin/index.js\n\n# 3. Se criou FORA do projeto, instale (valida compatibilidade e copia para plugins/)\nokcms plugin:install --name ../meu-plugin-fonte\n\n# 4. Gest\u00E3o\nokcms plugin:list # instalados + status\nokcms plugin:manage -n meu-plugin --info # informa\u00E7\u00F5es do manifesto\nokcms plugin:manage -n meu-plugin --disable # desabilita (mant\u00E9m os arquivos)\nokcms plugin:manage -n meu-plugin --enable # habilita de novo\nokcms plugin:manage -n meu-plugin --uninstall # remove arquivos + registro\n\n# 5. Busca no npm (pacotes com a keyword okcms-plugin)\nokcms plugin:search -q galeria\n```\n\n## Publicando\n\nEmpacote o diret\u00F3rio do plugin como pacote npm com a keyword\n`okcms-plugin` (\u00E9 o que o `okcms plugin:search` consulta) e mantenha\n`compatibility.okcms` atualizado para a linha do CMS que voc\u00EA suporta.\n";
|
|
5
|
+
/** THEME.md — guia de desenvolvimento de temas. */
|
|
6
|
+
export declare const THEME_DOC = "# Desenvolvendo um Tema\n\nTema \u00E9 o visual do site p\u00FAblico: **templates** (hierarquia de p\u00E1ginas) +\n**estilos**, com isolamento por `[data-theme]` para que um tema nunca vaze\nCSS para outro.\n\n## Estrutura gerada\n\n```bash\nokcms theme:create --name meu-tema --style css # css | scss | tailwind\n```\n\n```\nthemes/meu-tema/\n\u251C\u2500\u2500 theme.json # manifest (type: theme + compatibilidade)\n\u251C\u2500\u2500 templates/\n\u2502 \u251C\u2500\u2500 index.html # listagem (home)\n\u2502 \u2514\u2500\u2500 single.html # p\u00E1gina \u00FAnica (post/conte\u00FAdo)\n\u251C\u2500\u2500 style.css # engine css \u2014 ou styles/main.scss \u2014 ou src/input.css\n\u2514\u2500\u2500 README.md\n```\n\n### theme.json\n\n```json\n{\n \"name\": \"meu-tema\",\n \"version\": \"0.1.0\",\n \"description\": \"Tema meu-tema para OkCMS\",\n \"type\": \"theme\",\n \"compatibility\": { \"okcms\": \"^0.1.x\" }\n}\n```\n\nCom `--style scss` ou `--style tailwind`, o manifesto ganha tamb\u00E9m\n`stylesConfig` (`engine`, `entry`, `output`, `isolation`) apontando para a\nentrada de estilos. `compatibility.okcms` \u00E9 preenchido e validado\nautomaticamente, como nos plugins.\n\n### Templates\n\nSintaxe de template com vari\u00E1veis e la\u00E7os:\n\n```html\n<main class=\"site\">\n {{#each posts}}\n <article>\n <h2>{{this.title}}</h2>\n <p>{{this.excerpt}}</p>\n </article>\n {{/each}}\n</main>\n```\n\n- `templates/index.html` \u2014 listagem (ex.: `{{#each posts}}`)\n- `templates/single.html` \u2014 item individual (ex.: `{{title}}`, `{{content}}`)\n\n## Estilos por engine\n\n| `--style` | Arquivo gerado | Build |\n|---|---|---|\n| `css` (default) | `style.css` | nenhum \u2014 servido direto |\n| `scss` | `styles/main.scss` (+ `components.scss`) | `okcms theme:build -n meu-tema` |\n| `tailwind` | `src/input.css` + `tailwind.config.js` | `okcms theme:build -n meu-tema` |\n\nO build compila para `dist/theme.css` **com isolamento\n`[data-theme=\"meu-tema\"]`** (sem vazar estilos entre temas; o Tailwind j\u00E1\nsai com `preflight: false`).\n\n## Fluxo de desenvolvimento\n\n```bash\n# 1. Crie\nokcms theme:create --name meu-tema --style scss\n\n# 2. Edite templates/ e estilos\n\n# 3. Compile os estilos (scss/tailwind)\nokcms theme:build --name meu-tema\n\n# 4. Ative (grava activeTheme no okcms.config.json)\nokcms theme:manage --name meu-tema --set-active\n# (equivalente: ACTIVE_THEME=meu-tema no .env)\n\n# 5. Gest\u00E3o\nokcms theme:list # instalados + status\nokcms theme:manage -n meu-tema --info # informa\u00E7\u00F5es do theme.json\nokcms theme:manage -n meu-tema --disable|enable\nokcms theme:manage -n meu-tema --uninstall\nokcms theme:search -q blog # busca no npm (keyword okcms-theme)\n\n# Se criou FORA do projeto:\nokcms theme:install --name ../meu-tema-fonte\n```\n\n## Publicando\n\nPublique como pacote npm com a keyword `okcms-theme` (alvo do\n`okcms theme:search`) e mantenha `compatibility.okcms` na linha suportada\ndo CMS. O `theme:build` deve ser executado no seu processo de release para\nque `dist/theme.css` v\u00E1 junto no pacote.\n";
|
|
7
|
+
//# sourceMappingURL=scaffold-docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-docs.d.ts","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAIA,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA2LzD;AAED,sDAAsD;AACtD,eAAO,MAAM,UAAU,64FAoFtB,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,SAAS,qqGAqGrB,CAAC"}
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
// @oktis-works/cms - Documentação gerada no scaffold do projeto
|
|
2
|
+
// README.md (uso local/Docker + visão do sistema), PLUGIN.md e THEME.md
|
|
3
|
+
// (guias de desenvolvimento de extensões). Só escreve se o arquivo não existir.
|
|
4
|
+
/** README.md do projeto scaffoldado. */
|
|
5
|
+
export function projectReadme(projectName) {
|
|
6
|
+
return `# ${projectName}
|
|
7
|
+
|
|
8
|
+
Projeto OkCMS criado com \`okcms init\`. Este guia explica o sistema e como
|
|
9
|
+
rodar em desenvolvimento local e com Docker.
|
|
10
|
+
|
|
11
|
+
## O que é o OkCMS
|
|
12
|
+
|
|
13
|
+
CMS API-first, multi-tenant e extensível. Quatro apps + uma CLI:
|
|
14
|
+
|
|
15
|
+
| App | Pacote | Função |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| **API** | \`@oktis-works/api\` | Servidor REST (Hono) em \`/api/v1\`: conteúdo, auth, mídia, plugins |
|
|
18
|
+
| **Admin** | \`@oktis-works/admin\` | Painel de administração (Astro + SolidJS) |
|
|
19
|
+
| **Web** | \`@oktis-works/web\` | Site público (Astro) |
|
|
20
|
+
| **Worker** | \`@oktis-works/worker\` | Filas/jobs em background (bullmq): publicação, mídia, webhooks, cache |
|
|
21
|
+
| **CLI** | \`@oktis-works/cms\` | \`okcms\` — init, start, banco, extensões, update |
|
|
22
|
+
|
|
23
|
+
- **Banco:** PostgreSQL (Row-Level Security, multi-tenant)
|
|
24
|
+
- **Cache e filas:** Redis
|
|
25
|
+
- **Extensões:** [plugins](./PLUGIN.md) (hooks/filters no runtime) e [temas](./THEME.md) (templates + estilos isolados)
|
|
26
|
+
|
|
27
|
+
## Estrutura do projeto
|
|
28
|
+
|
|
29
|
+
| Caminho | O que é |
|
|
30
|
+
|---|---|
|
|
31
|
+
| \`okcms.config.json\` | Estrutura: nome, ports, storage, dirs, tema ativo. **Sem credenciais de banco.** |
|
|
32
|
+
| \`.env\` | **Fonte única de conexão**: banco (\`DB_*\` ou \`DATABASE_URL\`), Redis, JWT, ports |
|
|
33
|
+
| \`package.json\` | Apps do CMS (\`api\`, \`admin\`, \`web\`, \`worker\`) + CLI em devDependencies |
|
|
34
|
+
| \`plugins/\`, \`themes/\` | Extensões do projeto |
|
|
35
|
+
| \`migrations/\` | SQL de migrations (\`okcms db:migrate\`) |
|
|
36
|
+
| \`docker-compose.yml\` | Infra local: PostgreSQL + Redis (com healthcheck e volume) |
|
|
37
|
+
|
|
38
|
+
## Começando (desenvolvimento local)
|
|
39
|
+
|
|
40
|
+
Pré-requisitos: **Node 20+** ou **Bun 1.3+** · **PostgreSQL 16+** (obrigatório) ·
|
|
41
|
+
**Redis** (opcional — só para filas do worker).
|
|
42
|
+
|
|
43
|
+
\`\`\`bash
|
|
44
|
+
# 1. Banco no .env — escolha UM formato:
|
|
45
|
+
# (a) variáveis separadas (default)
|
|
46
|
+
DB_HOST=localhost
|
|
47
|
+
DB_PORT=5432
|
|
48
|
+
DB_NAME=okcms
|
|
49
|
+
DB_USER=postgres
|
|
50
|
+
# (b) URL única — tem precedência sobre as DB_* acima
|
|
51
|
+
# DATABASE_URL=postgresql://postgres:senha@localhost:5432/okcms
|
|
52
|
+
|
|
53
|
+
# 2. Suba a infra (Postgres + Redis) — com Docker:
|
|
54
|
+
docker compose up -d
|
|
55
|
+
# Sem Docker: aponte DB_* para um Postgres seu. Sem Redis, use:
|
|
56
|
+
# REDIS_HOST=disabled (cache em memória; filas do worker exigem Redis)
|
|
57
|
+
|
|
58
|
+
# 3. Migrações
|
|
59
|
+
okcms db:migrate
|
|
60
|
+
|
|
61
|
+
# 4. Sobe tudo: api + admin + web + worker
|
|
62
|
+
okcms start
|
|
63
|
+
|
|
64
|
+
# 5. Se algo falhar
|
|
65
|
+
okcms doctor
|
|
66
|
+
\`\`\`
|
|
67
|
+
|
|
68
|
+
Ports padrão (ajustáveis no \`.env\`): **API 3000** (\`PORT\`) · **Admin 3001**
|
|
69
|
+
(\`ADMIN_PORT\`) · **Web 3002** (\`WEB_PORT\`).
|
|
70
|
+
|
|
71
|
+
## Começando (Docker)
|
|
72
|
+
|
|
73
|
+
\`\`\`bash
|
|
74
|
+
docker compose up -d # só a infra: postgres:16 + redis:7 (healthcheck + volumes)
|
|
75
|
+
okcms db:migrate
|
|
76
|
+
okcms start # apps rodam como processos normais, fora do compose
|
|
77
|
+
\`\`\`
|
|
78
|
+
|
|
79
|
+
O \`.env\` gerado já aponta para \`localhost\`, que é onde o compose expõe as
|
|
80
|
+
portas do Postgres (5432) e do Redis (6379). Os apps em si rodam via
|
|
81
|
+
\`okcms start\` — o compose é só a infraestrutura.
|
|
82
|
+
|
|
83
|
+
## Produção
|
|
84
|
+
|
|
85
|
+
Em produção **não use \`okcms start\` como supervisor** — ele é conveniência
|
|
86
|
+
de dev: não reinicia filhos que morrem e mistura os logs de todos os apps num
|
|
87
|
+
único fluxo. Escolha um dos caminhos abaixo.
|
|
88
|
+
|
|
89
|
+
### Caminho 1: pm2 (processos no host)
|
|
90
|
+
|
|
91
|
+
Um processo pm2 **por app** — restart em crash, log por processo, \`pm2
|
|
92
|
+
startup\` na inicialização do servidor e \`pm2 reload\` individual
|
|
93
|
+
(zero-downtime). Requer **Bun instalado no servidor** (os apps sobem via
|
|
94
|
+
\`bunx\`).
|
|
95
|
+
|
|
96
|
+
\`\`\`js
|
|
97
|
+
// ecosystem.config.js
|
|
98
|
+
module.exports = {
|
|
99
|
+
apps: [
|
|
100
|
+
{ name: 'okcms-api', script: 'bunx', args: '@oktis-works/api', env: { NODE_ENV: 'production', PORT: 3000 } },
|
|
101
|
+
{ name: 'okcms-admin', script: 'bunx', args: '@oktis-works/admin', env: { NODE_ENV: 'production', PORT: 3001 } },
|
|
102
|
+
{ name: 'okcms-web', script: 'bunx', args: '@oktis-works/web', env: { NODE_ENV: 'production', PORT: 3002 } },
|
|
103
|
+
{ name: 'okcms-worker', script: 'bunx', args: '@oktis-works/worker', env: { NODE_ENV: 'production', WORKER_MODE: 'pm2' } },
|
|
104
|
+
],
|
|
105
|
+
};
|
|
106
|
+
\`\`\`
|
|
107
|
+
|
|
108
|
+
\`\`\`bash
|
|
109
|
+
pm2 start ecosystem.config.js
|
|
110
|
+
pm2 save && pm2 startup # sobe com o servidor
|
|
111
|
+
pm2 reload okcms-api # atualiza sem downtime (por app)
|
|
112
|
+
pm2 logs okcms-api # log por processo
|
|
113
|
+
pm2 unmonitor okcms-api && pm2 delete okcms-api # remover
|
|
114
|
+
\`\`\`
|
|
115
|
+
|
|
116
|
+
- O worker tem **modo pm2 nativo**: \`WORKER_MODE=pm2\` (cluster) combinado com
|
|
117
|
+
\`WORKER_COUNT\` e \`WORKER_CONCURRENCY\`.
|
|
118
|
+
- Como cada app é um executável independente, o \`okcms start\` não é
|
|
119
|
+
necessário em produção — o pm2 supervisoria cada um diretamente.
|
|
120
|
+
|
|
121
|
+
### Caminho 2: Docker imutável
|
|
122
|
+
|
|
123
|
+
Deploy por **imagem**: builda → sobe → troca; nunca se atualiza pacote dentro
|
|
124
|
+
de um container rodando. O template de imagem da API é multi-stage (bun,
|
|
125
|
+
\`NODE_ENV=production\`, expõe 3000) e fica em \`apps/api/Dockerfile\` no
|
|
126
|
+
repositório do OkCMS — o build precisa do contexto do monorepo:
|
|
127
|
+
|
|
128
|
+
\`\`\`bash
|
|
129
|
+
git clone https://github.com/oktis-works/cms.git
|
|
130
|
+
cd cms
|
|
131
|
+
docker build -f apps/api/Dockerfile -t okcms-api:v1 .
|
|
132
|
+
docker run -d --env-file /caminho/para/.env -p 3000:3000 okcms-api:v1
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
- **Atualização** = build da imagem nova + subir + desligar a antiga;
|
|
136
|
+
**rollback** = voltar à imagem anterior (tague cada build).
|
|
137
|
+
- Postgres/Redis de produção: serviços gerenciados ou containers próprios com
|
|
138
|
+
volume e backup — não use o \`docker-compose.yml\` de dev.
|
|
139
|
+
- **Migração como passo de deploy**: \`okcms db:migrate\` antes de subir a
|
|
140
|
+
versão nova da aplicação.
|
|
141
|
+
|
|
142
|
+
### Checklist (ambos os caminhos)
|
|
143
|
+
|
|
144
|
+
- [ ] \`NODE_ENV=production\` e \`JWT_SECRET\` forte e único
|
|
145
|
+
- [ ] \`.env\` fora do versionamento; credenciais nunca em \`okcms.config.json\`
|
|
146
|
+
- [ ] Proxy reverso com TLS (nginx/caddy) na frente de api/admin/web
|
|
147
|
+
- [ ] Versões fixas no \`package.json\` do projeto (nada de \`@latest\` em deploy)
|
|
148
|
+
- [ ] \`okcms db:migrate\` no pipeline de deploy e \`okcms db:backup\` agendado
|
|
149
|
+
- [ ] Redis real em produção (as filas do worker não funcionam sem Redis)
|
|
150
|
+
- [ ] \`okcms doctor\` verde no ambiente de destino
|
|
151
|
+
- [ ] Logs com destino (pm2 logrotate, ou stdout do container coletado)
|
|
152
|
+
|
|
153
|
+
## Comandos da CLI
|
|
154
|
+
|
|
155
|
+
| Comando | O que faz |
|
|
156
|
+
|---|---|
|
|
157
|
+
| \`okcms init <dir>\` | Cria o projeto (arquivos + docs) e instala as dependências |
|
|
158
|
+
| \`okcms start [--api\|--admin\|--web\|--worker\|--all]\` | Sobe os apps (default: todos) |
|
|
159
|
+
| \`okcms stop\` / \`okcms status\` | Para / mostra os processos (pidfiles) |
|
|
160
|
+
| \`okcms doctor\` | Diagnóstico: node, \`.env\`, database (\`DB_*\` ou \`DATABASE_URL\`), config |
|
|
161
|
+
| \`okcms db:migrate\` · \`db:rollback\` · \`db:status\` | Migrations da pasta \`migrations/\` (\`--tenant\` opcional) |
|
|
162
|
+
| \`okcms db:backup\` · \`db:restore -f <arquivo>\` | Backup/restore do Postgres |
|
|
163
|
+
| \`okcms plugin:create -n <nome>\` | Scaffold de plugin — guia em [PLUGIN.md](./PLUGIN.md) |
|
|
164
|
+
| \`okcms plugin:install -n <caminho>\` | Instala plugin de um caminho local + registra |
|
|
165
|
+
| \`okcms plugin:list\` · \`plugin:search\` · \`plugin:manage\` | Lista, busca (npm) e habilita/desabilita plugins |
|
|
166
|
+
| \`okcms theme:create -n <nome> --style css\|scss\|tailwind\` | Scaffold de tema — guia em [THEME.md](./THEME.md) |
|
|
167
|
+
| \`okcms theme:install\` · \`theme:list\` · \`theme:search\` · \`theme:manage\` | Gestão de temas (\`--set-active\` define o ativo) |
|
|
168
|
+
| \`okcms theme:build -n <nome>\` | Compila SCSS/Tailwind → \`dist/theme.css\` isolado |
|
|
169
|
+
| \`okcms update [-i]\` | Lista/atualiza os pacotes \`@oktis-works/*\` do projeto |
|
|
170
|
+
|
|
171
|
+
## Banco de dados
|
|
172
|
+
|
|
173
|
+
- **Conexão** (no \`.env\`, escolha um formato): \`DB_HOST/DB_PORT/DB_NAME/DB_USER/DB_PASSWORD\`
|
|
174
|
+
**ou** \`DATABASE_URL\` (tem precedência). O \`okcms doctor\` valida os dois.
|
|
175
|
+
- **Migrations**: arquivos SQL em \`migrations/\`; \`okcms db:migrate\` aplica,
|
|
176
|
+
\`db:rollback\` reverte, \`db:status\` mostra o estado. \`--tenant\` selectiva
|
|
177
|
+
(default \`default\`) — o banco é multi-tenant via Row-Level Security.
|
|
178
|
+
- **Backup**: \`okcms db:backup\` gera dump com timestamp; \`db:restore -f <arquivo>\` restaura.
|
|
179
|
+
|
|
180
|
+
## Atualizando
|
|
181
|
+
|
|
182
|
+
\`\`\`bash
|
|
183
|
+
okcms update # lista pacotes @oktis-works/* com versão nova
|
|
184
|
+
okcms update -i # aplica a atualização
|
|
185
|
+
\`\`\`
|
|
186
|
+
|
|
187
|
+
## Próximos passos
|
|
188
|
+
|
|
189
|
+
- Extender o CMS com plugins → [PLUGIN.md](./PLUGIN.md)
|
|
190
|
+
- Criar/ativar um tema → [THEME.md](./THEME.md)
|
|
191
|
+
`;
|
|
192
|
+
}
|
|
193
|
+
/** PLUGIN.md — guia de desenvolvimento de plugins. */
|
|
194
|
+
export const PLUGIN_DOC = `# Desenvolvendo um Plugin
|
|
195
|
+
|
|
196
|
+
Plugin é a extensão que se registra no runtime do CMS e participa do sistema
|
|
197
|
+
de **hooks e filters** (transformar dados, reagir a eventos de conteúdo etc.).
|
|
198
|
+
O catálogo de hooks disponíveis é servido pela API em
|
|
199
|
+
\`GET /api/v1/hooks/catalog\`.
|
|
200
|
+
|
|
201
|
+
## Estrutura gerada
|
|
202
|
+
|
|
203
|
+
\`\`\`bash
|
|
204
|
+
okcms plugin:create --name meu-plugin
|
|
205
|
+
\`\`\`
|
|
206
|
+
|
|
207
|
+
\`\`\`
|
|
208
|
+
plugins/meu-plugin/
|
|
209
|
+
├── manifest.json # identidade + permissões + compatibilidade
|
|
210
|
+
├── index.js # entrypoint: module.exports.register(registry)
|
|
211
|
+
└── README.md
|
|
212
|
+
\`\`\`
|
|
213
|
+
|
|
214
|
+
### manifest.json
|
|
215
|
+
|
|
216
|
+
\`\`\`json
|
|
217
|
+
{
|
|
218
|
+
"name": "meu-plugin",
|
|
219
|
+
"version": "0.1.0",
|
|
220
|
+
"description": "Plugin meu-plugin para OkCMS",
|
|
221
|
+
"type": "plugin",
|
|
222
|
+
"main": "index.js",
|
|
223
|
+
"scope": "tenant",
|
|
224
|
+
"permissions": [],
|
|
225
|
+
"compatibility": { "okcms": "^0.1.x" }
|
|
226
|
+
}
|
|
227
|
+
\`\`\`
|
|
228
|
+
|
|
229
|
+
| Campo | Significado |
|
|
230
|
+
|---|---|
|
|
231
|
+
| \`type\` | \`"plugin"\` (fixo — temas usam \`"theme"\`) |
|
|
232
|
+
| \`main\` | Arquivo de entrada com o registro |
|
|
233
|
+
| \`scope\` | Escopo de atuação no multi-tenant (ex.: \`tenant\`) |
|
|
234
|
+
| \`permissions\` | Permissões que o plugin pede (vazio = nenhuma) |
|
|
235
|
+
| \`compatibility.okcms\` | Range semver exigido do CMS. **O scaffold preenche com a versão atual automaticamente** e o valor é validado no scaffold e em cada instalação — manifesto incompatível é rejeitado. |
|
|
236
|
+
|
|
237
|
+
### index.js
|
|
238
|
+
|
|
239
|
+
\`\`\`js
|
|
240
|
+
'use strict';
|
|
241
|
+
|
|
242
|
+
module.exports.register = function register(registry) {
|
|
243
|
+
registry.addFilter('theme:data:posts', (value) => value);
|
|
244
|
+
};
|
|
245
|
+
\`\`\`
|
|
246
|
+
|
|
247
|
+
O \`register(registry)\` é chamado quando o plugin é carregado. Use o registro
|
|
248
|
+
para expor filters (transformações) — veja o que existe em
|
|
249
|
+
\`GET /api/v1/hooks/catalog\` para os nomes e contratos disponíveis.
|
|
250
|
+
|
|
251
|
+
## Fluxo de desenvolvimento
|
|
252
|
+
|
|
253
|
+
\`\`\`bash
|
|
254
|
+
# 1. Crie (em ./plugins do projeto, ou num workspace externo com --dir)
|
|
255
|
+
okcms plugin:create --name meu-plugin
|
|
256
|
+
|
|
257
|
+
# 2. Implemente plugins/meu-plugin/index.js
|
|
258
|
+
|
|
259
|
+
# 3. Se criou FORA do projeto, instale (valida compatibilidade e copia para plugins/)
|
|
260
|
+
okcms plugin:install --name ../meu-plugin-fonte
|
|
261
|
+
|
|
262
|
+
# 4. Gestão
|
|
263
|
+
okcms plugin:list # instalados + status
|
|
264
|
+
okcms plugin:manage -n meu-plugin --info # informações do manifesto
|
|
265
|
+
okcms plugin:manage -n meu-plugin --disable # desabilita (mantém os arquivos)
|
|
266
|
+
okcms plugin:manage -n meu-plugin --enable # habilita de novo
|
|
267
|
+
okcms plugin:manage -n meu-plugin --uninstall # remove arquivos + registro
|
|
268
|
+
|
|
269
|
+
# 5. Busca no npm (pacotes com a keyword okcms-plugin)
|
|
270
|
+
okcms plugin:search -q galeria
|
|
271
|
+
\`\`\`
|
|
272
|
+
|
|
273
|
+
## Publicando
|
|
274
|
+
|
|
275
|
+
Empacote o diretório do plugin como pacote npm com a keyword
|
|
276
|
+
\`okcms-plugin\` (é o que o \`okcms plugin:search\` consulta) e mantenha
|
|
277
|
+
\`compatibility.okcms\` atualizado para a linha do CMS que você suporta.
|
|
278
|
+
`;
|
|
279
|
+
/** THEME.md — guia de desenvolvimento de temas. */
|
|
280
|
+
export const THEME_DOC = `# Desenvolvendo um Tema
|
|
281
|
+
|
|
282
|
+
Tema é o visual do site público: **templates** (hierarquia de páginas) +
|
|
283
|
+
**estilos**, com isolamento por \`[data-theme]\` para que um tema nunca vaze
|
|
284
|
+
CSS para outro.
|
|
285
|
+
|
|
286
|
+
## Estrutura gerada
|
|
287
|
+
|
|
288
|
+
\`\`\`bash
|
|
289
|
+
okcms theme:create --name meu-tema --style css # css | scss | tailwind
|
|
290
|
+
\`\`\`
|
|
291
|
+
|
|
292
|
+
\`\`\`
|
|
293
|
+
themes/meu-tema/
|
|
294
|
+
├── theme.json # manifest (type: theme + compatibilidade)
|
|
295
|
+
├── templates/
|
|
296
|
+
│ ├── index.html # listagem (home)
|
|
297
|
+
│ └── single.html # página única (post/conteúdo)
|
|
298
|
+
├── style.css # engine css — ou styles/main.scss — ou src/input.css
|
|
299
|
+
└── README.md
|
|
300
|
+
\`\`\`
|
|
301
|
+
|
|
302
|
+
### theme.json
|
|
303
|
+
|
|
304
|
+
\`\`\`json
|
|
305
|
+
{
|
|
306
|
+
"name": "meu-tema",
|
|
307
|
+
"version": "0.1.0",
|
|
308
|
+
"description": "Tema meu-tema para OkCMS",
|
|
309
|
+
"type": "theme",
|
|
310
|
+
"compatibility": { "okcms": "^0.1.x" }
|
|
311
|
+
}
|
|
312
|
+
\`\`\`
|
|
313
|
+
|
|
314
|
+
Com \`--style scss\` ou \`--style tailwind\`, o manifesto ganha também
|
|
315
|
+
\`stylesConfig\` (\`engine\`, \`entry\`, \`output\`, \`isolation\`) apontando para a
|
|
316
|
+
entrada de estilos. \`compatibility.okcms\` é preenchido e validado
|
|
317
|
+
automaticamente, como nos plugins.
|
|
318
|
+
|
|
319
|
+
### Templates
|
|
320
|
+
|
|
321
|
+
Sintaxe de template com variáveis e laços:
|
|
322
|
+
|
|
323
|
+
\`\`\`html
|
|
324
|
+
<main class="site">
|
|
325
|
+
{{#each posts}}
|
|
326
|
+
<article>
|
|
327
|
+
<h2>{{this.title}}</h2>
|
|
328
|
+
<p>{{this.excerpt}}</p>
|
|
329
|
+
</article>
|
|
330
|
+
{{/each}}
|
|
331
|
+
</main>
|
|
332
|
+
\`\`\`
|
|
333
|
+
|
|
334
|
+
- \`templates/index.html\` — listagem (ex.: \`{{#each posts}}\`)
|
|
335
|
+
- \`templates/single.html\` — item individual (ex.: \`{{title}}\`, \`{{content}}\`)
|
|
336
|
+
|
|
337
|
+
## Estilos por engine
|
|
338
|
+
|
|
339
|
+
| \`--style\` | Arquivo gerado | Build |
|
|
340
|
+
|---|---|---|
|
|
341
|
+
| \`css\` (default) | \`style.css\` | nenhum — servido direto |
|
|
342
|
+
| \`scss\` | \`styles/main.scss\` (+ \`components.scss\`) | \`okcms theme:build -n meu-tema\` |
|
|
343
|
+
| \`tailwind\` | \`src/input.css\` + \`tailwind.config.js\` | \`okcms theme:build -n meu-tema\` |
|
|
344
|
+
|
|
345
|
+
O build compila para \`dist/theme.css\` **com isolamento
|
|
346
|
+
\`[data-theme="meu-tema"]\`** (sem vazar estilos entre temas; o Tailwind já
|
|
347
|
+
sai com \`preflight: false\`).
|
|
348
|
+
|
|
349
|
+
## Fluxo de desenvolvimento
|
|
350
|
+
|
|
351
|
+
\`\`\`bash
|
|
352
|
+
# 1. Crie
|
|
353
|
+
okcms theme:create --name meu-tema --style scss
|
|
354
|
+
|
|
355
|
+
# 2. Edite templates/ e estilos
|
|
356
|
+
|
|
357
|
+
# 3. Compile os estilos (scss/tailwind)
|
|
358
|
+
okcms theme:build --name meu-tema
|
|
359
|
+
|
|
360
|
+
# 4. Ative (grava activeTheme no okcms.config.json)
|
|
361
|
+
okcms theme:manage --name meu-tema --set-active
|
|
362
|
+
# (equivalente: ACTIVE_THEME=meu-tema no .env)
|
|
363
|
+
|
|
364
|
+
# 5. Gestão
|
|
365
|
+
okcms theme:list # instalados + status
|
|
366
|
+
okcms theme:manage -n meu-tema --info # informações do theme.json
|
|
367
|
+
okcms theme:manage -n meu-tema --disable|enable
|
|
368
|
+
okcms theme:manage -n meu-tema --uninstall
|
|
369
|
+
okcms theme:search -q blog # busca no npm (keyword okcms-theme)
|
|
370
|
+
|
|
371
|
+
# Se criou FORA do projeto:
|
|
372
|
+
okcms theme:install --name ../meu-tema-fonte
|
|
373
|
+
\`\`\`
|
|
374
|
+
|
|
375
|
+
## Publicando
|
|
376
|
+
|
|
377
|
+
Publique como pacote npm com a keyword \`okcms-theme\` (alvo do
|
|
378
|
+
\`okcms theme:search\`) e mantenha \`compatibility.okcms\` na linha suportada
|
|
379
|
+
do CMS. O \`theme:build\` deve ser executado no seu processo de release para
|
|
380
|
+
que \`dist/theme.css\` vá junto no pacote.
|
|
381
|
+
`;
|
|
382
|
+
//# sourceMappingURL=scaffold-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-docs.js","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wEAAwE;AACxE,gFAAgF;AAEhF,wCAAwC;AACxC,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyLxB,CAAC;AACF,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFzB,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGxB,CAAC"}
|
package/dist/scaffold.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAM/C,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAM/C,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2JtF;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,SAAS,CAAA;CAAO,GACzC,aAAa,CAmBf"}
|
package/dist/scaffold.js
CHANGED
|
@@ -122,6 +122,19 @@ volumes:
|
|
|
122
122
|
redisdata:
|
|
123
123
|
`;
|
|
124
124
|
await writeFile(join(root, 'docker-compose.yml'), compose, 'utf-8');
|
|
125
|
+
// Documentação do projeto — só escreve se não existir (não sobrescreve
|
|
126
|
+
// README editado pelo usuário em re-init).
|
|
127
|
+
const { projectReadme, PLUGIN_DOC, THEME_DOC } = await import('./scaffold-docs.js');
|
|
128
|
+
for (const [filename, content] of [
|
|
129
|
+
['README.md', projectReadme(name)],
|
|
130
|
+
['PLUGIN.md', PLUGIN_DOC],
|
|
131
|
+
['THEME.md', THEME_DOC],
|
|
132
|
+
]) {
|
|
133
|
+
const docPath = join(root, filename);
|
|
134
|
+
if (!existsSync(docPath)) {
|
|
135
|
+
await writeFile(docPath, content, 'utf-8');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
125
138
|
const relTarget = targetDir === '.' ? null : targetDir;
|
|
126
139
|
const cfgName = DEFAULT_CONFIG_FILENAME;
|
|
127
140
|
console.log(`Projeto "${name}" criado em ${root}`);
|
|
@@ -136,6 +149,7 @@ volumes:
|
|
|
136
149
|
console.log(` ${step++}. okcms start (sobe api, admin, web e worker)`);
|
|
137
150
|
console.log('');
|
|
138
151
|
console.log(`Config do projeto: ${cfgName} | para ajuda: okcms --help`);
|
|
152
|
+
console.log(`Documentação: README.md (uso local/Docker) · PLUGIN.md e THEME.md (extensões)`);
|
|
139
153
|
return root;
|
|
140
154
|
}
|
|
141
155
|
/**
|
package/dist/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oktis-works/cms",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@oktis-works/config": "0.1.
|
|
23
|
-
"@oktis-works/core": "0.1.
|
|
24
|
-
"@oktis-works/database": "0.1.
|
|
25
|
-
"@oktis-works/validation": "0.1.
|
|
26
|
-
"@oktis-works/theme-runtime": "0.1.
|
|
22
|
+
"@oktis-works/config": "0.1.7",
|
|
23
|
+
"@oktis-works/core": "0.1.7",
|
|
24
|
+
"@oktis-works/database": "0.1.7",
|
|
25
|
+
"@oktis-works/validation": "0.1.7",
|
|
26
|
+
"@oktis-works/theme-runtime": "0.1.7"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"typescript": "5.7.3"
|