В настоящее время я использую Gatsby для создания сайта документации для библиотеки компонентов, которую я разработал. Я установил плагин Transformer-Remark, который создает объекты javascript для каждого файла уценки в структуре моего сайта.
Поскольку сайт предназначен для документации, у меня есть страница сведений о компонентах, на которой показано, как компонент может использоваться потребителем, и большая часть содержимого этой страницы получена из файла README.MD соответствующего пакета в NPM.
В левой части этой страницы находится динамическое меню, в котором перечислены созданные мной компоненты. В меню используется запрос GraphQL в пользовательском шаблоне Gatsby для разделения компонентов на 3 категории на основе фильтра RegEx их fileAbsolutePath, например:
export const pageQuery = graphql`
query($path: String!) {
pageData:
markdownRemark(fields: { slug: { eq: $path } }) {
html
fields {
slug
title
}
fileAbsolutePath
}
atoms:
allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-atoms-(\w+)/README/"}}) {
edges {
node {
fields {
slug
title
}
}
}
}
molecules:
allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-molecules-(\w+)/README/"}}) {
edges {
node {
fields {
slug
title
}
}
}
}
organisms:
allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-organisms-(\w+)/README/"}}) {
edges {
node {
fields {
slug
title
}
}
}
}
}
`;
Однако, когда я пытаюсь запустить Gatsby Develop, я получаю следующую ошибку:
Синтаксическая ошибка: неверная escape-последовательность символов: \ w.
Я попытался добавить второй обратный слеш перед рассматриваемой строкой, чтобы избежать его, но это не работает.
Есть ли особый способ экранирования определенных символов в фильтрах RegEx в GraphQL?
Edit:
Я должен добавить, что тот же RegEx прекрасно работает на этом сайте тестирования RegEx:
https://regexr.com/436ep