可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I used this tutorial to integrate bootstrap in my project:
https://laravel-news.com/2015/10/setup-bootstrap-sass-with-laravel-elixir/
This places an app.css file in the css folder.
However if I try to use glyphicons they don't show up.
So I tried to modify the elixir file like this:
elixir(function(mix) {
mix.sass('app.scss')
.browserify('app.js')
.copy('node_modules/bootstrap-sass/assets/fonts', 'public/css/fonts')
});
The fonts folder is copied under public/css/fonts but yet no icon shows up. What am I missing here? Any clue?
in my app.css the path seems correct, for example:
src: url("fonts/bootstrap/glyphicons-halflings-regular.eot");
回答1:
I had the same problem with fresh install of laravel 5.2.
What I did is just inspected the request path in browser which was :
../build/fonts/bootstrap/glyphicons-halflings-regular.woff2
so I just added to gulp.js this :
mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/','public/build/fonts/bootstrap');
and afterwards in terminal :
gulp
That did the trick for me!
回答2:
You should in your app.scss
before including bootstrap file set variable $icon-font-path
value correctly, probably in your case it should be:
$icon-font-path: '/css/fonts/';
回答3:
This is what worked for me in Laravel 5.3 on Windows
First make sure you are using the NodeJS package latest version (v6.7.0)
Click the tab "Current Latest Features" at the URL https://nodejs.org/en/download/current/
Run npm install
Modify the file gulpfile.js
to contain the following:
elixir(mix => {
mix.sass('app.scss')
.webpack('app.js');
mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/','public/fonts/bootstrap');
});
Run gulp:
gulp
Thats it.
回答4:
In Laravel 5.4, just install npm dependencies and run npm in production or dev as needed.
npm install
npm run production
Laravel will do the rest.
回答5:
In Laravel 5.4 what I did is
mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/', 'public/fonts/bootstrap');
And in resources/assets/sass/_variables.scss
or app.scss
$icon-font-path: '/fonts/bootstrap/';
回答6:
Laravel 5.3 remove build
mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/', 'public/fonts/bootstrap');
run gulp
回答7:
I had the same problem using Laravel 5.4 It turns out that I hadn't run npm install
and npm run dev
.
Once these two commands were run, the fonts (and glyphicons) were copied correctly into the /public directory. There was no need to edit any sass or build files.
回答8:
For Laravel 5.4
This answer didn't exactly solved my problem but it pointed me to the right direction. This is my solution and it covers both if you have defined url for your application (using homestead or some other VM/Vagrant/etc. or if you have set vhost and hosts file for your application), or if you're like me, and have installed lamp stack/xampp/wamp/mapm/etc and doing development from apache htdocs sbfolder.
Firstly you need to add
mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap/', 'public/fonts/');
in your webpack.mix.js
at the end of the file.
Next open up resources/assets/sass/_variable.scss
and edit $icon-font-path
value.
If you're not using homestead but some lamp stack where you don't have defined dev url for your application (you didn't set vhost and changed hosts file), but instead you're accessing it as a subfolder e.g. localhost/YOUR_APP/public/
then you should set icon font path like
$icon-font-path: "/YOUR_APP/public/fonts/";
If you have set url for your application, you just need to set icon font paht like
$icon-font-path: "/public/fonts/"
and recompile css file. You should change to this before pushing your application to the production if it's not set at first!!!
For those who don't know how to recompile css and js files follow this steps:
1. Go to the root of your application and run bash there (git bash, cmd, etc.)
2. npm install
3. npm run-script production
(you have other flags available but i perfer production as it minifies js and css)
4. Congrats you just recompiled your js and css
回答9:
If you are using elixir() helper in your blade templates, you should put your fonts files into /public/build. As result /public/build/fonts, the "fonts" folder contains all font files.
回答10:
- Look into developer tools of your browser watch the path.
- In mine, it was public/fonts/glyphicons-halflings-regular.ttf I downloaded those fonts manually placed them there.
- And it worked!
回答11:
In webpack.config.js set:
publicPath: '../'
Instead of
Mix.resourceRoot
回答12:
Try something like:
var gulp = require('gulp');
gulp.task('fonts', function() {
gulp.src('.node_modules/bootstrap-sass/assets/fonts/bootstrap/fonts/*.{ttf,woff,eof,svg,woff2}')
.pipe(gulp.dest('public/css/fonts'));
});
and then add
mix
//other scripts
.task('fonts')
回答13:
Updated answer, I have this implemented now in a much better way, similar to the top answer. In app.scss:
/* BOOTSTRAP */
@import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";
/* FONT-AWESOME */
$fa-font-path: "../../fonts";
@import "node_modules/font-awesome/scss/font-awesome";