В основном я пытаюсь написать одну умную строку команд, которая выводит строки в кодировке base64 вместо того, где раньше был путь в изображение. Итак:
background-image: url(path/to/my/image.png);
… превратится в:
background-image: url(data:image/png;base64,ABvR0…+tC==);
Я обычно превращаю изображение в его строку в кодировке base64 через:
openssl enc -base64 -in path/to/my/image.png
Который выводит base64… но с символами новой строки в нем. Это исправляется путем пропуска tr
как:
openssl enc -base64 -in path/to/my/image.png | tr -d '\n'
, который просто выводит длинную строку в кодировке base64. Используя pbcopy (в Mac OS), который отправляется в буфер обмена, например:
openssl enc -base64 -in path/to/my/image.png | tr -d '\n' | pbcopy
Очень хорошо для специальной замены случайного изображения его представлением base64, но я бы хотел автоматизировать это для замены всех вхождений of url (путь / к / something.ext)
в файле по их соответствующим строкам base64. Убедиться, что есть только фактические пути и нет данных-uris, здесь выходит за рамки:)
Я пытался заменить материал на sed
, но я застрял в его ужасной документации. Найти вхождения шаблона url (…)
в файле css не так уж сложно, но бит между скобками необходимо заменить выводом указанной выше команды, и я не знаю, находится ли он в все возможно. Итак, вот оно, помощь или несколько указателей (нужно ли мне также изучить awk?) были бы очень признательны! «Вы не можете сделать это без правильного сценария», конечно же:)