forlogic-core 1.11.4 → 1.11.5
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/README.md +131 -6
- package/dist/README.md +131 -6
- package/dist/bin/pull-docs.js +61 -0
- package/dist/vite/index.esm.js +0 -9
- package/dist/vite/index.js +0 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -312,17 +312,16 @@ export default defineConfig(({ mode }) => ({
|
|
|
312
312
|
|
|
313
313
|
### 🏗️ Factory de Configuração Vite (Opcional)
|
|
314
314
|
|
|
315
|
-
Para projetos que desejam usar a configuração
|
|
315
|
+
Para projetos que desejam usar a configuração padronizada com segurança:
|
|
316
316
|
|
|
317
317
|
```typescript
|
|
318
318
|
// vite.config.ts
|
|
319
319
|
import { defineConfig } from 'vite';
|
|
320
320
|
import react from '@vitejs/plugin-react-swc';
|
|
321
|
+
import path from 'path';
|
|
321
322
|
import { createForlogicViteConfig } from 'forlogic-core/vite';
|
|
322
323
|
|
|
323
324
|
const forlogicConfig = createForlogicViteConfig({
|
|
324
|
-
srcAlias: '@',
|
|
325
|
-
libAlias: 'forlogic-core',
|
|
326
325
|
security: {
|
|
327
326
|
supabaseUrls: ['https://seu-projeto.supabase.co'],
|
|
328
327
|
trustedOrigins: ['https://meu-app.com'],
|
|
@@ -332,14 +331,98 @@ const forlogicConfig = createForlogicViteConfig({
|
|
|
332
331
|
});
|
|
333
332
|
|
|
334
333
|
export default defineConfig(({ mode }) => {
|
|
335
|
-
const
|
|
334
|
+
const isDev = mode === 'development';
|
|
335
|
+
const baseConfig = forlogicConfig(isDev);
|
|
336
|
+
|
|
336
337
|
return {
|
|
337
|
-
...
|
|
338
|
-
plugins: [react(), ...
|
|
338
|
+
...baseConfig,
|
|
339
|
+
plugins: [react(), ...baseConfig.plugins],
|
|
340
|
+
// IMPORTANTE: resolve.alias deve usar caminhos absolutos
|
|
341
|
+
resolve: {
|
|
342
|
+
alias: {
|
|
343
|
+
'@': path.resolve(__dirname, './src'),
|
|
344
|
+
},
|
|
345
|
+
},
|
|
339
346
|
};
|
|
340
347
|
});
|
|
341
348
|
```
|
|
342
349
|
|
|
350
|
+
> **⚠️ IMPORTANTE**: A factory **não** configura `resolve.alias` porque caminhos relativos não funcionam corretamente no build. Cada projeto deve definir seus próprios aliases com `path.resolve(__dirname, './caminho')` para garantir caminhos absolutos.
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
### 📋 Template Completo para Projetos Consumidores
|
|
355
|
+
|
|
356
|
+
Copie e adapte este template para novos projetos:
|
|
357
|
+
|
|
358
|
+
```typescript
|
|
359
|
+
// vite.config.ts
|
|
360
|
+
import { defineConfig } from 'vite';
|
|
361
|
+
import react from '@vitejs/plugin-react-swc';
|
|
362
|
+
import path from 'path';
|
|
363
|
+
import { createSecurityHeadersPlugin } from 'forlogic-core/vite';
|
|
364
|
+
|
|
365
|
+
export default defineConfig(({ mode }) => {
|
|
366
|
+
const isDev = mode === 'development';
|
|
367
|
+
|
|
368
|
+
return {
|
|
369
|
+
server: {
|
|
370
|
+
host: '::',
|
|
371
|
+
port: 8080,
|
|
372
|
+
},
|
|
373
|
+
|
|
374
|
+
// Força re-bundle quando atualizar forlogic-core
|
|
375
|
+
optimizeDeps: {
|
|
376
|
+
force: true,
|
|
377
|
+
},
|
|
378
|
+
|
|
379
|
+
plugins: [
|
|
380
|
+
react(),
|
|
381
|
+
// Headers de segurança (CSP, CORS, etc.)
|
|
382
|
+
createSecurityHeadersPlugin(isDev, {
|
|
383
|
+
supabaseUrls: [
|
|
384
|
+
'https://SEU_PROJETO.supabase.co',
|
|
385
|
+
],
|
|
386
|
+
additionalConnectSrc: [
|
|
387
|
+
'https://*.qualiex.com',
|
|
388
|
+
],
|
|
389
|
+
// Opcional: URI para relatório de violações CSP
|
|
390
|
+
cspReportUri: isDev
|
|
391
|
+
? 'https://SEU_PROJETO_DEV.supabase.co/functions/v1/csp-report'
|
|
392
|
+
: 'https://SEU_PROJETO_PROD.supabase.co/functions/v1/csp-report',
|
|
393
|
+
}),
|
|
394
|
+
],
|
|
395
|
+
|
|
396
|
+
// CRÍTICO: Aliases devem usar caminhos absolutos
|
|
397
|
+
resolve: {
|
|
398
|
+
alias: {
|
|
399
|
+
'@': path.resolve(__dirname, './src'),
|
|
400
|
+
},
|
|
401
|
+
},
|
|
402
|
+
|
|
403
|
+
publicDir: false,
|
|
404
|
+
|
|
405
|
+
esbuild: {
|
|
406
|
+
sourcemap: true,
|
|
407
|
+
target: 'es2020',
|
|
408
|
+
},
|
|
409
|
+
|
|
410
|
+
build: {
|
|
411
|
+
chunkSizeWarningLimit: 4000,
|
|
412
|
+
},
|
|
413
|
+
};
|
|
414
|
+
});
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
#### Checklist de Configuração
|
|
418
|
+
|
|
419
|
+
```markdown
|
|
420
|
+
- [ ] Substituiu `SEU_PROJETO` pelas URLs do Supabase
|
|
421
|
+
- [ ] Adicionou origens confiáveis em `additionalConnectSrc` se necessário
|
|
422
|
+
- [ ] Verificou que `resolve.alias` usa `path.resolve(__dirname, ...)`
|
|
423
|
+
- [ ] Reiniciou o servidor após modificar o arquivo
|
|
424
|
+
```
|
|
425
|
+
|
|
343
426
|
---
|
|
344
427
|
|
|
345
428
|
### 🔄 Forçar Re-bundle de Dependências
|
|
@@ -747,6 +830,48 @@ Se você não fornecer um `queryClient`, o `CoreProviders` cria um com as seguin
|
|
|
747
830
|
|
|
748
831
|
---
|
|
749
832
|
|
|
833
|
+
## 🛠️ CLI: Sincronização de Documentação
|
|
834
|
+
|
|
835
|
+
O `forlogic-core` disponibiliza um comando CLI para sincronizar a documentação centralizada do banco de dados para projetos consumidores.
|
|
836
|
+
|
|
837
|
+
### Uso
|
|
838
|
+
|
|
839
|
+
```bash
|
|
840
|
+
# Via npx (recomendado)
|
|
841
|
+
npx forlogic-core-pull-docs
|
|
842
|
+
|
|
843
|
+
# Ou adicione ao package.json do seu projeto:
|
|
844
|
+
{
|
|
845
|
+
"scripts": {
|
|
846
|
+
"pull-docs": "forlogic-core-pull-docs"
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
# E execute:
|
|
851
|
+
npm run pull-docs
|
|
852
|
+
```
|
|
853
|
+
|
|
854
|
+
### O que é sincronizado
|
|
855
|
+
|
|
856
|
+
| Arquivo | Descrição |
|
|
857
|
+
|---------|-----------|
|
|
858
|
+
| `docs/FORLOGIC_CORE_README.md` | README completo da biblioteca |
|
|
859
|
+
| `docs/DESIGN_SYSTEM.md` | Documentação do Design System |
|
|
860
|
+
| `docs/KNOWLEDGE.md` | Knowledge base para IA/Lovable |
|
|
861
|
+
|
|
862
|
+
### Benefícios
|
|
863
|
+
|
|
864
|
+
- ✅ **Centralizado**: Documentação mantida em um único lugar (banco de dados)
|
|
865
|
+
- ✅ **Sempre atualizado**: Execute o comando para obter a versão mais recente
|
|
866
|
+
- ✅ **Sem cópia manual**: Não precisa copiar arquivos entre projetos
|
|
867
|
+
- ✅ **Ideal para Custom Knowledge**: Use os arquivos gerados no Lovable
|
|
868
|
+
|
|
869
|
+
### Requisitos
|
|
870
|
+
|
|
871
|
+
O comando usa credenciais públicas do Supabase do forlogic-core e não requer configuração adicional.
|
|
872
|
+
|
|
873
|
+
---
|
|
874
|
+
|
|
750
875
|
<!-- AUTO_GENERATED_START -->
|
|
751
876
|
|
|
752
877
|
### 📚 Estatísticas da Documentação
|
package/dist/README.md
CHANGED
|
@@ -312,17 +312,16 @@ export default defineConfig(({ mode }) => ({
|
|
|
312
312
|
|
|
313
313
|
### 🏗️ Factory de Configuração Vite (Opcional)
|
|
314
314
|
|
|
315
|
-
Para projetos que desejam usar a configuração
|
|
315
|
+
Para projetos que desejam usar a configuração padronizada com segurança:
|
|
316
316
|
|
|
317
317
|
```typescript
|
|
318
318
|
// vite.config.ts
|
|
319
319
|
import { defineConfig } from 'vite';
|
|
320
320
|
import react from '@vitejs/plugin-react-swc';
|
|
321
|
+
import path from 'path';
|
|
321
322
|
import { createForlogicViteConfig } from 'forlogic-core/vite';
|
|
322
323
|
|
|
323
324
|
const forlogicConfig = createForlogicViteConfig({
|
|
324
|
-
srcAlias: '@',
|
|
325
|
-
libAlias: 'forlogic-core',
|
|
326
325
|
security: {
|
|
327
326
|
supabaseUrls: ['https://seu-projeto.supabase.co'],
|
|
328
327
|
trustedOrigins: ['https://meu-app.com'],
|
|
@@ -332,14 +331,98 @@ const forlogicConfig = createForlogicViteConfig({
|
|
|
332
331
|
});
|
|
333
332
|
|
|
334
333
|
export default defineConfig(({ mode }) => {
|
|
335
|
-
const
|
|
334
|
+
const isDev = mode === 'development';
|
|
335
|
+
const baseConfig = forlogicConfig(isDev);
|
|
336
|
+
|
|
336
337
|
return {
|
|
337
|
-
...
|
|
338
|
-
plugins: [react(), ...
|
|
338
|
+
...baseConfig,
|
|
339
|
+
plugins: [react(), ...baseConfig.plugins],
|
|
340
|
+
// IMPORTANTE: resolve.alias deve usar caminhos absolutos
|
|
341
|
+
resolve: {
|
|
342
|
+
alias: {
|
|
343
|
+
'@': path.resolve(__dirname, './src'),
|
|
344
|
+
},
|
|
345
|
+
},
|
|
339
346
|
};
|
|
340
347
|
});
|
|
341
348
|
```
|
|
342
349
|
|
|
350
|
+
> **⚠️ IMPORTANTE**: A factory **não** configura `resolve.alias` porque caminhos relativos não funcionam corretamente no build. Cada projeto deve definir seus próprios aliases com `path.resolve(__dirname, './caminho')` para garantir caminhos absolutos.
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
### 📋 Template Completo para Projetos Consumidores
|
|
355
|
+
|
|
356
|
+
Copie e adapte este template para novos projetos:
|
|
357
|
+
|
|
358
|
+
```typescript
|
|
359
|
+
// vite.config.ts
|
|
360
|
+
import { defineConfig } from 'vite';
|
|
361
|
+
import react from '@vitejs/plugin-react-swc';
|
|
362
|
+
import path from 'path';
|
|
363
|
+
import { createSecurityHeadersPlugin } from 'forlogic-core/vite';
|
|
364
|
+
|
|
365
|
+
export default defineConfig(({ mode }) => {
|
|
366
|
+
const isDev = mode === 'development';
|
|
367
|
+
|
|
368
|
+
return {
|
|
369
|
+
server: {
|
|
370
|
+
host: '::',
|
|
371
|
+
port: 8080,
|
|
372
|
+
},
|
|
373
|
+
|
|
374
|
+
// Força re-bundle quando atualizar forlogic-core
|
|
375
|
+
optimizeDeps: {
|
|
376
|
+
force: true,
|
|
377
|
+
},
|
|
378
|
+
|
|
379
|
+
plugins: [
|
|
380
|
+
react(),
|
|
381
|
+
// Headers de segurança (CSP, CORS, etc.)
|
|
382
|
+
createSecurityHeadersPlugin(isDev, {
|
|
383
|
+
supabaseUrls: [
|
|
384
|
+
'https://SEU_PROJETO.supabase.co',
|
|
385
|
+
],
|
|
386
|
+
additionalConnectSrc: [
|
|
387
|
+
'https://*.qualiex.com',
|
|
388
|
+
],
|
|
389
|
+
// Opcional: URI para relatório de violações CSP
|
|
390
|
+
cspReportUri: isDev
|
|
391
|
+
? 'https://SEU_PROJETO_DEV.supabase.co/functions/v1/csp-report'
|
|
392
|
+
: 'https://SEU_PROJETO_PROD.supabase.co/functions/v1/csp-report',
|
|
393
|
+
}),
|
|
394
|
+
],
|
|
395
|
+
|
|
396
|
+
// CRÍTICO: Aliases devem usar caminhos absolutos
|
|
397
|
+
resolve: {
|
|
398
|
+
alias: {
|
|
399
|
+
'@': path.resolve(__dirname, './src'),
|
|
400
|
+
},
|
|
401
|
+
},
|
|
402
|
+
|
|
403
|
+
publicDir: false,
|
|
404
|
+
|
|
405
|
+
esbuild: {
|
|
406
|
+
sourcemap: true,
|
|
407
|
+
target: 'es2020',
|
|
408
|
+
},
|
|
409
|
+
|
|
410
|
+
build: {
|
|
411
|
+
chunkSizeWarningLimit: 4000,
|
|
412
|
+
},
|
|
413
|
+
};
|
|
414
|
+
});
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
#### Checklist de Configuração
|
|
418
|
+
|
|
419
|
+
```markdown
|
|
420
|
+
- [ ] Substituiu `SEU_PROJETO` pelas URLs do Supabase
|
|
421
|
+
- [ ] Adicionou origens confiáveis em `additionalConnectSrc` se necessário
|
|
422
|
+
- [ ] Verificou que `resolve.alias` usa `path.resolve(__dirname, ...)`
|
|
423
|
+
- [ ] Reiniciou o servidor após modificar o arquivo
|
|
424
|
+
```
|
|
425
|
+
|
|
343
426
|
---
|
|
344
427
|
|
|
345
428
|
### 🔄 Forçar Re-bundle de Dependências
|
|
@@ -747,6 +830,48 @@ Se você não fornecer um `queryClient`, o `CoreProviders` cria um com as seguin
|
|
|
747
830
|
|
|
748
831
|
---
|
|
749
832
|
|
|
833
|
+
## 🛠️ CLI: Sincronização de Documentação
|
|
834
|
+
|
|
835
|
+
O `forlogic-core` disponibiliza um comando CLI para sincronizar a documentação centralizada do banco de dados para projetos consumidores.
|
|
836
|
+
|
|
837
|
+
### Uso
|
|
838
|
+
|
|
839
|
+
```bash
|
|
840
|
+
# Via npx (recomendado)
|
|
841
|
+
npx forlogic-core-pull-docs
|
|
842
|
+
|
|
843
|
+
# Ou adicione ao package.json do seu projeto:
|
|
844
|
+
{
|
|
845
|
+
"scripts": {
|
|
846
|
+
"pull-docs": "forlogic-core-pull-docs"
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
# E execute:
|
|
851
|
+
npm run pull-docs
|
|
852
|
+
```
|
|
853
|
+
|
|
854
|
+
### O que é sincronizado
|
|
855
|
+
|
|
856
|
+
| Arquivo | Descrição |
|
|
857
|
+
|---------|-----------|
|
|
858
|
+
| `docs/FORLOGIC_CORE_README.md` | README completo da biblioteca |
|
|
859
|
+
| `docs/DESIGN_SYSTEM.md` | Documentação do Design System |
|
|
860
|
+
| `docs/KNOWLEDGE.md` | Knowledge base para IA/Lovable |
|
|
861
|
+
|
|
862
|
+
### Benefícios
|
|
863
|
+
|
|
864
|
+
- ✅ **Centralizado**: Documentação mantida em um único lugar (banco de dados)
|
|
865
|
+
- ✅ **Sempre atualizado**: Execute o comando para obter a versão mais recente
|
|
866
|
+
- ✅ **Sem cópia manual**: Não precisa copiar arquivos entre projetos
|
|
867
|
+
- ✅ **Ideal para Custom Knowledge**: Use os arquivos gerados no Lovable
|
|
868
|
+
|
|
869
|
+
### Requisitos
|
|
870
|
+
|
|
871
|
+
O comando usa credenciais públicas do Supabase do forlogic-core e não requer configuração adicional.
|
|
872
|
+
|
|
873
|
+
---
|
|
874
|
+
|
|
750
875
|
<!-- AUTO_GENERATED_START -->
|
|
751
876
|
|
|
752
877
|
### 📚 Estatísticas da Documentação
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
#!/usr/bin/env node
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { createClient } from '@supabase/supabase-js';
|
|
6
|
+
|
|
7
|
+
const FORLOGIC_CORE_SUPABASE_URL = "https://ccjfvpnndclajkleyqkc.supabase.co";
|
|
8
|
+
const FORLOGIC_CORE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNjamZ2cG5uZGNsYWprbGV5cWtjIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTA5NTQ1OTksImV4cCI6MjA2NjUzMDU5OX0.j7ASp7OYaR5oXfnVmK77VGNH-5hDa9JpzbAYJBUpfa8";
|
|
9
|
+
const supabase = createClient(
|
|
10
|
+
FORLOGIC_CORE_SUPABASE_URL,
|
|
11
|
+
FORLOGIC_CORE_ANON_KEY
|
|
12
|
+
);
|
|
13
|
+
const DOCS_TO_SYNC = [
|
|
14
|
+
{ type: "readme", outputFile: "docs/FORLOGIC_CORE_README.md" },
|
|
15
|
+
{ type: "design_system", outputFile: "docs/DESIGN_SYSTEM.md" },
|
|
16
|
+
{ type: "knowledge", outputFile: "docs/KNOWLEDGE.md" }
|
|
17
|
+
];
|
|
18
|
+
async function pullDocs() {
|
|
19
|
+
console.log("\u{1F4E5} Puxando documenta\xE7\xE3o do forlogic-core...\n");
|
|
20
|
+
let successCount = 0;
|
|
21
|
+
let errorCount = 0;
|
|
22
|
+
for (const doc of DOCS_TO_SYNC) {
|
|
23
|
+
try {
|
|
24
|
+
const { data, error } = await supabase.schema("common").from("documentation").select("content, updated_at").eq("type", doc.type).single();
|
|
25
|
+
if (error) {
|
|
26
|
+
console.error(`\u274C Erro ao buscar ${doc.type}:`, error.message);
|
|
27
|
+
errorCount++;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (!data) {
|
|
31
|
+
console.warn(`\u26A0\uFE0F Documento '${doc.type}' n\xE3o encontrado no banco`);
|
|
32
|
+
errorCount++;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const outputPath = path.join(process.cwd(), doc.outputFile);
|
|
36
|
+
const outputDir = path.dirname(outputPath);
|
|
37
|
+
if (!fs.existsSync(outputDir)) {
|
|
38
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
39
|
+
}
|
|
40
|
+
fs.writeFileSync(outputPath, data.content, "utf-8");
|
|
41
|
+
console.log(`\u2705 ${doc.type} \u2192 ${doc.outputFile}`);
|
|
42
|
+
console.log(` \u{1F4CA} Tamanho: ${(data.content.length / 1024).toFixed(2)} KB`);
|
|
43
|
+
console.log(` \u{1F550} \xDAltima atualiza\xE7\xE3o: ${data.updated_at}
|
|
44
|
+
`);
|
|
45
|
+
successCount++;
|
|
46
|
+
} catch (err) {
|
|
47
|
+
console.error(`\u274C Erro ao processar ${doc.type}:`, err.message);
|
|
48
|
+
errorCount++;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501");
|
|
52
|
+
console.log(`\u{1F389} Sincroniza\xE7\xE3o conclu\xEDda!`);
|
|
53
|
+
console.log(` \u2705 Sucesso: ${successCount}`);
|
|
54
|
+
console.log(` \u274C Erros: ${errorCount}
|
|
55
|
+
`);
|
|
56
|
+
if (successCount > 0) {
|
|
57
|
+
console.log("\u{1F4A1} Arquivos sincronizados em docs/");
|
|
58
|
+
console.log(" Use no Custom Knowledge do Lovable ou como refer\xEAncia.\n");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
pullDocs();
|
package/dist/vite/index.esm.js
CHANGED
|
@@ -162,8 +162,6 @@ function createSecurityHeadersPlugin(isDev, options = {}) {
|
|
|
162
162
|
|
|
163
163
|
function createForlogicViteConfig(options = {}) {
|
|
164
164
|
const {
|
|
165
|
-
srcAlias = "@",
|
|
166
|
-
libAlias = "forlogic-core",
|
|
167
165
|
security = {},
|
|
168
166
|
server = {},
|
|
169
167
|
build = {},
|
|
@@ -180,13 +178,6 @@ function createForlogicViteConfig(options = {}) {
|
|
|
180
178
|
host: server.host ?? "::",
|
|
181
179
|
port: server.port ?? 8080
|
|
182
180
|
},
|
|
183
|
-
resolve: {
|
|
184
|
-
alias: {
|
|
185
|
-
[srcAlias]: "./src",
|
|
186
|
-
[libAlias]: "./lib",
|
|
187
|
-
"/assets": "./lib/assets"
|
|
188
|
-
}
|
|
189
|
-
},
|
|
190
181
|
publicDir: false,
|
|
191
182
|
esbuild: {
|
|
192
183
|
sourcemap: build.sourcemap ?? true,
|
package/dist/vite/index.js
CHANGED
|
@@ -164,8 +164,6 @@ function createSecurityHeadersPlugin(isDev, options = {}) {
|
|
|
164
164
|
|
|
165
165
|
function createForlogicViteConfig(options = {}) {
|
|
166
166
|
const {
|
|
167
|
-
srcAlias = "@",
|
|
168
|
-
libAlias = "forlogic-core",
|
|
169
167
|
security = {},
|
|
170
168
|
server = {},
|
|
171
169
|
build = {},
|
|
@@ -182,13 +180,6 @@ function createForlogicViteConfig(options = {}) {
|
|
|
182
180
|
host: server.host ?? "::",
|
|
183
181
|
port: server.port ?? 8080
|
|
184
182
|
},
|
|
185
|
-
resolve: {
|
|
186
|
-
alias: {
|
|
187
|
-
[srcAlias]: "./src",
|
|
188
|
-
[libAlias]: "./lib",
|
|
189
|
-
"/assets": "./lib/assets"
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
183
|
publicDir: false,
|
|
193
184
|
esbuild: {
|
|
194
185
|
sourcemap: build.sourcemap ?? true,
|