Files
hfb_sys/scripts/extract-vue-styles.sh

24 lines
708 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# 将大型 SFC 的内联 scoped CSS 外置,保留 <style scoped src="..."> 的编译作用域。
while IFS= read -r -d '' file; do
if (( $(wc -l < "${file}") <= 900 )); then
continue
fi
if ! rg -q '<style scoped>' "${file}"; then
continue
fi
base="${file%.vue}"
css="${base}.css"
awk '
/<style scoped>/ { inside = 1; next }
/<\/style>/ { inside = 0; next }
inside { print }
' "${file}" > "${css}"
name="$(basename "${css}")"
perl -0pi -e "s#<style scoped>.*?</style>#<style scoped src=\"./${name}\"></style>#s" "${file}"
done < <(find "${ROOT_DIR}/frontend/src" -name '*.vue' -print0)