我想在发布时运行一个脚本,用完整的域路径替换 css 文件中的所有 url() 声明,因为图像托管在静态 Web 服务器上。
例子
Current: background-image: url(/images/menu.gif);
Desired: background-image: url(http://example.com/images/menu.gif);
Current: background-image: url('/images/menu.gif');
Desired: background-image: url('http://example.com/images/menu.gif');
Current: background-image: url("/images/menu.gif");
Desired: background-image: url("http://example.com/images/menu.gif");
我已经使用 sed 编写了一个 bash 脚本来执行此操作,但它不处理带有引号 url('') 的 url 或已经具有完整路径的 url。
STATIC_HOST="http://example.com"
sed -i '' "s|url(\([^)]*\)|url($STATIC_HOST\1|g" main.css
最佳答案
试试这个
sed "s|\(url(['\"]\?\)\(/[^)]*\)|\1$STATIC_HOST\2|g" main.css
仅当您确定结果与您的结果相同时才使用 -i 选项 寻找。
关于css - 将 url() 相对路径替换为 css 文件中的完整域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4694993/