You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
이 기능을 활용하기 위해 SVG 컴포넌트의 사용 방법을 변경할 필요는 없습니다. 실험적 `svgo`를 활성화하면 가져온 모든 SVG 컴포넌트 파일이 자동으로 최적화됩니다.
35
+
이 기능을 활용하기 위해 SVG 컴포넌트의 사용 방법을 변경할 필요는 없습니다. 실험적 SVG 최적화를 활성화하면 가져온 모든 SVG 컴포넌트 파일이 자동으로 최적화됩니다.
36
36
37
37
```astro title="src/pages/index.astro"
38
38
---
@@ -46,32 +46,36 @@ SVG는 빌드 과정에서 최적화되어 프로덕션 빌드 시 파일 크기
46
46
47
47
이 최적화는 프로젝트 내 모든 SVG 컴포넌트 가져오기에 적용됩니다. 특정 컴포넌트를 제외할 수는 없습니다.
48
48
49
-
## 구성
49
+
## SVGO
50
50
51
-
최적화 동작을 사용자 정의하기 위해 [SVGO 구성 객체](https://github.com/svg/svgo#configuration)를 전달할 수 있습니다.
51
+
Astro는 [SVGO](https://svgo.dev/)를 사용하는 내장 최적화 도구를 제공합니다:
52
52
53
-
```js title="astro.config.mjs"
54
-
exportdefaultdefineConfig({
55
-
experimental: {
56
-
svgo: {
57
-
multipass:true,
58
-
floatPrecision:2,
59
-
plugins: [
60
-
'preset-default',
61
-
'removeXMLNS',
62
-
{
63
-
name:"removeXlink",
64
-
params: {
65
-
includeLegacy:true
66
-
}
67
-
}
68
-
]
53
+
```js
54
+
import { svgoOptimizer } from"astro/config"
55
+
```
56
+
57
+
### 구성
58
+
59
+
최적화 동작을 사용자 지정하기 위해 [SVGO 구성 옵션](https://github.com/svg/svgo#configuration)을 포함한 객체를 전달할 수 있습니다.
60
+
61
+
```js
62
+
svgoOptimizer({
63
+
multipass:true,
64
+
floatPrecision:2,
65
+
plugins: [
66
+
'preset-default',
67
+
'removeXMLNS',
68
+
{
69
+
name:"removeXlink",
70
+
params: {
71
+
includeLegacy:true
72
+
}
69
73
}
70
-
}
71
-
})
74
+
]
75
+
});
72
76
```
73
77
74
-
### `plugins`
78
+
####`plugins`
75
79
76
80
**타입:**`Array<string | PluginConfig>`<br />
77
81
**기본값:**`[]`
@@ -82,125 +86,151 @@ SVG 컴포넌트 가져오기를 최적화하는 데 사용될 [SVGO 플러그
82
86
83
87
플러그인의 기본 구성을 사용하려면 배열에 이름을 추가하세요. 더 세밀하게 제어하려면 `overrides` 매개변수를 사용하여 `preset-default` 내의 특정 플러그인을 사용자 정의하거나, 플러그인의 `name`이 포함된 객체를 전달하여 개별 매개변수를 재정의하세요.
84
88
85
-
```js title="astro.config.mjs"
86
-
exportdefaultdefineConfig({
87
-
experimental: {
88
-
svgo: {
89
-
plugins: [
90
-
{
91
-
name:'preset-default',
92
-
params: {
93
-
overrides: {
94
-
convertPathData:false,
95
-
convertTransform: {
96
-
degPrecision:1,
97
-
transformPrecision:3
98
-
},
99
-
inlineStyles:false
100
-
},
89
+
```js
90
+
svgoOptimizer({
91
+
plugins: [
92
+
{
93
+
name:'preset-default',
94
+
params: {
95
+
overrides: {
96
+
convertPathData:false,
97
+
convertTransform: {
98
+
degPrecision:1,
99
+
transformPrecision:3
101
100
},
101
+
inlineStyles:false
102
102
},
103
-
'removeXMLNS',
104
-
{
105
-
name:"removeXlink",
106
-
params:{
107
-
includeLegacy:true
108
-
}
109
-
}
110
-
]
103
+
},
104
+
},
105
+
'removeXMLNS',
106
+
{
107
+
name:"removeXlink",
108
+
params: {
109
+
includeLegacy:true
110
+
}
111
111
}
112
-
}
113
-
})
112
+
]
113
+
});
114
114
```
115
115
116
-
### 기타 구성 옵션
116
+
####기타 구성 옵션
117
117
118
118
특히 `floatPrecision` 및 `multipass`를 비롯하여 구성 객체에 직접 전달할 수 있는 몇 가지 [SVGO 구성 옵션](https://github.com/svg/svgo/blob/66d503a48c6c95661726262a3068053c429b06a9/lib/types.ts#L335)이 있습니다.
119
119
120
-
```js title="astro.config.mjs"
121
-
exportdefaultdefineConfig({
122
-
experimental: {
123
-
svgo: {
124
-
multipass:true,
125
-
floatPrecision:2
126
-
}
127
-
}
128
-
})
120
+
```js
121
+
svgoOptimizer({
122
+
multipass:true,
123
+
floatPrecision:2,
124
+
});
129
125
```
130
126
131
127
`multipass` 옵션은 더 이상 최적화할 수 없을 때까지 최적화 엔진을 여러 번 실행할지 여부를 설정합니다. `floatPrecision` 옵션은 전역적으로 유지할 소수점 자릿수를 설정하지만, 플러그인의 `params` 속성에 사용자 정의 값을 지정하여 특정 플러그인에 대해 재정의할 수 있습니다.
132
128
133
-
## 일반적인 사용 사례
129
+
###일반적인 사용 사례
134
130
135
131
SVGO는 권장되는 최적화가 포함된 광범위한 [기본 플러그인 목록](https://svgo.dev/docs/preset-default/)을 제공합니다. 이 프리셋을 사용하는 것이 각 플러그인을 개별적으로 추가하는 것보다 편리하지만, 추가적인 사용자 정의가 필요할 수 있습니다. 예를 들어, 특히 애니메이션을 사용하는 경우 상황에 따라 항목을 매우 공격적으로 제거하거나 정리할 수 있습니다.
136
132
137
133
### 특정 속성 유지하기
138
134
139
135
SVGO가 기본적으로 인라인화하거나 제거하는 `<style>`과 같은 특정 SVG 속성 및 요소를 유지하고 싶을 수 있습니다.
140
136
141
-
```js title="astro.config.mjs"
142
-
exportdefaultdefineConfig({
143
-
experimental: {
144
-
svgo: {
145
-
plugins: [
146
-
{
147
-
name:'preset-default',
148
-
params: {
149
-
overrides: {
150
-
inlineStyles:false, // CSP 해싱을 위해 스타일 요소를 유지합니다
151
-
removeDesc:false// 내용에 관계없이 요소를 유지합니다
152
-
}
153
-
}
137
+
```js
138
+
svgoOptimizer({
139
+
plugins: [
140
+
{
141
+
name:'preset-default',
142
+
params: {
143
+
overrides: {
144
+
inlineStyles:false, // CSP 해싱을 위해 스타일 요소를 유지합니다
145
+
removeDesc:false// 내용에 관계없이 요소를 유지합니다
154
146
}
155
-
]
147
+
}
156
148
}
157
-
}
158
-
})
149
+
]
150
+
});
159
151
```
160
152
161
153
### 특정 요소 제거하기
162
154
163
155
플러그인을 구성하여 메타데이터 또는 숨겨진 레이어와 같이 원치 않는 특정 요소를 제거할 수 있습니다. 많은 플러그인이 이미 `preset-default`에 포함되어 있으므로 해당 동작만 구성하면 됩니다.
164
156
165
-
```js title="astro.config.mjs"
166
-
exportdefaultdefineConfig({
167
-
experimental: {
168
-
svgo: {
169
-
plugins: [
170
-
'preset-default',
171
-
{
172
-
name:'removeMetadata',
173
-
active:true
174
-
}
175
-
]
176
-
}
177
-
}
178
-
})
157
+
```js
158
+
svgoOptimizer({
159
+
plugins: [
160
+
{
161
+
name:'preset-default',
162
+
params: {
163
+
overrides: {
164
+
removeHiddenElems: {
165
+
isHidden:false,
166
+
displayNone:false
167
+
}
168
+
},
169
+
},
170
+
},
171
+
'removeRasterImages'
172
+
]
173
+
});
179
174
```
180
175
181
176
### 현대적인 HTML5에서의 인라인화를 위한 최적화
182
177
183
178
인라인 SVG는 `xmlns` 속성이 필요하지 않으며 SVG 2 사양으로 안전하게 변환될 수 있습니다. 이러한 목적으로 `removeXMLNS` 및 `removeXlink` 플러그인을 사용하는 것을 권장합니다:
184
179
185
-
```js title="astro.config.mjs"
186
-
exportdefaultdefineConfig({
187
-
experimental: {
188
-
svgo: {
189
-
plugins: [
190
-
'preset-default',
191
-
'removeXMLNS',
192
-
{
193
-
name:"removeXlink",
194
-
params: {
195
-
includeLegacy:true
196
-
}
197
-
}
198
-
]
180
+
```js
181
+
svgoOptimizer({
182
+
plugins: [
183
+
'preset-default',
184
+
'removeXMLNS',
185
+
{
186
+
name:"removeXlink",
187
+
params: {
188
+
includeLegacy:true
189
+
}
199
190
}
191
+
]
192
+
});
193
+
```
194
+
195
+
## SVG 최적화 도구 만들기
196
+
197
+
<p>
198
+
199
+
<Sincev="6.2.0" />
200
+
</p>
201
+
202
+
커스텀 SVG 최적화 도구를 구현하는 권장 방법은 구성을 매개변수로 받고 `SvgOptimizer` 객체를 반환하는 함수를 내보내는 것입니다:
0 commit comments