无法使用 Webpack 加载超棒的字体
Can't load font-awesome with Webpack
尝试使用 webpack 加载 font-awesome 时出现此错误:
ERROR in ./~/font-awesome/fonts/fontawesome-webfont.eot?v=4.6.3
Module parse failed: ...\node_modules\font-awesome\fonts\fontawesome-webfont.eot?v=4.6.3 Unexpected character '�' (1:0)
You may need an appropriate loader to handle this file type.
我正在尝试像这样在 React 组件中导入 font-awesome:
import "font-awesome/scss/font-awesome.scss";
这是我的 webpack.config.js 的样子。我想加载 font-awesome 和相关资产与其他所有内容分开,即因为我已经用 babel 加载 SVG,但不想用 font-awesome 来做。
{
test: /\.scss/,
loader: ExtractPlugin.extract("style", "css!sass")
},
{
test: /\.svg$/,
loader: "babel!svg-react",
exclude: /node_modules/
},
{
test: /\.ttf$/,
loader: "file-loader?mimetype=application/octet-stream&name=[name].[ext]",
exclude: /node_modules/
},
{
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff&name=[name].[ext]",
exclude: /node_modules/
},
{
test: /\.(otf|eot|png|svg|ttf|woff|woff2)(\?[\s\S]+)?$/,
loader: "url?limit=10000",
include: "node_modules/font-awesome/fonts"
}
我也尝试过这样的正则表达式,但没有用:
{ test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url?limit=10000" }
尝试使用 file-loader
而非 url-loader
加载您的 .eot
文件。
示例:
module: {
loaders: [
{
test: /\.(eot|ttf|woff2?|otf|svg|png|jpg)$/,
loaders: ['file']
}
]
}
要正确加载 font-awesome 字体,您需要在 webpack.config.js 中配置加载器以使用 url-loader 和 file-loader。示例:
module.exports = {
module: {
loaders: [
// the url-loader uses DataUrls.
// the file-loader emits files.
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: "url-loader?limit=10000&mimetype=application/font-woff"
},
{
test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: "file-loader"
},
]
}
};
为此,您需要 npm install font-awesome-sass-loader npm i font-awesome-sass-loader
你还需要 url-loader npm i url-loader
和文件加载器 npm i file-loader
在尝试了很多例子后这对我有用:
{ test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader" },
{ test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader" },
并且肯定需要在您的主文件中导入 fontawsome
import 'font-awesome/css/font-awesome.css';
也别忘了安装loader
npm install url-loader --save-dev
尝试使用 webpack 加载 font-awesome 时出现此错误:
ERROR in ./~/font-awesome/fonts/fontawesome-webfont.eot?v=4.6.3
Module parse failed: ...\node_modules\font-awesome\fonts\fontawesome-webfont.eot?v=4.6.3 Unexpected character '�' (1:0)
You may need an appropriate loader to handle this file type.
我正在尝试像这样在 React 组件中导入 font-awesome:
import "font-awesome/scss/font-awesome.scss";
这是我的 webpack.config.js 的样子。我想加载 font-awesome 和相关资产与其他所有内容分开,即因为我已经用 babel 加载 SVG,但不想用 font-awesome 来做。
{
test: /\.scss/,
loader: ExtractPlugin.extract("style", "css!sass")
},
{
test: /\.svg$/,
loader: "babel!svg-react",
exclude: /node_modules/
},
{
test: /\.ttf$/,
loader: "file-loader?mimetype=application/octet-stream&name=[name].[ext]",
exclude: /node_modules/
},
{
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff&name=[name].[ext]",
exclude: /node_modules/
},
{
test: /\.(otf|eot|png|svg|ttf|woff|woff2)(\?[\s\S]+)?$/,
loader: "url?limit=10000",
include: "node_modules/font-awesome/fonts"
}
我也尝试过这样的正则表达式,但没有用:
{ test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url?limit=10000" }
尝试使用 file-loader
而非 url-loader
加载您的 .eot
文件。
示例:
module: {
loaders: [
{
test: /\.(eot|ttf|woff2?|otf|svg|png|jpg)$/,
loaders: ['file']
}
]
}
要正确加载 font-awesome 字体,您需要在 webpack.config.js 中配置加载器以使用 url-loader 和 file-loader。示例:
module.exports = {
module: {
loaders: [
// the url-loader uses DataUrls.
// the file-loader emits files.
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: "url-loader?limit=10000&mimetype=application/font-woff"
},
{
test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: "file-loader"
},
]
}
};
为此,您需要 npm install font-awesome-sass-loader npm i font-awesome-sass-loader
你还需要 url-loader npm i url-loader
和文件加载器 npm i file-loader
在尝试了很多例子后这对我有用:
{ test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader" },
{ test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader" },
并且肯定需要在您的主文件中导入 fontawsome
import 'font-awesome/css/font-awesome.css';
也别忘了安装loader
npm install url-loader --save-dev