Я сделал это через сравнение по регулярному выражению.
file - Файл.
file.path - Путь к файлу.
Передаю файл в функцию...
Далее прочитываю
fs.readFile нужные мне файлы
file.path методами nodejs
Создаю цикл
do...while с условием.
В условии сравниваю прочитанный файл по регулярному выражению и в конце добавляю полученные значения в массив.
Составляющие рег. выражения:
@import - буквально эта последовательность символов
\s+ - как минимум один пробельный символ
["'] - ровно один символ кавычек (либо ", либо ')
([^"']+) - захват (в первую группу) любых символов кроме " и ', как минимум один такой "некавычковый" символ
Квантификатор + ("одно или больше") жадный по-умолчанию, поэтому в группу захвата результата попадает максимально возможное количество "некавычковых" символов входной строки. Аналогично и с пробелами: с данным квантификатором, токену \s будет соответствовать как можно большее количество пробельных символов.
Завершающая часть выражения ["']; необязательна, работать будет и без нее: в пример эта часть добавлена только для лучшего понимания рег.выражений (с этой частью, выражение целиком описывает statement с директивой @import).
const fs = require('fs');
const log = console.log;
fs.readFile(file.path, "utf8", (err, elem) => {
if (err) throw err;
log('element' + elem) // Содержимое файлов которые я прочитывал.
let result;
do {
const regexp = /@import\s*["']([^"']+)["'];/gi; // Регулярное выражение
let result = elem.matchAll(regexp); // Метод str.matchAll(regexp) используется, для поиска всех совпадений вместе со скобочными группами.
// получение массива строк со значениями из первой группы рег.выражения:
const matchGroupValues = [...result].map(([, group1]) => group1);
log(matchGroupValues); // [ 'vars', 'dwada', 'global' ]
// оборачивание полученных значений в массивы:
const valuesInArrays = matchGroupValues.map(value => [value]);
log(valuesInArrays); // [ [ 'vars' ], [ 'dwada' ], [ 'global' ] ]
for (let value of valuesInArrays) {
file.stem = value;
// log('----------------' + value.join())
log('----------------' + file.stem) // Имена файлов равны импортам (@import name)
}
} while (result >= 0);
})