mim*_*mic 15 font-awesome webpack
我正在尝试在Flask / webpack项目中使用Fontawesome。
最疯狂的事情是它可以正常工作,然后停止运行,我更改了一些愚蠢的操作,再次运行,最后完全停止运行。
是)我有的:
软件包配置:
"devDependencies": {
...
"css-loader": "^1.0.0",
"node-sass": "^4.9.3",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.0",
"webpack": "^4.19.0",
"webpack-cli": "^3.1.0",
"webpack-merge": "^4.1.4"
},
"dependencies": {
"@fortawesome/fontawesome-free": "^5.3.1",
"bootstrap": "^4.1.3",
...
}
Run Code Online (Sandbox Code Playgroud)
webpack配置(规则部分):
test: /.(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: '../fonts/',
publicPath: '../static/fonts'
}
}]
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
'sass-loader'
]
},
{
test: /\.scss$/,
use: [
"style-loader",
"css-loader",
"sass-loader"
]
},
Run Code Online (Sandbox Code Playgroud)
webpack,输入部分:
entry: {
myStyles: './stles/myStyles.js'
},
Run Code Online (Sandbox Code Playgroud)
myStyles.js:
import fontawesome from "@fortawesome/fontawesome-free/scss/fontawesome.scss";
import regular from "@fortawesome/fontawesome-free/scss/regular.scss";
import solid from "@fortawesome/fontawesome-free/scss/solid.scss";
import brands from "@fortawesome/fontawesome-free/scss/brands.scss";
fontawesome.library.add(solid, regular, brands)
Run Code Online (Sandbox Code Playgroud)
最后一行虽然在Chrome中导致错误:
Uncaught TypeError: Cannot read property 'add' of undefined
Run Code Online (Sandbox Code Playgroud)
我也尝试将导入添加到我的条目scss中,并且在某些时候起作用了,然后停止了:
$fa-font-path: '~@fortawesome/fontawesome-free/webfonts';
@import "~@fortawesome/fontawesome-free/scss/fontawesome";
@import "~@fortawesome/fontawesome-free/scss/regular";
@import "~@fortawesome/fontawesome-free/scss/solid";
@import "~@fortawesome/fontawesome-free/scss/brands";
Run Code Online (Sandbox Code Playgroud)
所以,最后在我的模板中,我有:
<i class="fas fa-user-circle fa-fw"></i>
Run Code Online (Sandbox Code Playgroud)
我看到的只是正方形。
我检查了Chrome,加载了字体(ttf,woff,woff2)。
请帮忙。我已经在这个问题上花费了超过6(!!!!)小时,这比我在与Webpack相关的其他事情上花费的时间还多。
UPD我想我已经知道了。我发现我的公共路径是错误的,我的意思是webpack配置的这一部分:publicPath:'../static/fonts'-它当前指向我的html上一级的static / fonts文件夹。首先,相对路径本身是错误的,其次,相对路径不适用于其他文件夹,第三,我已将其更改为相对于根目录的相对路径:“ / static / fonts”,并且可以使用。
小智 32
这对我有用。
取自 webpacker 问题页面上的用户 @ahbou https://github.com/rails/webpacker/issues/619#issuecomment-430644035
在你的控制台上
yarn add @fortawesome/fontawesome-free
Run Code Online (Sandbox Code Playgroud)
在您的 .scss 文件中
$fa-font-path: '~@fortawesome/fontawesome-free/webfonts';
@import '~@fortawesome/fontawesome-free/scss/fontawesome';
@import '~@fortawesome/fontawesome-free/scss/solid';
@import '~@fortawesome/fontawesome-free/scss/regular';
Run Code Online (Sandbox Code Playgroud)
Cic*_*chy 31
在我的项目(带有webpack 4 .26.1的HTML Starter)中,我通过两个变体添加了FontAwesome:
我刚刚安装了FontAwesome Free(v5.5.0
)
npm install --save-dev @fortawesome/fontawesome-free
Run Code Online (Sandbox Code Playgroud)
我添加到 index.js
npm install --save-dev @fortawesome/fontawesome-free
Run Code Online (Sandbox Code Playgroud)
我安装了FontAwesome(svg-core,brands-icons,regular-icons,solid-icons)
import '@fortawesome/fontawesome-free/js/fontawesome'
import '@fortawesome/fontawesome-free/js/solid'
import '@fortawesome/fontawesome-free/js/regular'
import '@fortawesome/fontawesome-free/js/brands'
Run Code Online (Sandbox Code Playgroud)
然后我添加到JS文件
npm install --save-dev @fortawesome/fontawesome-svg-core @fortawesome/free-brands-svg-icons @fortawesome/free-regular-svg-icons @fortawesome/free-solid-svg-icons
Run Code Online (Sandbox Code Playgroud)
这对我有用
import "@fortawesome/fontawesome-free/js/all.js";
import "@fortawesome/fontawesome-free/css/all.css";
Run Code Online (Sandbox Code Playgroud)
在:app/javascript/packs/application.js
我的案例:Rails 6 webpacker gem、webpack、yarn
通过安装 yarn add @fortawesome/fontawesome-free
来自https://github.com/rails/webpacker/issues/619#issuecomment-590454028
首先安装以下,
npm install file-loader @fortawesome/fontawesome-free --save
Run Code Online (Sandbox Code Playgroud)
然后在 webpack.config.js 中,添加
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
loader: "file-loader",
options: {
outputPath: "../fonts",
}
}
Run Code Online (Sandbox Code Playgroud)
最后,
$fa-font-path: '../node_modules/@fortawesome/fontawesome-free/webfonts';
@import '../node_modules/@fortawesome/fontawesome-free/scss/fontawesome';
@import '../node_modules/@fortawesome/fontawesome-free/scss/solid';
@import '../node_modules/@fortawesome/fontawesome-free/scss/regular';
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题
只需将此文件导入 myStyle.js
import '@fortawesome/fontawesome-free/js/all'
Run Code Online (Sandbox Code Playgroud)
或者您可以只导入特定大小的图标
import '@fortawesome/fontawesome-free/js/light'
import '@fortawesome/fontawesome-free/js/regular'
import '@fortawesome/fontawesome-free/js/solid'
import '@fortawesome/fontawesome-free/js/brands'
Run Code Online (Sandbox Code Playgroud)
我认为不需要 fontawesome.library.add() 。
我使用的是专业版,在用法上基本相同,名称结尾是“-pro”而不是“-free”。
我将 font Awesome all.js 文件导入到我的 index.js 文件中:
import '@fortawesome/fontawesome-pro/js/all.js'
Run Code Online (Sandbox Code Playgroud)
并将 css 导入到我的 index.scss 文件中:
@import '~@fortawesome/fontawesome-pro/css/all.css';
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13816 次 |
最近记录: |