Я пишу скрипт, который будет принимать все мои лямбда-функции и создавать Node-сервер для локального тестирования. Я пытаюсь вычеркнуть все объекты dbconfig из каждого файла. Я использую https://regexr.com/ для проверки своих шаблонов, и я сделал несколько вариантов, которые все работают там, но они не будут работать в моем сценарии. Я в недоумении, почему. Все объекты выглядят так:
const dbconfig = {
server: process.env.SERVER,
userName: process.env.USER_NAME,
password: process.env.PASSWORD,
options: {
database: process.env.DATABASE,
table: process.env.TABLE,
encrypt: true,
requestTimeout: 300000,
rowCollectionOnRequestCompletion: true,
}
}
Я пытался (среди прочих):
- / (. + [\ П \ г]) +. Process.env (+. [\ П \ г]) + / г
- / const dbconfig (. + [\ S \ n \ r]) + / g
- / (. + \ С). + Process.env (. + \ С) + / г
Каждый из них соответствует целому объявлению объекта, как и ожидалось, но в Узле он заменит:
- ничего, оставляет все как есть
- первая строка (const dbconfig = {
- все строки, которые содержат process.env, но оставляют остальные
Я понятия не имею, почему я получу разные результаты и почему это не получится. Любые предложения приветствуются!
Edit:
Извините, недостаточно подробно включены. Под заменой я подразумеваю замену пустой строки ''.
Я читаю в файлах массив в цикле имен каталогов, как это:
files.push(fs.readFileSync(`../lambda/${folder}/index.js`, {encoding: 'utf8'}));
Я извлекаю необходимые библиотеки из каждой из них, например:
let imports = new Set();
let arr;
files.forEach((file, idx) => {
while ((arr = replaceOptions.from[0].exec(file)) !== null) {
imports.add(arr[0]);
}
});
Затем я объединяю файлы в основной файл, удаляю требуемые файлы и пытаюсь выполнить эти настройки и добавляю одну копию вверху:
fs.writeFileSync('joined.js', files.join('\n'));
try {
const results = replace.sync(replaceOptions);
console.log('Replacement results:', results);
}
catch (error) {
console.error('Error occurred:', error);
}
fs.writeFileSync('server.js', Array.from(imports.values()).join('\n'));
fs.appendFileSync('server.js', fs.readFileSync('joined.js'));
Раньше я выполнял замену строки самостоятельно, но потом для простоты я использовал jsut для замены пакета npm в файле / на случай, если я что-то там заполнил.
И да, я понимаю, что этот код в настоящее время немного запутан и неэффективен, это всего лишь итерации попытки получить базовое достижение желаемого результата.