stylus.url() base64 кодирует шрифт woff2
Я использую Stylus для написания CSS и stylus.url()
метод base64 для кодирования всех изображений. Моя проблема в том, что стилус также закодирует один из шрифтов. Кодируется только один шрифт woff2. Все остальные остаются в виде URL.
Как можно игнорировать файл шрифта или иным образом предотвратить его кодирование в base64 при использовании stylus.url()
метод.
font.styl:
@font-face {
font-family: 'GillSansMTStd';
src: url('../fonts/2D770A_6_0.eot');
src: local('☺︎'),
url('../fonts/2D770A_6_0.woff2') format('woff2'),
url('../fonts/2D770A_6_0.woff') format('woff'),
url('../fonts/2D770A_6_0.ttf') format('truetype');
}
main.css:
@font-face {
font-family: 'GillSansMTStd';
src: url("../fonts/2D770A_6_0.eot");
src: local('☺︎'),
url("data:application/font-woff2;base64,d09GMgABA[...]") format('woff2'),
url('../fonts/2D770A_6_0.woff') format('woff'),
url('../fonts/2D770A_6_0.ttf') format('truetype');
}
2 ответа
Решение
Чтение исходного кода для stylus.url()
Я нашел mimes
вариант. Что я не нашел нигде документально. Я могу установить, какие типы MIME я хочу кодировать в Base64, установив эту опцию:
stylus(str)
.set('filename', __dirname + '/css/test.styl')
.define('url', stylus.url({
mimes: {
'.gif': 'image/gif',
'.png': 'image/png',
'.jpg': 'image/jpeg',
'.jpeg': 'image/jpeg',
'.svg': 'image/svg+xml'
}
}))
.render(function(err, css){
});
Я обнаружил, что не будет никакого эффекта без
paths
вариант
stylus(stylus_str)
.use(autoprefixer())
.define('url', stylus.url({
limit: 30000,
mimes: {
'.gif': 'image/gif',
'.png': 'image/png',
'.jpg': 'image/jpeg',
'.jpeg': 'image/jpeg',
'.svg': 'image/svg+xml'
},
paths: [dirname(file_path)]
}))
.render((err, output)=>{
console.log(output.yellow)
})