vue ํ๋ก์ ํธ์์ font-awesome์ ์ฐ๊ธฐ.
$ yarn add -D @fortawesome/fontawesome-svg-core
$ yarn add -D @fortawesome/free-solid-svg-icons (optional)
$ yarn add -D @fortawesome/free-brands-svg-icons (optional)
$ yarn add -D @fortawesome/vue-fontawesome
optional์ด ์๋ ์ฒซ ๋ฒ์งธ, ๋ค ๋ฒ์งธ๋ ํ์๋ก ๋ค์ด๋ฐ์์ค๋ค. ๋๋ ์์ ๋ก๊ทธ์ธ์ ์ํ ๋ฒํผ์ ๋ง๋ค ๋ ๋ค์ด๊ฐ github, google icon์ ์ฐ๊ธฐ ์ํด ์ธ ๋ฒ์งธ free-brands-svg-icons๋ฅผ ๋จผ์ ๋ฐ์์ฃผ์๋ค. ๋ฐ๊ณ ์ ํ๋ ์์ด์ฝ์ด ์ด๋ค ์นดํ ๊ณ ๋ฆฌ์ ์๋์ง๋, solid, regular, light... brands ๋ฑ์ ๊ตฌ๋ถ์ผ๋ก ์ ์ ์๋ค.
๊ฐ๋ น, ์๋ ์์ด์ฝ์ ๊ฒฝ์ฐ fab๋ก, brands์ ์ํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
๋ค์ด์ ๋ฐ์ ๋ค์๋, ์์ด์ฝ ์ฌ์ฉ์ ์ข ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด ํ๋ก์ ํธ์ ๋ฃจํธ ํด๋์ fontAwesomeIcon.js๋ผ๋ ํ์ผ์ ๋ง๋ค์ด์ค๋ค.
import Vue from "vue";
// ํ์๋ก ๋ค์ด ๋ฐ๊ณ & import ํด์ฃผ์ด์ผ ํ๋ค.
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { library } from "@fortawesome/fontawesome-svg-core";
// ํ์ํ ์์ด์ฝ๋ง ๊ทธ๋ ๊ทธ๋ import ํด์ค๋ค.
import { faGithub, faGoogle } from "@fortawesome/free-brands-svg-icons";
import { faSignInAlt, faSignOutAlt } from "@fortawesome/free-solid-svg-icons";
// library์ ์ถ๊ฐํด์ค๋ค.
library.add(faGithub, faGoogle);
library.add(faSignInAlt, faSignOutAlt);
Vue.component("font-awesome-icon", FontAwesomeIcon);
์ ์ญ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ฒ ํ๋๋ก, main.js์ import ์์ผ์ค๋ค.
// main.js
import Vue from "vue";
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
import App from "./App.vue";
import router from "./router";
import store from "./store";
// fontAwesomeIcon์ import ์์ผ์ค๋ค.
import "@/fontAwesomeIcon.js";
Vue.config.productionTip = false;
Vue.use(ElementUI);
new Vue({
router,
store,
render: h => h(App)
}).$mount("#app");
์ด์ ์ค์ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ๋, free-solid-svg-icon์ ๊ฒฝ์ฐ์๋ ์๋์ฒ๋ผ ์จ์ฃผ๋ฉด ๋๋ค.
<router-link to="/login"><font-awesome-icon icon="sign-in-alt" />Login</router-link>
free-brands-svg-icon์ ๊ฒฝ์ฐ์๋ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์๋ํ๋ ์ ์ฉ์ด ์ ๋์ด ๊ฒ์ํ๋ค๊ฐ, ์ด๊ณณ์ ๊ธ ๋๋ถ์ ํด๊ฒฐํ ์ ์์๋ค.
// ex) login.vue
<el-button type="primary" plain @click="socialLogin('google')">
<font-awesome-icon :icon="['fab', 'google']" /> Login With Google
</el-button>
์ฌ์ค ๊ณต์ ๋ฌธ์์์ ์๋์ฒ๋ผ ์ธ๊ธ์ด ๋์ด ์๊ธด ํ๋ค. solid style๋ : bind ์ด์ฉํด ์ ์ ์ ์๋ค! ํ์ง๋ง, brand icons๋ ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก๋ ํ ์ ์์ด์ ์ ์ฉ์ด ์ ๋์๋ ๊ฒ. solid style๋ง short-hand ๋ฐฉ์์ผ๋ก, prefix๋ฅผ ์๋ตํด๋ fas ์นดํ ๊ณ ๋ฆฌ๋ก ์ฌ๊ฒจ์ง๋ค.
<!-- The solid style is implicit -->
<font-awesome-icon icon="user-secret" />
<!-- It's better to be explicit -->
<!-- Don't forget to bind the property with ":" (we forget all the time!) -->
<font-awesome-icon :icon="['fas', 'user-secret']" />
+ font-awesome-icon์ ๊ฒฝ์ฐ size="2x" ์ฒ๋ผ ์ฌ์ด์ฆ ์ต์ ์ ๋ณ๋๋ก ๊ฐ๋๋ค.
+ ์๋ ๋ฌด๋ฃ ๋ฒ์ ์์ด์ฝ ์ฌ์ฉ ์.
์ฐธ๊ณ