В основном я пытаюсь написать умную единственную строку команд, которая выводит строки в кодировке 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, но я хотел бы, чтобы это было автоматизировано для замены всех вхождений url(path/to/whatever.ext)
в файле их соответствующими строками base64. Убедиться в том, что есть только реальные пути и нет данных-юрис там, выходит за рамки:)
Я пытался заменить материал на sed
, но я застрял в его ужасной документации. Нетрудно найти вхождения в шаблон url(…)
в файле css, но бит между круглыми скобками должен быть заменен выводом вышеприведенной команды, и я не знаю, возможно ли это вообще. Так что, вот, помощь или несколько указателей (мне тоже нужно взглянуть на awk?) Будут очень благодарны! «Вы не можете сделать это без надлежащего сценария» также, конечно, будет:)