Я использую Netlify CMS в рамках темы Гэтсби. Вот пример структуры моего проекта:
root/
themes/
gatsby-theme-example/
pages/
index.js
static/
admin/
config.yml
gatsby-config.js
package.json
sites/
example-theme-site/
data/
content.md
gatsby-config.js
package.json
package.json
Дополнительная информация:
gatsby-theme-example
использует gatsby-plugin-netlify-cms , сФайл config.yml
, расположенный по адресу root/themes/gatsby-theme-example/static/admin/config.yml
gatsby-theme-example
и example-theme-site
, подключен через рабочие области пряжи , однако я намерен опубликовать gatsby-theme-example
в npm, как только он будет полностью разработан, чтобы пользователиможете установить его как пакет. example-theme-site
используется только в целях тестирования разработки.
Это означает, что:
- Запуск
yarn workspace example-theme-site develop
будет запускаться gatsby develop
для example-theme-site
- Пользователи могут затем посетить
http://localhost:8000/admin
и получить доступ к Netlify CMS. После входа в систему Netlify CMS будет загружен с использованием файла конфигурации, расположенного в root/themes/gatsby-theme-example/static/admin/config.yml
. Следующий шаг, который я хочу выполнить после этого:
- Пользователи добавляют контентNetlify CMS
- При сохранении / публикации эти новые данные сохраняются в каталоге
root/sites/example-theme-site/data
.
Это проблема, с которой я сталкиваюсь, как файл конфигурациинаходится в gatsby-theme-example
, однако я хочу сохранить данные в example-theme-site
. Я не уверен, как сделать путь относительно корневого каталога без его жесткого кодирования.
Я вижу, что могу указать место для сохранения данных в file
или folder
в config.yml
, однако, поскольку config.yml
- это файл .yml, я не вижу, как я могу использовать что-то вроде __dirname
для указания правильного каталога. Единственный вариант, который я вижу, - это жестко кодировать путь к файлу (например, file: "../../sites/example-theme-site/data/content.md"
) во время разработки, а затем изменить его так, чтобы он относился к node_modules
непосредственно перед публикацией темы в npm.
Есть ли здесь более подходящее решение?