Я пытаюсь создать CSS из LESS с помощью webpack. Моя исходная папка имеет следующую иерархию:
fonts desyrel desyrel_-webfont.woff less ds-handwritten.less
Содержимое файла less включает относительный путь к шрифту, который будет использоваться в производстве
@charset "utf-8";
@font-face {
font-family: 'desyrelregular';
src: url('/www/fonts/desyrel/desyrel_-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
font-display: swap;
}
//DS hand written
.ds-hw { font-family: 'desyrelregular', sans-serif !important; }
Мой сценарий входа следующий:
import 'ds-less/ds-handwritten.less';
Когда я пытаюсь запустить скрипт webpack, я получаю следующую ошибку:
Ошибка сборки модуля (из ./node_modules/mini-css-extract-plugin/dist/loader.js): ModuleBuildError: Ошибка сборки модуля (из ./node_modules/css-loader/dist/cjs.js): Ошибка: Может ' t разрешить '/www/fonts/desyrel/desyrel_-webfont.woff' в ''
Как я могу сообщить webpack, что относительный путь шрифта '/www/fonts/desyrel/desyrel_-webfont.woff' указывает на шрифт из исходного пути: 'src / fonts / desyrel / desyrel_-webfont.woff'?
Я попытался решить проблему с помощью file-loader в сочетании с resolve-url-loader (следуя подсказке из официального документа https://webpack.js.org/loaders/sass-loader/#problems-with-url), но безуспешно.
module: {
rules: [
{
test: /\.(ttf|eot|woff|woff2|svg)$/,
include: path.resolve(__dirname, './src/fonts'),
use: {
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'www/fonts/',
esModule: false
},
},
},
{
test: /\.less$/,
exclude: /node_modules/,
use: [
{
loader: MiniCssExtractPlugin.loader,
},
{
loader: 'css-loader',
},
{
loader: 'resolve-url-loader',
},
{
loader: 'less-loader',
options: {
lessOptions: {
strictMath: true,
},
}
},
],
},
]
},