Laravel Mix将字体生成到另一个目录

Ven*_*son 8 laravel laravel-mix

我正在使用laravel-mix建在的顶部webpack。我遇到了字体目录问题。例如,font-awesome程序包有一个scss文件和一个放置所有字体的字体目录。

font-awesome:.
????scss
?       fontawesome.scss
????webfonts
        fa-regular-400.eot
        fa-regular-400.svg
        fa-regular-400.ttf
        fa-regular-400.woff
        fa-regular-400.woff2
Run Code Online (Sandbox Code Playgroud)

所以我把这个包放在我的resources/assets/sass目录中。

resources:.
????asset
    ????sass
        ?   main.scss
        ?
        ????font-awesome (directory)
Run Code Online (Sandbox Code Playgroud)

main.scss 包含代码:

@import 'font-awesome/scss/fontawesome';
Run Code Online (Sandbox Code Playgroud)

webpack.mix.js 包含:

mix.sass('resources/assets/sass/main.scss', 'public/css/frontend.css');
Run Code Online (Sandbox Code Playgroud)

所有资产均已成功编译。现在public目录有一个cssand font目录,其中包含所有这样的字体。

public:.
?   index.php
?
????css
?       frontend.css
?
????fonts
?       fa-regular-400.eot
?       fa-regular-400.svg
?       fa-regular-400.ttf
?       fa-regular-400.woff
?       fa-regular-400.woff2
Run Code Online (Sandbox Code Playgroud)

但是我想要的是,我不想将所有字体都编译到public/fonts要编译为以下结构的目录中public/fonts/vendor/font-awesome

public:.
????css
?       frontend.css
?
????fonts
    ????vendor
        ????font-awesome
                fa-regular-400.eot
                fa-regular-400.svg
                fa-regular-400.ttf
                fa-regular-400.woff
                fa-regular-400.woff2
Run Code Online (Sandbox Code Playgroud)

我需要在webpack.mix.js文件中进行哪些更改。

Far*_*ani 11

如果你想使用laravel混合,并试图改变public/fontspublic/assets/fonts目录,您可以使用此代码的webpack.mix.js

let mix = require('laravel-mix');
mix.config.fileLoaderDirs.fonts = 'assets/fonts';
Run Code Online (Sandbox Code Playgroud)

  • 你可以这样做: mix.options({ fileLoaderDirs: { fonts: 'assets/fonts' }, }); (3认同)
  • 不适用于当前的 Laravel-mix 版本 6.0.16。收到此错误:“无法读取未定义的属性“fileLoaderDirs”” (2认同)
  • 我刚刚发现,在最新版本的 Laravel-mix (6.0) 上,将 `config` 替换为 `options`,这样它将按预期工作: `mix.options.fileLoaderDirs.fonts = 'assets/fonts'` (2认同)

Ahm*_*ain 6

1.首先创建一个明确的文件夹结构:

在你的 Laravel 项目中是这样的。

public/fonts/vendor/font-awesome

将所有字体从font-awesome包移动到上述目录。

2. 更改 $fa-font-path 变量值:

font-awesome目录中有一个_variables.scss在该文件中调用的文件,其中有一个变量名为$fa-font-path将值更改为这样的值。

$fa-font-path: "/fonts/vendor/font-awesome" !default;
Run Code Online (Sandbox Code Playgroud)

编译你的资产,它会起作用。


Ara*_*ami 5

尝试像这样直接复制它们:

mix.copyDirectory('assets/font-awesome/webfonts', 'public/fonts');
Run Code Online (Sandbox Code Playgroud)

或者,您可以一张一张地复制文件:

mix.copy('assets/font-awesome/webfonts/example.ttf', 'public/fonts/example.ttf');
Run Code Online (Sandbox Code Playgroud)