gign 0.11.0 → 0.12.0

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 CHANGED
@@ -24,6 +24,8 @@
24
24
  <a href="#-recursos">Recursos</a> •
25
25
  <a href="#-instalação">Instalação</a> •
26
26
  <a href="#-uso">Uso</a> •
27
+ <a href="#%EF%B8%8F-configuração-por-projeto">Configuração</a> •
28
+ <a href="#%EF%B8%8F-limites-do-detector">Limites</a> •
27
29
  <a href="#-como-funciona">Como funciona</a> •
28
30
  <a href="#-stacks-suportadas">Stacks</a> •
29
31
  <a href="#-automação--deploy">Deploy</a> •
@@ -85,18 +87,118 @@ gign .
85
87
  gign ./meu-projeto
86
88
  ```
87
89
 
90
+ <!-- flags -->
91
+
92
+ ### Opções da CLI
93
+
94
+ | Flag / Argumento | Descrição |
95
+ | ---------------- | -------------------------------------------------- |
96
+ | `<path>` | Diretório do projeto a ser analisado (padrão: `.`) |
97
+
88
98
  Exemplo de saída:
89
99
 
90
100
  ```text
91
- [gign] generated at /workspace/meu-projeto/.gitignore
92
- [gign] tags: macos,node,react,typescript,visualstudiocode
93
- [gign] manual tags: jest,prettier,typescript,vite
101
+ [gign] generated at /app/tests/fixtures/node-ts/.gitignore
102
+ [gign] tags: linux,data,flatpak,mean,node,web,webstorm
103
+ [gign] manual tags: ampt,clinic,electron,node,parcel,strapi,tsc,typescript,wireit
104
+ [gign] no bundled rules for: data,mean,web
94
105
  ```
95
106
 
96
107
  O arquivo gerado já vem organizado por seções, pronto para ser versionado. ✅
97
108
 
98
109
  ---
99
110
 
111
+ ## ⚙️ Configuração por projeto
112
+
113
+ Você pode personalizar as regras de detecção e de geração do `.gitignore` para o seu projeto criando um arquivo `.gignrc.json` na raiz do diretório ou adicionando a chave `"gign"` no seu `package.json`.
114
+
115
+ Ambos os formatos aceitam as propriedades `pattern` e `manual`.
116
+
117
+ ### Exemplo com `.gignrc.json`
118
+
119
+ ```json
120
+ {
121
+ "pattern": [
122
+ {
123
+ "minhatag": ["meuarquivo.txt", "*.custom", "config/app.json"]
124
+ }
125
+ ],
126
+ "manual": [
127
+ {
128
+ "tag": "minhatag",
129
+ "search": [
130
+ {
131
+ "filename": "meuarquivo.txt",
132
+ "path": "build-output/"
133
+ },
134
+ {
135
+ "filename": "config/app.json",
136
+ "struct": "build.outDir"
137
+ }
138
+ ]
139
+ }
140
+ ]
141
+ }
142
+ ```
143
+
144
+ ### Exemplo equivalente no `package.json`
145
+
146
+ ```json
147
+ {
148
+ "name": "meu-projeto",
149
+ "version": "1.0.0",
150
+ "gign": {
151
+ "pattern": [
152
+ {
153
+ "minhatag": ["meuarquivo.txt", "*.custom", "config/app.json"]
154
+ }
155
+ ],
156
+ "manual": [
157
+ {
158
+ "tag": "minhatag",
159
+ "search": [
160
+ {
161
+ "filename": "meuarquivo.txt",
162
+ "path": "build-output/"
163
+ },
164
+ {
165
+ "filename": "config/app.json",
166
+ "struct": "build.outDir"
167
+ }
168
+ ]
169
+ }
170
+ ]
171
+ }
172
+ }
173
+ ```
174
+
175
+ ### Como funciona cada chave
176
+
177
+ - **`pattern`**: Lista de objetos com mapeamentos de tag. A chave é o nome da tag (`minhatag`) e o valor é uma lista de nomes de arquivos, padrões glob (`*.custom`) ou caminhos relativos (`config/app.json`). Se algum item for encontrado no diretório, a tag correspondente é ativada.
178
+ - **`manual`**: Lista de regras manuais vinculadas a uma tag (`tag`). Cada regra define em `search` os arquivos a buscar (`filename`) e a ação correspondente:
179
+ - **`path`**: Adiciona um caminho relativo direto (ex: `"build-output/"`) ao `.gitignore` sob o título `### <tag> (project) ###`.
180
+ - **`struct`**: Especifica um caminho pontilhado dentro de um arquivo JSON (ex: `"build.outDir"`). O `gign` lê o JSON, extrai o valor do atributo e adiciona as entradas correspondentes ao `.gitignore`.
181
+
182
+ ### Resultado esperado no `.gitignore`
183
+
184
+ Considerando que `config/app.json` contenha `{"build": {"outDir": "custom-dist/"}}` e `meuarquivo.txt` esteja presente na raiz do projeto:
185
+
186
+ ```gitignore
187
+ ### minhatag (project) ###
188
+ build-output/
189
+ custom-dist/
190
+ ```
191
+
192
+ ---
193
+
194
+ ## ⚠️ Limites do detector
195
+
196
+ - **Apenas raiz do diretório**: O `gign` inspeciona somente os arquivos localizados no nível superior do diretório indicado (`fs.readdirSync`), sem varrer subdiretórios recursivamente. Para monorepos, execute o `gign` individualmente na pasta de cada pacote ou defina regras personalizadas na raiz.
197
+ - **Tamanho de arquivos JSON**: A leitura de arquivos JSON para resolução de atributos via `struct` ignora ou não deve ser executada em arquivos grandes (> 1 MiB) por motivos de segurança e desempenho.
198
+ - **Necessidade de repositório Git**: O detector verifica a presença do diretório ou arquivo `.git` na raiz. Caso não seja encontrado, exibirá o aviso `[gign] Initialize a git repository, use "git init" command`.
199
+
200
+ ---
201
+
100
202
  ## 🧠 Como funciona
101
203
 
102
204
  ```mermaid
@@ -116,7 +218,7 @@ flowchart LR
116
218
 
117
219
  ## 🛠️ Stacks suportadas
118
220
 
119
- Mais de **250 ecossistemas** são suportados nativamente.
221
+ Mais de **900 ecossistemas** são detectados e suportados nativamente (948 tags mapeadas entre modelos e regras de detecção).
120
222
 
121
223
  <details>
122
224
  <summary><b>Ver as principais tecnologias detectadas</b></summary>