В настоящее время я работаю над сценарием Node, который будет искать в файле SCSS (Sass) с использованием регулярных выражений. Целью является создание массива/массивов всех определенных переменных и их значений. Затем их можно сравнить со значениями, задокументированными в проектной документации, чтобы проверить, все ли синхронизировано.
Я использовал следующее регулярное выражение для сопоставления однострочных переменных:
string.match(/\$[az-]+:(.*)(?=;)/)
а также
string.match(/[$a-zA-Z-]+(?=:)/g)[0]
чтобы извлечь имя каждой переменной. Однако карты SCSS и переменные SCSS с довольно многословными значениями могут распространяться на несколько строк.
Как я могу найти строку, которая начинается с $
, заканчивается на ;
и может быть распределен по нескольким строкам? В идеале я хотел бы использовать несколько групп захвата для возврата одного массива с однострочными переменными в одной группе и отображениями SCSS в другой. Это не важно, хотя два регулярных выражения было бы хорошо.
Если вы можете использовать последние версии Node.js с поддержкой ES2018, вы можете попробовать /s
флаг.
Однако для таких целей подходящий парсер будет лучше.
scss-parser
вместо регулярных выражений.$
в начале строки до первой;
, используйтеs.match(/^\$[^;]+/gm)