@the-bearded-bear/claude-craft 8.8.1 → 8.8.2
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/Dev/i18n/de/Angular/commands/check-compliance.md +218 -168
- package/Dev/i18n/de/Common/agents/refactoring-specialist.md +146 -69
- package/Dev/i18n/de/Common/commands/add-technology.md +166 -68
- package/Dev/i18n/de/Common/commands/setup-ci.md +216 -33
- package/Dev/i18n/de/Laravel/commands/check-compliance.md +223 -115
- package/Dev/i18n/de/Python/checklists/new-feature.md +319 -44
- package/Dev/i18n/de/React/rules/02-architecture.md +483 -322
- package/Dev/i18n/de/React/rules/03-coding-standards.md +584 -368
- package/Dev/i18n/de/Symfony/commands/check-compliance.md +186 -114
- package/Dev/i18n/de/Symfony/rules/07-testing-symfony.md +679 -10
- package/Dev/i18n/de/UIUX/commands/a11y-component.md +284 -26
- package/Dev/i18n/de/UIUX/commands/design-tokens.md +199 -35
- package/Dev/i18n/de/UIUX/commands/user-flow.md +179 -16
- package/Dev/i18n/de/VueJS/commands/check-compliance.md +227 -102
- package/Dev/i18n/es/Angular/commands/check-compliance.md +217 -167
- package/Dev/i18n/es/Common/commands/add-technology.md +158 -60
- package/Dev/i18n/es/Laravel/commands/check-compliance.md +223 -115
- package/Dev/i18n/es/React/commands/check-testing.md +263 -169
- package/Dev/i18n/es/ReactNative/commands/check-testing.md +256 -198
- package/Dev/i18n/es/Symfony/commands/check-compliance.md +189 -117
- package/Dev/i18n/es/Symfony/commands/check-testing.md +301 -102
- package/Dev/i18n/es/Symfony/commands/migration-plan.md +267 -34
- package/Dev/i18n/es/UIUX/commands/a11y-component.md +274 -16
- package/Dev/i18n/es/UIUX/commands/design-tokens.md +186 -22
- package/Dev/i18n/es/UIUX/commands/user-flow.md +173 -10
- package/Dev/i18n/es/VueJS/commands/check-compliance.md +227 -102
- package/Dev/i18n/fr/Angular/commands/check-compliance.md +217 -167
- package/Dev/i18n/fr/Common/commands/ralph-run.md +138 -60
- package/Dev/i18n/fr/Laravel/commands/check-compliance.md +223 -115
- package/Dev/i18n/fr/React/commands/check-architecture.md +370 -53
- package/Dev/i18n/fr/React/commands/check-code-quality.md +454 -64
- package/Dev/i18n/fr/React/commands/check-testing.md +476 -102
- package/Dev/i18n/fr/Symfony/commands/check-compliance.md +188 -116
- package/Dev/i18n/fr/VueJS/commands/check-compliance.md +227 -102
- package/Dev/i18n/pt/Angular/commands/check-compliance.md +225 -175
- package/Dev/i18n/pt/Common/agents/ralph-conductor.md +211 -30
- package/Dev/i18n/pt/Common/commands/add-technology.md +149 -51
- package/Dev/i18n/pt/Common/commands/ralph-run.md +239 -35
- package/Dev/i18n/pt/Flutter/commands/analyze-performance.md +331 -46
- package/Dev/i18n/pt/Flutter/commands/check-compliance.md +234 -29
- package/Dev/i18n/pt/Flutter/commands/generate-feature.md +526 -51
- package/Dev/i18n/pt/Flutter/commands/generate-widget.md +515 -27
- package/Dev/i18n/pt/Flutter/commands/golden-update.md +322 -46
- package/Dev/i18n/pt/Flutter/commands/localization-check.md +278 -37
- package/Dev/i18n/pt/Laravel/commands/check-compliance.md +212 -104
- package/Dev/i18n/pt/React/commands/accessibility-check.md +151 -42
- package/Dev/i18n/pt/React/commands/bundle-analyze.md +300 -25
- package/Dev/i18n/pt/React/commands/check-architecture.md +369 -34
- package/Dev/i18n/pt/React/commands/check-code-quality.md +440 -34
- package/Dev/i18n/pt/React/commands/check-compliance.md +232 -62
- package/Dev/i18n/pt/React/commands/check-security.md +370 -31
- package/Dev/i18n/pt/React/commands/check-testing.md +473 -43
- package/Dev/i18n/pt/React/commands/generate-component.md +454 -19
- package/Dev/i18n/pt/React/commands/generate-hook.md +425 -24
- package/Dev/i18n/pt/React/commands/storybook-story.md +520 -35
- package/Dev/i18n/pt/ReactNative/commands/app-size.md +358 -387
- package/Dev/i18n/pt/ReactNative/commands/check-code-quality.md +246 -75
- package/Dev/i18n/pt/ReactNative/commands/check-compliance.md +191 -85
- package/Dev/i18n/pt/ReactNative/commands/check-security.md +363 -115
- package/Dev/i18n/pt/ReactNative/commands/check-testing.md +269 -79
- package/Dev/i18n/pt/ReactNative/commands/generate-screen.md +491 -324
- package/Dev/i18n/pt/ReactNative/commands/native-module.md +539 -82
- package/Dev/i18n/pt/ReactNative/commands/store-prepare.md +429 -185
- package/Dev/i18n/pt/ReactNative/rules/02-architecture.md +1084 -31
- package/Dev/i18n/pt/Symfony/commands/check-compliance.md +195 -123
- package/Dev/i18n/pt/UIUX/commands/a11y-audit.md +208 -24
- package/Dev/i18n/pt/UIUX/commands/a11y-component.md +281 -23
- package/Dev/i18n/pt/UIUX/commands/design-tokens.md +197 -33
- package/Dev/i18n/pt/UIUX/commands/user-flow.md +183 -20
- package/Dev/i18n/pt/VueJS/commands/check-compliance.md +228 -103
- package/Dev/i18n/pt/Workflow/commands/analyze.md +147 -146
- package/Dev/i18n/pt/Workflow/commands/design.md +205 -204
- package/Dev/i18n/pt/Workflow/commands/implement.md +184 -184
- package/Project/i18n/de/Sprint/commands/dev.md +339 -86
- package/Project/i18n/es/Sprint/commands/dev.md +342 -91
- package/Project/i18n/pt/Sprint/commands/dev.md +343 -92
- package/bundles/cursor/.cursorrules +1 -1
- package/bundles/windsurf/.windsurfrules +1 -1
- package/package.json +1 -1
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Análise do Tamanho do Bundle
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# Análise do Tamanho do Bundle
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Analise o bundle de produção para identificar oportunidades de otimização.
|
|
8
8
|
|
|
9
9
|
## O Que Este Comando Faz
|
|
10
10
|
|
|
11
|
-
1. **
|
|
12
|
-
- Visualizar
|
|
13
|
-
- Identificar
|
|
14
|
-
- Detectar
|
|
15
|
-
- Verificar code splitting
|
|
11
|
+
1. **Análise do Bundle**
|
|
12
|
+
- Visualizar a composição do bundle
|
|
13
|
+
- Identificar dependências volumosas
|
|
14
|
+
- Detectar código duplicado
|
|
15
|
+
- Verificar a divisão de código (code splitting)
|
|
16
16
|
- Analisar tamanhos de chunks
|
|
17
17
|
|
|
18
|
-
2. **Ferramentas
|
|
18
|
+
2. **Ferramentas Utilizadas**
|
|
19
19
|
- rollup-plugin-visualizer (Vite)
|
|
20
20
|
- webpack-bundle-analyzer (Webpack)
|
|
21
21
|
- source-map-explorer
|
|
22
22
|
|
|
23
|
-
3. **
|
|
23
|
+
3. **Relatório Gerado**
|
|
24
24
|
- Treemap interativo
|
|
25
|
-
-
|
|
26
|
-
- Tamanhos comprimidos
|
|
27
|
-
-
|
|
25
|
+
- Detalhamento de tamanho por módulo
|
|
26
|
+
- Tamanhos comprimidos (gzip)
|
|
27
|
+
- Recomendações de otimização
|
|
28
28
|
|
|
29
29
|
## Como Usar
|
|
30
30
|
|
|
@@ -36,24 +36,299 @@ npm run build:analyze
|
|
|
36
36
|
pnpm build:analyze
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
## Modo
|
|
39
|
+
## Modo de Planejamento
|
|
40
40
|
|
|
41
|
-
> O modo
|
|
41
|
+
> O modo de planejamento é ativado automaticamente quando o escopo abrange múltiplos módulos ou requer investigação transversal.
|
|
42
42
|
|
|
43
|
-
##
|
|
43
|
+
## Configuração
|
|
44
|
+
|
|
45
|
+
### Vite (rollup-plugin-visualizer)
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
// vite.config.ts
|
|
49
|
+
import { defineConfig } from 'vite';
|
|
50
|
+
import { visualizer } from 'rollup-plugin-visualizer';
|
|
51
|
+
|
|
52
|
+
export default defineConfig({
|
|
53
|
+
plugins: [
|
|
54
|
+
react(),
|
|
55
|
+
visualizer({
|
|
56
|
+
filename: './dist/stats.html',
|
|
57
|
+
open: true,
|
|
58
|
+
gzipSize: true,
|
|
59
|
+
brotliSize: true,
|
|
60
|
+
template: 'treemap' // ou 'sunburst', 'network'
|
|
61
|
+
})
|
|
62
|
+
],
|
|
63
|
+
build: {
|
|
64
|
+
rollupOptions: {
|
|
65
|
+
output: {
|
|
66
|
+
manualChunks: {
|
|
67
|
+
'react-vendor': ['react', 'react-dom', 'react-router-dom'],
|
|
68
|
+
'query-vendor': ['@tanstack/react-query'],
|
|
69
|
+
'form-vendor': ['react-hook-form', 'zod']
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Webpack (webpack-bundle-analyzer)
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
// webpack.config.js
|
|
81
|
+
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
|
|
82
|
+
|
|
83
|
+
module.exports = {
|
|
84
|
+
plugins: [
|
|
85
|
+
new BundleAnalyzerPlugin({
|
|
86
|
+
analyzerMode: 'static',
|
|
87
|
+
reportFilename: 'bundle-report.html',
|
|
88
|
+
openAnalyzer: true
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
};
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## O Que Verificar
|
|
95
|
+
|
|
96
|
+
### 1. Dependências Volumosas
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
// ❌ Ruim - Importando biblioteca inteira
|
|
100
|
+
import _ from 'lodash';
|
|
101
|
+
import moment from 'moment';
|
|
102
|
+
|
|
103
|
+
// ✅ Bom - Importando apenas o necessário
|
|
104
|
+
import debounce from 'lodash/debounce';
|
|
105
|
+
import { format } from 'date-fns';
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 2. Código Duplicado
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
// ❌ Ruim - Duplicado em múltiplos chunks
|
|
112
|
+
// Verificar se o mesmo código aparece em múltiplos bundles
|
|
113
|
+
|
|
114
|
+
// ✅ Bom - Extrair para chunk compartilhado
|
|
115
|
+
// vite.config.ts
|
|
116
|
+
build: {
|
|
117
|
+
rollupOptions: {
|
|
118
|
+
output: {
|
|
119
|
+
manualChunks: {
|
|
120
|
+
'shared': ['./src/utils/common.ts']
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 3. Divisão de Código (Code Splitting)
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// ❌ Ruim - Carregando tudo de uma vez
|
|
131
|
+
import { HeavyComponent } from './HeavyComponent';
|
|
132
|
+
|
|
133
|
+
// ✅ Bom - Carregamento preguiçoso (lazy loading)
|
|
134
|
+
const HeavyComponent = lazy(() => import('./HeavyComponent'));
|
|
135
|
+
|
|
136
|
+
<Suspense fallback={<Loading />}>
|
|
137
|
+
<HeavyComponent />
|
|
138
|
+
</Suspense>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 4. Tree Shaking
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
// ❌ Ruim - Impede o tree shaking
|
|
145
|
+
import * as Utils from './utils';
|
|
146
|
+
|
|
147
|
+
// ✅ Bom - Permite o tree shaking
|
|
148
|
+
import { formatDate, validateEmail } from './utils';
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Estratégias de Otimização
|
|
152
|
+
|
|
153
|
+
### 1. Carregamento Preguiçoso de Rotas
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
// App.tsx
|
|
157
|
+
import { lazy, Suspense } from 'react';
|
|
158
|
+
|
|
159
|
+
const HomePage = lazy(() => import('./pages/HomePage'));
|
|
160
|
+
const Dashboard = lazy(() => import('./pages/Dashboard'));
|
|
161
|
+
const Settings = lazy(() => import('./pages/Settings'));
|
|
162
|
+
|
|
163
|
+
function App() {
|
|
164
|
+
return (
|
|
165
|
+
<Suspense fallback={<Loading />}>
|
|
166
|
+
<Routes>
|
|
167
|
+
<Route path="/" element={<HomePage />} />
|
|
168
|
+
<Route path="/dashboard" element={<Dashboard />} />
|
|
169
|
+
<Route path="/settings" element={<Settings />} />
|
|
170
|
+
</Routes>
|
|
171
|
+
</Suspense>
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 2. Importações Dinâmicas
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
// Carregar biblioteca pesada somente quando necessário
|
|
180
|
+
const loadChart = async () => {
|
|
181
|
+
const Chart = await import('chart.js');
|
|
182
|
+
return Chart;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
function ChartComponent() {
|
|
186
|
+
useEffect(() => {
|
|
187
|
+
loadChart().then((Chart) => {
|
|
188
|
+
// Usar Chart.js
|
|
189
|
+
});
|
|
190
|
+
}, []);
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### 3. Substituir Bibliotecas Pesadas
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# Substituir moment.js (290KB) por date-fns (13KB)
|
|
198
|
+
npm uninstall moment
|
|
199
|
+
npm install date-fns
|
|
200
|
+
|
|
201
|
+
# Substituir lodash (71KB) por lodash-es (tree-shakeable)
|
|
202
|
+
npm uninstall lodash
|
|
203
|
+
npm install lodash-es
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### 4. Remover Código Não Utilizado
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
# Encontrar exportações não utilizadas
|
|
210
|
+
npx ts-prune
|
|
211
|
+
|
|
212
|
+
# Remover dependências não utilizadas
|
|
213
|
+
npx depcheck
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Metas de Tamanho
|
|
217
|
+
|
|
218
|
+
### Tamanhos de Bundle Recomendados
|
|
44
219
|
|
|
45
220
|
- **Bundle Inicial**: < 200KB (gzipped)
|
|
46
221
|
- **JavaScript Total**: < 500KB (gzipped)
|
|
47
222
|
- **Chunks Individuais**: < 100KB cada
|
|
48
223
|
- **Maior Chunk**: < 200KB
|
|
49
224
|
|
|
50
|
-
|
|
225
|
+
### Configuração de Budget
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
// vite.config.ts
|
|
229
|
+
export default defineConfig({
|
|
230
|
+
build: {
|
|
231
|
+
chunkSizeWarningLimit: 500, // KB
|
|
232
|
+
rollupOptions: {
|
|
233
|
+
output: {
|
|
234
|
+
manualChunks(id) {
|
|
235
|
+
if (id.includes('node_modules')) {
|
|
236
|
+
return 'vendor';
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Budget de Performance (Lighthouse)
|
|
246
|
+
|
|
247
|
+
```json
|
|
248
|
+
// budget.json
|
|
249
|
+
[
|
|
250
|
+
{
|
|
251
|
+
"resourceSizes": [
|
|
252
|
+
{
|
|
253
|
+
"resourceType": "script",
|
|
254
|
+
"budget": 200
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"resourceType": "total",
|
|
258
|
+
"budget": 500
|
|
259
|
+
}
|
|
260
|
+
]
|
|
261
|
+
}
|
|
262
|
+
]
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Monitoramento Contínuo
|
|
266
|
+
|
|
267
|
+
### Integração CI/CD
|
|
268
|
+
|
|
269
|
+
```yaml
|
|
270
|
+
# .github/workflows/bundle-size.yml
|
|
271
|
+
name: Bundle Size Check
|
|
272
|
+
|
|
273
|
+
on: [pull_request]
|
|
274
|
+
|
|
275
|
+
jobs:
|
|
276
|
+
check-size:
|
|
277
|
+
runs-on: ubuntu-latest
|
|
278
|
+
steps:
|
|
279
|
+
- uses: actions/checkout@v3
|
|
280
|
+
- uses: actions/setup-node@v3
|
|
281
|
+
- run: npm ci
|
|
282
|
+
- run: npm run build
|
|
283
|
+
- uses: andresz1/size-limit-action@v1
|
|
284
|
+
with:
|
|
285
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## Problemas Comuns
|
|
289
|
+
|
|
290
|
+
### Problema 1: Bundle de Vendor Grande
|
|
291
|
+
|
|
292
|
+
**Solução**: Dividir o código de vendor
|
|
293
|
+
```typescript
|
|
294
|
+
manualChunks: {
|
|
295
|
+
'react-vendor': ['react', 'react-dom'],
|
|
296
|
+
'router-vendor': ['react-router-dom'],
|
|
297
|
+
'query-vendor': ['@tanstack/react-query']
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Problema 2: Dependências Duplicadas
|
|
302
|
+
|
|
303
|
+
**Solução**: Verificar e desduplicar
|
|
304
|
+
```bash
|
|
305
|
+
npm dedupe
|
|
306
|
+
# ou
|
|
307
|
+
pnpm dedupe
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Problema 3: CSS Não Utilizado
|
|
311
|
+
|
|
312
|
+
**Solução**: PurgeCSS
|
|
313
|
+
```bash
|
|
314
|
+
npm install -D @fullhuman/postcss-purgecss
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
## Ferramentas
|
|
318
|
+
|
|
319
|
+
- [rollup-plugin-visualizer](https://github.com/btd/rollup-plugin-visualizer)
|
|
320
|
+
- [webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer)
|
|
321
|
+
- [source-map-explorer](https://github.com/danvk/source-map-explorer)
|
|
322
|
+
- [bundlephobia](https://bundlephobia.com/)
|
|
323
|
+
- [Package Phobia](https://packagephobia.com/)
|
|
324
|
+
|
|
325
|
+
## Boas Práticas
|
|
51
326
|
|
|
52
|
-
1. **Analisar regularmente**
|
|
53
|
-
2. **Definir
|
|
54
|
-
3. **
|
|
55
|
-
4. **
|
|
56
|
-
5. **Monitorar** tamanho do bundle ao longo do tempo
|
|
57
|
-
6. **Dividir
|
|
58
|
-
7. **Escolher alternativas leves**
|
|
59
|
-
8. **Remover**
|
|
327
|
+
1. **Analisar regularmente** após adicionar dependências
|
|
328
|
+
2. **Definir budgets de tamanho** e aplicá-los no CI
|
|
329
|
+
3. **Carregar preguiçosamente** código não crítico
|
|
330
|
+
4. **Aplicar tree shaking** de forma agressiva
|
|
331
|
+
5. **Monitorar** o tamanho do bundle ao longo do tempo
|
|
332
|
+
6. **Dividir o código** de forma inteligente
|
|
333
|
+
7. **Escolher alternativas leves** para bibliotecas pesadas
|
|
334
|
+
8. **Remover dependências** não utilizadas
|