atomic-css-cli 1.0.1 → 1.0.3
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 +378 -117
- package/dist/atomic-css.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,144 +6,218 @@ HTML 클래스명을 기반으로 CSS 규칙을 자동 생성하는 CLI 도구
|
|
|
6
6
|
|
|
7
7
|
> **VSCode 확장도 있습니다**: [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Drangon-Knight.atomicss)에서 설치하면 파일 저장 시 자동으로 CSS가 생성됩니다.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## 어떤 프로젝트에든 바로 적용
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- **무제한 자유도**: 다른 유틸리티 프레임워크와 달리 미리 정해진 값에 제한받지 않습니다. `gap37px`, `w847px`, `fs1-3rem` 등 어떤 수치와 단위든 자유롭게 조합할 수 있습니다.
|
|
13
|
-
- **직관적 네이밍**: CSS 속성과 값의 앞글자를 조합하는 규칙 하나만 알면, 문서 없이도 대부분의 클래스명을 추론할 수 있습니다.
|
|
14
|
-
- **14단계 반응형**: QHD(2560px)부터 Ultra Small(420px)까지 14개 브레이크포인트를 지원하여 세밀한 반응형 대응이 가능합니다.
|
|
15
|
-
- **32개 의사 클래스**: hover, focus, disabled, valid 등 32개 의사 클래스를 프리픽스 방식으로 간편하게 적용합니다.
|
|
16
|
-
- **협업 효율**: HTML에서 바로 디자인 변경 및 조정이 가능하여, CSS 파일을 오가며 작업하는 시간이 대폭 줄어듭니다.
|
|
17
|
-
- **제로 의존성**: 외부 CSS 라이브러리 없이 사용 가능합니다.
|
|
18
|
-
- **스타일 일관성**: 전체 프로젝트에 걸쳐 동일한 유틸리티 클래스를 사용하므로 스타일의 일관성이 자연스럽게 유지됩니다.
|
|
11
|
+
Atomic CSS는 기존 프로젝트의 CSS를 전혀 건드리지 않고 도입할 수 있습니다.
|
|
19
12
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
CSS 속성과 값의 **앞글자를 조합**하여 클래스명을 만듭니다.
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
display: flex → df
|
|
26
|
-
justify-content: center → jcc
|
|
27
|
-
align-items: center → aic
|
|
28
|
-
flex-direction: column → fdc
|
|
29
|
-
white-space: nowrap → wsn
|
|
30
|
-
text-overflow: ellipsis → toe
|
|
31
|
-
object-fit: cover → ofc
|
|
32
|
-
```
|
|
13
|
+
**핵심 원리: `atomic.min.css`를 항상 가장 마지막에 로드합니다.**
|
|
33
14
|
|
|
34
|
-
|
|
15
|
+
CSS는 동일 선택자 우선순위일 때 나중에 선언된 스타일이 이기므로, Atomic CSS를 맨 마지막에 불러오면 기존 스타일을 자연스럽게 덮어씁니다. 기존 코드를 수정하거나 삭제할 필요 없이, HTML에 Atomic 클래스만 추가하면 됩니다.
|
|
35
16
|
|
|
36
17
|
```html
|
|
37
|
-
|
|
18
|
+
<!-- 기존에 사용하던 CSS -->
|
|
19
|
+
<link rel="stylesheet" href="/css/framework.css" />
|
|
20
|
+
<link rel="stylesheet" href="/css/custom.css" />
|
|
21
|
+
|
|
22
|
+
<!-- Atomic CSS를 항상 가장 마지막에 → 최우선 적용 -->
|
|
23
|
+
<link rel="stylesheet" href="/assets/css/common/atomic.min.css" />
|
|
38
24
|
```
|
|
39
25
|
|
|
40
|
-
|
|
26
|
+
React, Vue 등 import 방식도 동일합니다. **항상 가장 마지막에 import**하면 됩니다:
|
|
41
27
|
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
.aic {
|
|
50
|
-
align-items: center;
|
|
51
|
-
}
|
|
52
|
-
.gap2rem {
|
|
53
|
-
gap: 2rem;
|
|
54
|
-
}
|
|
55
|
-
.p2rem {
|
|
56
|
-
padding: 2rem;
|
|
57
|
-
}
|
|
58
|
-
.bgFFFFFF {
|
|
59
|
-
background-color: #ffffff;
|
|
60
|
-
}
|
|
61
|
-
.br8px {
|
|
62
|
-
border-radius: 8px;
|
|
63
|
-
}
|
|
28
|
+
```tsx
|
|
29
|
+
// 기존에 사용하던 스타일
|
|
30
|
+
import "./styles/framework.css";
|
|
31
|
+
import "./styles/global.css";
|
|
32
|
+
|
|
33
|
+
// Atomic CSS를 항상 가장 마지막에 import → 최우선 적용
|
|
34
|
+
import "./assets/css/atomic.min.css";
|
|
64
35
|
```
|
|
65
36
|
|
|
37
|
+
> 기존 프로젝트에 점진적으로 도입하거나, 새 프로젝트에서 처음부터 사용하거나, 자유롭게 선택할 수 있습니다. 도입 비용은 제로입니다.
|
|
38
|
+
|
|
66
39
|
---
|
|
67
40
|
|
|
68
41
|
## 설치
|
|
69
42
|
|
|
70
43
|
```bash
|
|
44
|
+
# 글로벌 설치 (어디서든 atomic-css 명령 사용)
|
|
71
45
|
npm install -g atomic-css-cli
|
|
46
|
+
|
|
47
|
+
# 또는 프로젝트 로컬 설치
|
|
48
|
+
npm install --save-dev atomic-css-cli
|
|
72
49
|
```
|
|
73
50
|
|
|
74
|
-
|
|
51
|
+
로컬 설치 시에는 `npx`를 붙여 실행합니다:
|
|
75
52
|
|
|
76
|
-
|
|
53
|
+
```bash
|
|
54
|
+
npx atomic-css build
|
|
55
|
+
npx atomic-css watch
|
|
56
|
+
```
|
|
77
57
|
|
|
78
|
-
|
|
79
|
-
| --- | --- |
|
|
80
|
-
| `atomic-css build [dir]` | 파일을 스캔하고 CSS를 일괄 생성 (1회) |
|
|
81
|
-
| `atomic-css watch [dir]` | 파일 변경을 감지하여 CSS 자동 생성 |
|
|
82
|
-
| `atomic-css init` | `.atomic.json` 설정 파일 생성 |
|
|
58
|
+
설치 확인:
|
|
83
59
|
|
|
84
|
-
|
|
60
|
+
```bash
|
|
61
|
+
atomic-css --version
|
|
62
|
+
```
|
|
85
63
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
| `-d, --debug` | 미니파이되지 않은 `atomic.css`도 함께 생성 |
|
|
90
|
-
| `-e, --extensions <exts>` | 스캔할 파일 확장자 (쉼표 구분) |
|
|
91
|
-
| `-c, --config <path>` | `.atomic.json`이 위치한 프로젝트 루트 경로 |
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 빠른 시작
|
|
92
67
|
|
|
93
|
-
###
|
|
68
|
+
### 1단계: 프로젝트에서 설정 파일 생성
|
|
94
69
|
|
|
95
70
|
```bash
|
|
96
|
-
|
|
71
|
+
cd my-project
|
|
97
72
|
atomic-css init
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
프로젝트 루트에 `.atomic.json` 파일이 생성됩니다:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"selectedLanguages": ["html"],
|
|
80
|
+
"cssDirectoryPath": "/assets/css/common/",
|
|
81
|
+
"extensions": [".html"],
|
|
82
|
+
"projects": []
|
|
83
|
+
}
|
|
84
|
+
```
|
|
98
85
|
|
|
99
|
-
|
|
86
|
+
### 2단계: HTML에 Atomic CSS 클래스 작성
|
|
87
|
+
|
|
88
|
+
```html
|
|
89
|
+
<!-- index.html -->
|
|
90
|
+
<!DOCTYPE html>
|
|
91
|
+
<html>
|
|
92
|
+
<head>
|
|
93
|
+
<!-- 기존 CSS가 있다면 먼저 -->
|
|
94
|
+
<!-- Atomic CSS를 항상 가장 마지막에 → 최우선 적용 -->
|
|
95
|
+
<link rel="stylesheet" href="/assets/css/common/atomic.min.css" />
|
|
96
|
+
</head>
|
|
97
|
+
<body>
|
|
98
|
+
<div class="df jcc aic h100vh">
|
|
99
|
+
<h1 class="fs3-2rem fw700 c333333">Hello Atomic CSS!</h1>
|
|
100
|
+
</div>
|
|
101
|
+
</body>
|
|
102
|
+
</html>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 3단계: CSS 빌드
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# 일괄 빌드 (1회)
|
|
100
109
|
atomic-css build
|
|
110
|
+
```
|
|
101
111
|
|
|
102
|
-
|
|
112
|
+
실행하면 `.atomic.json`의 `cssDirectoryPath`에 `atomic.min.css`가 생성됩니다:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
my-project/
|
|
116
|
+
├── index.html
|
|
117
|
+
├── .atomic.json
|
|
118
|
+
└── assets/css/common/
|
|
119
|
+
└── atomic.min.css ← 자동 생성!
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 4단계: 개발 중에는 워치 모드
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# 파일 변경을 감지하여 CSS 자동 재생성
|
|
103
126
|
atomic-css watch
|
|
104
127
|
```
|
|
105
128
|
|
|
106
|
-
|
|
129
|
+
워치 모드는:
|
|
130
|
+
- 시작 시 초기 빌드를 자동 실행합니다
|
|
131
|
+
- HTML 파일이 수정/추가/삭제될 때마다 자동으로 CSS를 재생성합니다
|
|
132
|
+
- 300ms 디바운스가 적용되어 연속 변경 시 불필요한 빌드를 방지합니다
|
|
133
|
+
- `Ctrl+C`로 종료합니다
|
|
134
|
+
|
|
135
|
+
출력 예시:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
atomic-css watch
|
|
139
|
+
|
|
140
|
+
Watching: /Users/you/my-project
|
|
141
|
+
Extensions: .html
|
|
142
|
+
Debug: OFF (atomic.min.css only)
|
|
143
|
+
|
|
144
|
+
Initial build: 5 files, 42 classes, 42 new rules
|
|
145
|
+
|
|
146
|
+
[14:30:15] Rebuilding... +3 rules
|
|
147
|
+
[14:30:22] Rebuilding... no changes
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 명령어 상세
|
|
153
|
+
|
|
154
|
+
### `atomic-css build [dir]`
|
|
155
|
+
|
|
156
|
+
지정된 디렉토리(기본: 현재 디렉토리)의 파일을 스캔하고 CSS를 일괄 생성합니다.
|
|
107
157
|
|
|
108
158
|
```bash
|
|
109
|
-
# 현재
|
|
159
|
+
# 현재 디렉토리 빌드
|
|
110
160
|
atomic-css build
|
|
111
161
|
|
|
112
|
-
#
|
|
162
|
+
# 특정 디렉토리 빌드
|
|
163
|
+
atomic-css build src
|
|
164
|
+
|
|
165
|
+
# 출력 경로 지정
|
|
113
166
|
atomic-css build src -o dist/css
|
|
114
167
|
|
|
115
|
-
#
|
|
116
|
-
atomic-css build src -e tsx,jsx
|
|
168
|
+
# 스캔할 확장자 지정 (쉼표 구분)
|
|
169
|
+
atomic-css build src -e html,tsx,jsx
|
|
117
170
|
|
|
118
|
-
# 디버그
|
|
171
|
+
# 디버그 모드: atomic.min.css + atomic.css(원본) 모두 생성
|
|
119
172
|
atomic-css build -d
|
|
120
173
|
|
|
121
|
-
#
|
|
122
|
-
atomic-css
|
|
174
|
+
# 설정 파일 경로 지정 (.atomic.json이 다른 위치에 있을 때)
|
|
175
|
+
atomic-css build src -c /path/to/project-root
|
|
176
|
+
|
|
177
|
+
# 옵션 조합
|
|
178
|
+
atomic-css build src -o dist/css -e html,tsx,jsx -d
|
|
123
179
|
```
|
|
124
180
|
|
|
125
|
-
|
|
181
|
+
| 옵션 | 설명 | 기본값 |
|
|
182
|
+
| --- | --- | --- |
|
|
183
|
+
| `-o, --output <path>` | CSS 출력 디렉토리 | `.atomic.json`의 `cssDirectoryPath` |
|
|
184
|
+
| `-d, --debug` | 미니파이되지 않은 `atomic.css`도 함께 생성 | `false` |
|
|
185
|
+
| `-e, --extensions <exts>` | 스캔할 파일 확장자 (쉼표 구분, `.` 생략 가능) | `.atomic.json`의 `extensions` |
|
|
186
|
+
| `-c, --config <path>` | `.atomic.json`이 위치한 프로젝트 루트 경로 | 소스 디렉토리와 동일 |
|
|
126
187
|
|
|
127
|
-
|
|
128
|
-
const {
|
|
129
|
-
generateCSSRules,
|
|
130
|
-
parseClassName,
|
|
131
|
-
build,
|
|
132
|
-
watch,
|
|
133
|
-
extractClassesFromText,
|
|
134
|
-
loadConfig
|
|
135
|
-
} = require("atomic-css-cli");
|
|
188
|
+
### `atomic-css watch [dir]`
|
|
136
189
|
|
|
137
|
-
|
|
138
|
-
const classes = extractClassesFromText('<div class="df jcc aic">');
|
|
190
|
+
파일 변경을 실시간으로 감지하여 CSS를 자동 재생성합니다. `build`와 동일한 옵션을 지원합니다.
|
|
139
191
|
|
|
140
|
-
|
|
141
|
-
|
|
192
|
+
```bash
|
|
193
|
+
# 현재 디렉토리 워치
|
|
194
|
+
atomic-css watch
|
|
142
195
|
|
|
143
|
-
|
|
144
|
-
|
|
196
|
+
# 특정 디렉토리 워치 + 출력 경로 지정
|
|
197
|
+
atomic-css watch src -o dist/css
|
|
198
|
+
|
|
199
|
+
# React 프로젝트 워치
|
|
200
|
+
atomic-css watch src -e html,tsx,jsx
|
|
201
|
+
|
|
202
|
+
# 디버그 모드 워치
|
|
203
|
+
atomic-css watch -d
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
감시 대상에서 자동 제외되는 파일:
|
|
207
|
+
- `atomic.css`, `atomic.min.css` (출력 파일)
|
|
208
|
+
- `.atomic.json` (설정 파일)
|
|
209
|
+
- `node_modules/` 하위 전체
|
|
210
|
+
|
|
211
|
+
### `atomic-css init`
|
|
212
|
+
|
|
213
|
+
현재 디렉토리에 `.atomic.json` 기본 설정 파일을 생성합니다. 이미 존재하면 생성하지 않습니다.
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
atomic-css init
|
|
145
217
|
```
|
|
146
218
|
|
|
219
|
+
---
|
|
220
|
+
|
|
147
221
|
## 설정 파일 (.atomic.json)
|
|
148
222
|
|
|
149
223
|
프로젝트 루트에 `.atomic.json` 파일을 생성하면 프로젝트별로 동작을 커스터마이징할 수 있습니다. 파일이 없으면 기본 설정으로 동작합니다.
|
|
@@ -152,12 +226,14 @@ await build("./src", { output: "./dist/css" });
|
|
|
152
226
|
|
|
153
227
|
| 옵션 | 타입 | 기본값 | 설명 |
|
|
154
228
|
| --- | --- | --- | --- |
|
|
155
|
-
| `cssDirectoryPath` | `string` | `"/assets/css/common/"` | 생성될 CSS 파일의 저장 경로.
|
|
229
|
+
| `cssDirectoryPath` | `string` | `"/assets/css/common/"` | 생성될 CSS 파일의 저장 경로. 프로젝트 루트 기준 상대 경로 |
|
|
156
230
|
| `extensions` | `string[]` | `[".html"]` | 클래스를 추출할 대상 파일 확장자 |
|
|
157
231
|
| `selectedLanguages` | `string[]` | `["html"]` | VSCode 확장 전용 옵션 (CLI에서는 미사용) |
|
|
158
232
|
| `projects` | `array` | — | 멀티프로젝트 설정. 파일 경로에 따라 서로 다른 위치에 CSS를 생성 |
|
|
159
233
|
|
|
160
|
-
###
|
|
234
|
+
### 프레임워크별 설정 예시
|
|
235
|
+
|
|
236
|
+
#### 기본 HTML 프로젝트
|
|
161
237
|
|
|
162
238
|
```json
|
|
163
239
|
{
|
|
@@ -166,7 +242,7 @@ await build("./src", { output: "./dist/css" });
|
|
|
166
242
|
}
|
|
167
243
|
```
|
|
168
244
|
|
|
169
|
-
|
|
245
|
+
#### React / Next.js
|
|
170
246
|
|
|
171
247
|
```json
|
|
172
248
|
{
|
|
@@ -175,7 +251,7 @@ await build("./src", { output: "./dist/css" });
|
|
|
175
251
|
}
|
|
176
252
|
```
|
|
177
253
|
|
|
178
|
-
|
|
254
|
+
#### Vue / Nuxt
|
|
179
255
|
|
|
180
256
|
```json
|
|
181
257
|
{
|
|
@@ -184,7 +260,7 @@ await build("./src", { output: "./dist/css" });
|
|
|
184
260
|
}
|
|
185
261
|
```
|
|
186
262
|
|
|
187
|
-
|
|
263
|
+
#### PHP (Laravel, WordPress 등)
|
|
188
264
|
|
|
189
265
|
```json
|
|
190
266
|
{
|
|
@@ -193,9 +269,9 @@ await build("./src", { output: "./dist/css" });
|
|
|
193
269
|
}
|
|
194
270
|
```
|
|
195
271
|
|
|
196
|
-
|
|
272
|
+
#### 멀티프로젝트 (다국어/멀티 출력)
|
|
197
273
|
|
|
198
|
-
`projects` 배열을 사용하면 파일 경로에 따라 CSS 출력 위치를 분리할 수 있습니다.
|
|
274
|
+
`projects` 배열을 사용하면 파일 경로에 따라 CSS 출력 위치를 분리할 수 있습니다. `sources`에 해당하는 경로의 파일은 `output` 경로로, 매칭되지 않는 파일은 `cssDirectoryPath`로 CSS가 생성됩니다.
|
|
199
275
|
|
|
200
276
|
```json
|
|
201
277
|
{
|
|
@@ -218,18 +294,221 @@ await build("./src", { output: "./dist/css" });
|
|
|
218
294
|
|
|
219
295
|
| projects 옵션 | 타입 | 설명 |
|
|
220
296
|
| --- | --- | --- |
|
|
221
|
-
| `name` | `string` | 프로젝트 식별 이름 (
|
|
297
|
+
| `name` | `string` | 프로젝트 식별 이름 (콘솔 출력에 표시) |
|
|
222
298
|
| `sources` | `string[]` | 이 프로젝트에 속하는 소스 디렉토리 경로 목록 |
|
|
223
299
|
| `output` | `string` | 이 프로젝트의 CSS 출력 경로 |
|
|
224
300
|
|
|
225
|
-
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 출력 파일
|
|
304
|
+
|
|
305
|
+
| 파일 | 생성 조건 | 설명 |
|
|
306
|
+
| --- | --- | --- |
|
|
307
|
+
| `atomic.min.css` | 항상 | 미니파이된 CSS (프로덕션용) |
|
|
308
|
+
| `atomic.css` | `-d` 플래그 사용 시 | 포매팅된 CSS (디버그/확인용) |
|
|
309
|
+
|
|
310
|
+
HTML에서 연결 — **항상 모든 CSS 중 가장 마지막에** 로드합니다:
|
|
226
311
|
|
|
227
312
|
```html
|
|
313
|
+
<link rel="stylesheet" href="/css/기존스타일.css" />
|
|
314
|
+
|
|
315
|
+
<!-- Atomic CSS를 항상 가장 마지막에 → 최우선 적용 -->
|
|
228
316
|
<link rel="stylesheet" href="/assets/css/common/atomic.min.css" />
|
|
229
317
|
```
|
|
230
318
|
|
|
231
319
|
---
|
|
232
320
|
|
|
321
|
+
## 실전 워크플로우 예시
|
|
322
|
+
|
|
323
|
+
### HTML 프로젝트
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
mkdir my-site && cd my-site
|
|
327
|
+
npm init -y
|
|
328
|
+
npm install --save-dev atomic-css-cli
|
|
329
|
+
|
|
330
|
+
# 설정 생성
|
|
331
|
+
npx atomic-css init
|
|
332
|
+
|
|
333
|
+
# index.html 작성 후
|
|
334
|
+
npx atomic-css watch
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
`package.json`에 스크립트 추가:
|
|
338
|
+
|
|
339
|
+
```json
|
|
340
|
+
{
|
|
341
|
+
"scripts": {
|
|
342
|
+
"css": "atomic-css build",
|
|
343
|
+
"css:watch": "atomic-css watch",
|
|
344
|
+
"css:debug": "atomic-css build -d"
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
npm run css:watch # 개발 중
|
|
351
|
+
npm run css # 배포 전 빌드
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### React / Next.js 프로젝트
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
cd my-react-app
|
|
358
|
+
npm install --save-dev atomic-css-cli
|
|
359
|
+
|
|
360
|
+
# .atomic.json 생성 후 수정
|
|
361
|
+
npx atomic-css init
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
`.atomic.json` 수정:
|
|
365
|
+
|
|
366
|
+
```json
|
|
367
|
+
{
|
|
368
|
+
"cssDirectoryPath": "/src/assets/css/",
|
|
369
|
+
"extensions": [".html", ".tsx", ".jsx"]
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
# tsx/jsx 파일의 className에서 클래스 추출
|
|
375
|
+
npx atomic-css watch src -e html,tsx,jsx
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
CSS import (React) — **항상 가장 마지막에 import**:
|
|
379
|
+
|
|
380
|
+
```tsx
|
|
381
|
+
// src/App.tsx
|
|
382
|
+
import "./styles/global.css"; // 기존 스타일
|
|
383
|
+
import "./assets/css/atomic.min.css"; // 항상 마지막 → 최우선 적용
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Vue / Nuxt 프로젝트
|
|
387
|
+
|
|
388
|
+
`.atomic.json`:
|
|
389
|
+
|
|
390
|
+
```json
|
|
391
|
+
{
|
|
392
|
+
"cssDirectoryPath": "/src/assets/css/",
|
|
393
|
+
"extensions": [".html", ".vue"]
|
|
394
|
+
}
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
npx atomic-css watch src -e html,vue
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### CI/CD 파이프라인
|
|
402
|
+
|
|
403
|
+
```yaml
|
|
404
|
+
# GitHub Actions 예시
|
|
405
|
+
- name: Generate Atomic CSS
|
|
406
|
+
run: npx atomic-css-cli build src -o dist/css -e html,tsx,jsx
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## Programmatic API
|
|
412
|
+
|
|
413
|
+
Node.js에서 직접 import하여 사용할 수 있습니다.
|
|
414
|
+
|
|
415
|
+
```js
|
|
416
|
+
const {
|
|
417
|
+
generateCSSRules,
|
|
418
|
+
parseClassName,
|
|
419
|
+
build,
|
|
420
|
+
watch,
|
|
421
|
+
extractClassesFromText,
|
|
422
|
+
loadConfig,
|
|
423
|
+
minifyCss
|
|
424
|
+
} = require("atomic-css-cli");
|
|
425
|
+
|
|
426
|
+
// 텍스트에서 클래스 추출
|
|
427
|
+
const classes = extractClassesFromText('<div class="df jcc aic gap2rem">');
|
|
428
|
+
// → ["df", "jcc", "aic", "gap2rem"]
|
|
429
|
+
|
|
430
|
+
// 클래스명 → CSS 규칙 생성
|
|
431
|
+
const rules = generateCSSRules(["df", "jcc", "aic"]);
|
|
432
|
+
|
|
433
|
+
// CSS 미니파이
|
|
434
|
+
const minified = minifyCss(rules);
|
|
435
|
+
|
|
436
|
+
// 프로그래밍 방식으로 빌드
|
|
437
|
+
await build("./src", {
|
|
438
|
+
output: "./dist/css",
|
|
439
|
+
debug: false,
|
|
440
|
+
extensions: [".html", ".tsx"]
|
|
441
|
+
});
|
|
442
|
+
|
|
443
|
+
// 프로그래밍 방식으로 워치
|
|
444
|
+
const watcher = watch("./src", {
|
|
445
|
+
output: "./dist/css",
|
|
446
|
+
extensions: [".html", ".tsx"]
|
|
447
|
+
});
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## 왜 Atomic CSS인가?
|
|
453
|
+
|
|
454
|
+
- **제로 CSS 작성**: 별도 CSS 파일 작성이 불필요합니다. HTML 클래스명만으로 모든 시각적 스타일을 처리합니다.
|
|
455
|
+
- **무제한 자유도**: 다른 유틸리티 프레임워크와 달리 미리 정해진 값에 제한받지 않습니다. `gap37px`, `w847px`, `fs1-3rem` 등 어떤 수치와 단위든 자유롭게 조합할 수 있습니다.
|
|
456
|
+
- **직관적 네이밍**: CSS 속성과 값의 앞글자를 조합하는 규칙 하나만 알면, 문서 없이도 대부분의 클래스명을 추론할 수 있습니다.
|
|
457
|
+
- **14단계 반응형**: QHD(2560px)부터 Ultra Small(420px)까지 14개 브레이크포인트를 지원하여 세밀한 반응형 대응이 가능합니다.
|
|
458
|
+
- **32개 의사 클래스**: hover, focus, disabled, valid 등 32개 의사 클래스를 프리픽스 방식으로 간편하게 적용합니다.
|
|
459
|
+
- **협업 효율**: HTML에서 바로 디자인 변경 및 조정이 가능하여, CSS 파일을 오가며 작업하는 시간이 대폭 줄어듭니다.
|
|
460
|
+
- **제로 의존성**: 외부 CSS 라이브러리 없이 사용 가능합니다.
|
|
461
|
+
- **모든 프로젝트에 적용**: 어떤 CSS를 사용하고 있든, 마지막에 로드하는 것만으로 즉시 사용 가능합니다.
|
|
462
|
+
- **스타일 일관성**: 전체 프로젝트에 걸쳐 동일한 유틸리티 클래스를 사용하므로 스타일의 일관성이 자연스럽게 유지됩니다.
|
|
463
|
+
|
|
464
|
+
## 핵심 컨셉
|
|
465
|
+
|
|
466
|
+
CSS 속성과 값의 **앞글자를 조합**하여 클래스명을 만듭니다.
|
|
467
|
+
|
|
468
|
+
```
|
|
469
|
+
display: flex → df
|
|
470
|
+
justify-content: center → jcc
|
|
471
|
+
align-items: center → aic
|
|
472
|
+
flex-direction: column → fdc
|
|
473
|
+
white-space: nowrap → wsn
|
|
474
|
+
text-overflow: ellipsis → toe
|
|
475
|
+
object-fit: cover → ofc
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
이 규칙만 알면 문서에 없는 속성도 추론할 수 있습니다.
|
|
479
|
+
|
|
480
|
+
```html
|
|
481
|
+
<div class="df jcc aic gap2rem p2rem bgFFFFFF br8px">Hello Atomic CSS!</div>
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
생성되는 CSS:
|
|
485
|
+
|
|
486
|
+
```css
|
|
487
|
+
.df {
|
|
488
|
+
display: flex;
|
|
489
|
+
}
|
|
490
|
+
.jcc {
|
|
491
|
+
justify-content: center;
|
|
492
|
+
}
|
|
493
|
+
.aic {
|
|
494
|
+
align-items: center;
|
|
495
|
+
}
|
|
496
|
+
.gap2rem {
|
|
497
|
+
gap: 2rem;
|
|
498
|
+
}
|
|
499
|
+
.p2rem {
|
|
500
|
+
padding: 2rem;
|
|
501
|
+
}
|
|
502
|
+
.bgFFFFFF {
|
|
503
|
+
background-color: #ffffff;
|
|
504
|
+
}
|
|
505
|
+
.br8px {
|
|
506
|
+
border-radius: 8px;
|
|
507
|
+
}
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
233
512
|
## 네이밍 규칙
|
|
234
513
|
|
|
235
514
|
### 단위
|
|
@@ -543,21 +822,7 @@ await build("./src", { output: "./dist/css" });
|
|
|
543
822
|
|
|
544
823
|
> **AI가 Atomic CSS를 완벽하게 이해합니다.**
|
|
545
824
|
|
|
546
|
-
Atomic CSS는 AI 코딩 도구를 위한 전용 **MCP(Model Context Protocol) 서버**를 제공합니다.
|
|
547
|
-
|
|
548
|
-
### 왜 MCP인가?
|
|
549
|
-
|
|
550
|
-
일반적인 CSS 프레임워크를 AI와 사용할 때의 문제:
|
|
551
|
-
|
|
552
|
-
- AI가 클래스명을 **추측**하거나 **잘못된 클래스**를 생성
|
|
553
|
-
- 문서를 매번 컨텍스트에 넣어야 하는 **토큰 낭비**
|
|
554
|
-
- 프레임워크 업데이트 시 AI가 **구버전 정보**를 사용
|
|
555
|
-
|
|
556
|
-
**Atomic CSS + MCP는 이 문제를 완전히 해결합니다:**
|
|
557
|
-
|
|
558
|
-
- AI가 클래스명을 추측하지 않고 MCP 서버에 **직접 질의**
|
|
559
|
-
- 항상 **최신 데이터** 기반으로 정확한 클래스 반환
|
|
560
|
-
- 컨텍스트 오염 없이 **필요한 순간에만** 정보를 가져옴
|
|
825
|
+
Atomic CSS는 AI 코딩 도구를 위한 전용 **MCP(Model Context Protocol) 서버**를 제공합니다. AI가 Atomic CSS의 모든 클래스 체계를 **실시간으로 조회하고, 검색하고, 생성**할 수 있도록 설계된 AI 전용 인터페이스입니다.
|
|
561
826
|
|
|
562
827
|
### 제공 도구 (Tools)
|
|
563
828
|
|
|
@@ -582,10 +847,6 @@ Atomic CSS는 AI 코딩 도구를 위한 전용 **MCP(Model Context Protocol)
|
|
|
582
847
|
}
|
|
583
848
|
```
|
|
584
849
|
|
|
585
|
-
> `https://mcp.atomiccss.dev`는 Atomic CSS 전용 원격 MCP 서버입니다. 로컬 설치가 필요 없으며, 인터넷 연결만으로 모든 AI 도구에서 사용할 수 있습니다.
|
|
586
|
-
|
|
587
|
-
### 지원 도구
|
|
588
|
-
|
|
589
850
|
| AI 도구 | 설정 파일 | 비고 |
|
|
590
851
|
| --- | --- | --- |
|
|
591
852
|
| **Claude Code** | `.mcp.json` | 프로젝트 루트에 배치 |
|