Как правильно сохранить массив значений RegEx в файле JSON и извлечь его из Javascript? - PullRequest
1 голос
/ 05 января 2020

У меня есть следующая переменная массива в файле Javascript, предназначенная для передачи в Purge css для ее опции whitelistPatterns (обратите внимание, что я специально использую ее из gulp-purgecss plugin ):

var purgeWLP = [
    /^carousel-item.*/,    
    /collapsing/,           
    /show/,                
];

Теперь я хочу сохранить эту и другие переменные проекта во внешнем файле .json, предназначенном для доступа из разных мест и файлов; Я пытался использовать следующий код:

{
    "wlp": [
        "/^carousel-item.*/",
        "/collapsing/",
        "/show/"
    ]
}

Но у меня возникают ошибки, и я не получаю ожидаемого результата, а именно те же точные результаты, что и с переменной purgeWLP в файле javascript.

Как правильно сохранить массив значений регулярных выражений в файле .json и извлечь его из Javascript?

1 Ответ

5 голосов
/ 05 января 2020

Сохраните их как строки без слешей и преобразуйте их обратно в объекты RegExp после анализа строки JSON:

const json = `{
    "wlp": [
        "^carousel-item.*",
        "collapsing",
        "show"
    ]
}`

const wlp = JSON.parse(json).wlp // or const wlp = require('./project.json').wlp on nodejs
  .map(str => new RegExp(str))

console.log(wlp)

И чтобы сохранить их, вы можете использовать JSON.stringify() и сопоставить каждый объект RegExp с его исходной строкой (см. комментарий Emanuel Vintilă ):

var purgeWLP = [
    /^carousel-item.*/,    
    /collapsing/,           
    /show/,                
];

var result = JSON.stringify(purgeWLP.map(re => re.source));

console.log(result);
...