문제 배경 : katex를 사용하여 페이지에 수학을 렌더링하고 있습니다. 그런 다음 해당 페이지의 일부 버전의 PDF 버전을 만들고 싶습니다. 따라서 모든 CSS를 인라인하여 렌더러에 전달하는 내보낼 부분이 포함 된 HTML 문서를 만듭니다. 렌더러는 노드 리소스에 액세스 할 수 없으므로 모든 것이 인라인됩니다. 글꼴을 제외하고는 완벽하게 작동합니다.
url-loader와 bas64-inline-loader를 모두 시도했지만 생성 된 글꼴이 인라인되지 않았습니다. 디버거에서 생성 된 CSS를 검사했지만 이전 URL은 여전히 글꼴에 대한 데이터 URL이 없습니다.
이것은 내 현재 webpack.config.js입니다.
const path = require('path');
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'development',
entry: {
"editor": './src/editor.js',
"editor.worker": 'monaco-editor/esm/vs/editor/editor.worker.js',
"json.worker": 'monaco-editor/esm/vs/language/json/json.worker',
"css.worker": 'monaco-editor/esm/vs/language/css/css.worker',
"html.worker": 'monaco-editor/esm/vs/language/html/html.worker',
"ts.worker": 'monaco-editor/esm/vs/language/typescript/ts.worker',
},
output: {
globalObject: 'self',
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.(woff|woff2|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
use: ['url-loader']
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
filename: 'editor_text.html',
template: 'src/editor_text.html'
}),
new HtmlWebpackPlugin({
filename: 'editor_markdown.html',
template: 'src/editor_markdown.html',
inlineSource: '/katex/.*'
})
]
};
@font-face
명령문 을 포함하는 katex.css 파일이 노드 모듈 (katex) 안에 있다는 것입니다. 내 CSS 파일에서 이러한 글꼴을 참조하지 않습니다. 웹 팩이 실행될 때 URL을 즉시 바꿀 수있는 방법을 찾고 있습니다. 내가 이해 한 것처럼@font-face
솔루션을 사용하려면 katex.css 의 문장 을 변경 해야합니다.