使用 webpack 进行字体文件处理


作者:Seiya

时间:2019年07月11日


处理字体文件


首先,我们来编写入口文件 app.js,如下所示:

import 'style-loader/lib/addStyles';
import 'css-loader/lib/css-base';

import './assets/fonts/iconfont.css';

借助 url-loader,可以识别并且处理 eot、woff 等结尾的字体文件。同时,根据字体文件大小,可以灵活配置是否进行 base64 编码,具体配置如下:

const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

let extractTextPlugin = new ExtractTextPlugin({
	filename: '[name].min.css',
	allChunks: false
});

module.exports = {
	entry: {
		app: './src/app.js'
	},
	output: {
		publicPath: __dirname + '/dist/',
		path: path.resolve(__dirname, 'dist'),
		filename: '[name].bundle.js',
		chunkFilename: '[name].chunk.js'
	},
	module: {
		rules: [
			{
				test: /\.css$/,
				use: ExtractTextPlugin.extract({
					fallback: {
						loader: 'style-loader'
					},
					use: [
						{
							loader: 'css-loader'
						}
					]
				})
			},
			{
				test: /\.(eot|woff2?|ttf|svg)$/,
				use: [
					{
						loader: 'url-loader',
						options: {
							name: '[name]-[hash:5].min.[ext]',
							/* fonts file size <= 5KB, use 'base64'; else, output svg file */
							limit: 5000,
							publicPath: 'fonts/',
							outputPath: 'fonts/'
						}
					}
				]
			}
		]
	},
	plugins: [extractTextPlugin]
};

在 Chrome 中打开 index.html,可以看到字体文件被正确引入。

最后更新时间: 2019-7-11 20:31:18