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 +106 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/package.json +3 -2
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 /
|
|
92
|
-
[gign] tags:
|
|
93
|
-
[gign] manual tags:
|
|
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 **
|
|
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>
|