如何使用 vite 在 Laravel 应用程序中使用 fontawesome 图标?

saj*_*dra 3 laravel font-awesome vue.js laravel-blade vite

我已经使用 npm 安装了@fortawesome/fontawesome-free软件包。最新的 Laravel 应用程序默认使用 vite。我无法解决这个问题。任何帮助将非常感激。我的vite.config.js

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import { viteStaticCopy } from 'vite-plugin-static-copy';

export default defineConfig({
    plugins: [
        laravel([
            'resources/css/app.css',
            'resources/js/app.js',
            'resources/admin/css/app.css',
            'resources/admin/js/app.js',
            'resources/css/glide.css',
            'resources/js/glide.js',
            'resources/js/Sortable.js',
            'resources/js/tinymce.js',
            'resources/sass/app.scss',
            'resources/admin/sass/app.scss',
        ]),
        {
            name: 'blade',
            handleHotUpdate({ file, server }) {
                if (file.endsWith('.blade.php')) {
                    server.ws.send({
                        type: 'full-reload',
                        path: '*',
                    });
                }
            },
        },
        viteStaticCopy({
            targets: [
                {
                    src: 'node_modules/@fortawesome/fontawesome-free/webfonts',
                    dest: '',
                },
            ],
        }),
    ],
});

Run Code Online (Sandbox Code Playgroud)

我在app.scss中导入了 fontawesome scss 文件。我的app.scss文件包含

@import "@fortawesome/fontawesome-free/scss/fontawesome";
@import "@fortawesome/fontawesome-free/scss/brands";
@import "@fortawesome/fontawesome-free/scss/regular";
@import "@fortawesome/fontawesome-free/scss/solid";
@import "@fortawesome/fontawesome-free/scss/v4-shims";

Run Code Online (Sandbox Code Playgroud)

我尝试使用第三方库https://github.com/sapphi-red/vite-plugin-static-copy复制 fontawesome 包的 webfonts 。还有比这更好的方法吗?

saj*_*dra 7

我通过首先安装 sass 预处理器解决了这个问题:

npm install -D sass
Run Code Online (Sandbox Code Playgroud)

之后,我将所有 fontawesome scss文件导入到我的app.js文件中:

import './bootstrap';
import '@fortawesome/fontawesome-free/scss/fontawesome.scss';
import '@fortawesome/fontawesome-free/scss/brands.scss';
import '@fortawesome/fontawesome-free/scss/regular.scss';
import '@fortawesome/fontawesome-free/scss/solid.scss';
import '@fortawesome/fontawesome-free/scss/v4-shims.scss';

import Alpine from 'alpinejs';

window.Alpine = Alpine;

Alpine.start();
Run Code Online (Sandbox Code Playgroud)