Чтобы добавить изображения в проект, я использую свойство css content: url() внутри файла sass и указываю относительный путь к папке src, например. content: url('/images/right-arrow.svg');
.
Проблема в том, что в производственной сборке мне нужно избавиться от первой косой черты, чтобы иметь такой путь ('images/right-arrow.svg')
внутри связанного файла css.
Единственный способ получить желаемое поведение - использовать параметр url: false
для css-loader
и указать путь без косой черты в файле sass: content: url('/images/right-arrow.svg')
, но такой параметр не добавляет необходимый файл из node_modules, например. шрифты и изображения.
Конфигурация Webpack:
return {
entry: ['babel-polyfill', './src/app.js'],
output: {
path: path.join(__dirname, 'public/'),
filename: '[name].[hash].js',
},
mode: isProduction || 'development',
module: {
rules: [
{
loader: 'babel-loader',
test: /\.js$/,
exclude: /node_modules/
},
{
test: /\.s?css$/,
use: [
isProduction ? MiniCssExtractPlugin.loader : 'style-loader',
{
loader: 'css-loader',
options: {
url: true
}
},
'sass-loader'
]
},
{
test: /\.(svg|gif|png)$/,
use: {
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'images'
}
}
},
{
test: /\.(otf|woff2|ttf|eot|woff)$/,
use: {
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'fonts/'
}
}
}
]
}
Что мне не хватает в конфигурации веб-пакета, чтобы добиться правильной работы путей?