问题
I'm using laravel-mix which is built on the top of the webpack. I'm facing a problem with fonts directory. For Example, font-awesome package has a scss file and a font directory where all fonts are placed.
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
So i place this package in my resources/assets/sass directory.
resources:.
└───asset
└───sass
│ main.scss
│
└───font-awesome (directory)
main.scss contains code:
@import 'font-awesome/scss/fontawesome';
webpack.mix.js contains:
mix.sass('resources/assets/sass/main.scss', 'public/css/frontend.css');
All assets are compiled successfully. Now public directory has a css and font directory, which has all fonts like this.
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
But What I want is, I don't want to compile all fonts into public/fonts directory i want to compile as following structure 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
What changes that i need to change in webpack.mix.js file.
回答1:
1:First Create a explicit folder structure:
like this in your laravel project.
public/fonts/vendor/font-awesome
Move all your fonts from font-awesome package to above mention directory.
2:Change $fa-font-path variable value:
font-awesome directory has a file called _variables.scss inside that file there is a variable named as $fa-font-path change the value to something like this.
$fa-font-path: "/fonts/vendor/font-awesome" !default;
Compile your assets it would work.
回答2:
If you want to use the laravel-mix and try to change public/fonts to public/assets/fonts directory,
You can use this code in your webpack.mix.js
let mix = require('laravel-mix');
mix.config.fileLoaderDirs.fonts = 'assets/fonts';
回答3:
Try to copy them directly like this :
mix.copyDirectory('assets/font-awesome/webfonts', 'public/fonts');
Or you can copy files one by one :
mix.copy('assets/font-awesome/webfonts/example.ttf', 'public/fonts/example.ttf');
来源:https://stackoverflow.com/questions/50860679/laravel-mix-generate-fonts-into-another-directory