Thêm Font Awesome vào dự án Nuxt 3

Nội dung

Nếu là một Front-end dev chắc hẳn bạn đã từng sử dụng Font Awesome – một thư viện font icons rất đồ sộ và phổ biến. Và khi bạn đang triển khai một dự án Nuxtjs 3 và muốn sử dụng thêm bộ font icons này thì bạn đã đọc hướng dẫn cài đặt Font Awesome cho Nuxt 3 trên trang chủ của hãng.

Tuy nhiên khi cài đặt thành công Font Awesome với dự án Nuxt 3 của mình, tôi đã gặp phải 2 lỗi sau:

  1. Text trong button có sử dụng <FontAwesomeIcon /> bị nhân lên làm 2
  2. Lỗi trong console: Could not find one or more icon(s) { prefix: 'fab', iconName: 'facebook' } {}
Vue.js Fontawesome free brand icons couldn't be found https://stackoverflow.com/questions/73134823/vue-js-fontawesome-free-brand-icons-couldnt-be-found
Vue.js Fontawesome free brand icons couldn’t be found

Đầu tiên cùng tìm hiểu các cài đặt Font Awesome vào một dự án Nuxtjs 3 nhé:

Cài đặt packages

Sử dụng lệnh tương ứng với packages manager mà bạn đang sử dụng cho dự án của mình nhé:

// For NPM users npm install @fortawesome/fontawesome-free @fortawesome/fontawesome-svg-core @fortawesome/free-brands-svg-icons @fortawesome/free-regular-svg-icons @fortawesome/free-solid-svg-icons @fortawesome/vue-fontawesome --save

// For Yarn users yarn add @fortawesome/fontawesome-free @fortawesome/fontawesome-svg-core @fortawesome/free-brands-svg-icons @fortawesome/free-regular-svg-icons @fortawesome/free-solid-svg-icons @fortawesome/vue-fontawesome


// For Bun users
bun add @fortawesome/fontawesome-free @fortawesome/fontawesome-svg-core @fortawesome/free-brands-svg-icons @fortawesome/free-regular-svg-icons @fortawesome/free-solid-svg-icons @fortawesome/vue-fontawesome

Vâng @fortawesome chứ không phải @fontawsome đâu các bạn nhé.

Tạo thêm Plugin cho nuxtjs

Bạn tạo thêm file trong /plugins/fontawesome.js với nội dung sau:

import { library, config } from '@fortawesome/fontawesome-svg-core'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { faGithub, faLinkedin, faTwitter } from '@fortawesome/free-brands-svg-icons'

config.autoAddCss = false
library.add(faGithub, faLinkedin, faTwitter)

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.component('font-awesome-icon', FontAwesomeIcon, {})
})

Tiếp theo hãy làm chính xác đoạn này, đây là nội dung khác với tài liệu chính thống được viết trên trang chủ của Font Awesome

Mở nuxt.config.ts (hoặc nuxt.config.js) và thêm vào trong defineNuxtConfig:

export default defineNuxtConfig({
  css: [
    '@fortawesome/fontawesome-svg-core/styles.css'
  ],
  build: {
    transpile: [
      '@fortawesome/fontawesome-svg-core',
      '@fortawesome/free-brands-svg-icons',
      '@fortawesome/free-regular-svg-icons',
      '@fortawesome/free-solid-svg-icons',
      '@fortawesome/vue-fontawesome'
    ]
  }
})

Lưu ý: Đoạn build config sẽ sửa 2 lỗi mà đầu bài mình có nhắc đến

Sử dụng Font Awesome Icon trong dự án

Bây giờ bạn có thể sử dụng icon ở bất kỳ đâu trong dự án của bạn bằng cách thêm font-awesome-icon hoặc FontAwesomeIcon component. Ví dụ: <font-awesome-icon icon=”fa-brands fa-github” />

Anthony Nguyễn

Cây bút chính tại VietnamTutor

Bài viết cùng chuyên mục

Quy trình vibe coding 7 bước: từ ý tưởng đến prototype

Quy trình vibe coding hiệu quả bắt đầu từ giả thuyết kinh doanh, không phải prompt dài. Bài viết hướng dẫn 7 bước từ brief, dữ

Vibe coding cho doanh nghiệp: việc nào nên làm bằng AI?

Vibe coding cho doanh nghiệp hữu ích khi cần thử prototype, dashboard hoặc automation nhỏ. Bài viết giúp bạn phân loại use case theo mức rủi

AI viết code nhanh hơn review: kiểm soát thế nào?

Khi AI viết code nhanh hơn khả năng review của team, doanh nghiệp cần đổi cách kiểm soát chất lượng. Bài viết đưa ra framework thực

Git detached HEAD là gì? Cách thoát an toàn

Bài viết này giải thích detached HEAD trong Git, cách nhận biết trạng thái này và các bước thoát ra an toàn mà không mất code.

Rủi ro vibe coding: 9 lỗi khiến prototype khó vận hành

Bài viết này chỉ ra 9 rủi ro phổ biến khi vibe coding và cách kiểm soát để prototype không biến thành gánh nặng vận hành.

Vibe coding là gì? Cách thử ý tưởng phần mềm bằng AI

Vibe coding giúp chủ doanh nghiệp biến ý tưởng phần mềm thành prototype nhanh hơn bằng AI. Bài viết này chỉ ra khi nào nên thử,

GitHub Actions CI/CD: quy trình deploy website an toàn

Hướng dẫn xây pipeline GitHub Actions CI/CD cho website: build, test, cache dependency, đóng artifact, deploy staging/production và quản lý secret an toàn.

.gitignore không hoạt động: nguyên nhân và cách sửa

Bài viết giúp bạn kiểm tra vì sao .gitignore không hoạt động, sửa lỗi file đã tracked và dùng git check-ignore để debug pattern.

Git push bị rejected: cách sửa non-fast-forward

Bài viết giải thích vì sao git push bị rejected, cách đọc lỗi non-fast-forward và quy trình xử lý an toàn trước khi push lại.

Git reset revert restore: chọn lệnh đúng

Bài viết so sánh git reset, git revert và git restore theo mục đích sử dụng: sửa staging area, khôi phục file, undo commit chưa push

Git commit vào nhánh sai: cách chuyển an toàn

Bài viết hướng dẫn xử lý git commit vào nhánh sai theo từng tình huống: commit chưa push, đã push, nhiều commit liên tiếp hoặc branch

TypeScript cho website doanh nghiệp: API, form và lỗi

TypeScript cho website doanh nghiệp đáng dùng khi bạn cần kiểm soát API contract, form schema, CMS payload và cấu hình môi trường. Bài này giúp