💬 Красиво обработанные и синхронизированные файлы репо?
Medium использует Embed.ly для встраивания мультимедийных материалов. У Embed.ly есть провайдер GitHub, который красиво отображает Gists с помощью GitHub embedded Gists. Если вы пытались связать код на Medium с GitHub, вы наверняка попали в точку, о которой я собираюсь поговорить.
Я надеюсь, что, повышая осведомленность об этой проблеме, мы сможем достучаться до человека, который не только способен, но и способен решить ее. Если бы это был OSS, у меня была бы трещина, но, увы, это не так.
Текущее состояние
Провайдер Embed.ly GitHub принимает URL-адреса со следующими схемами:
http://gist.github.com/* https://gist.github.com/*
Это означает, что он может действительно хорошо отображать Gists в Medium:
Подсветка кода GitHub для языка связанного файла Gist великолепна! Это намного лучше, чем стандартный рендеринг кода Medium.com:
export default () => <div>no code highlighting :(</div>
И мобильный рендеринг тоже на высоте!
Так в чем же тогда проблема, явно лучше ?!
Да, рендеринг идет, но поддержка репозиториев и отдельных файлов оставляет желать лучшего.
Если у вас есть Gist с двумя файлами и ссылка только на URL Gist, вы получите:
https://gist.github.com/jthegedus/2487ce5eb5db0b9da20451c345d2de68
Хорошо, я этого ожидал.
Если вы свяжете только один файл из Gist, вы ожидаете, что будет отображен только этот файл:
https://gist.github.com/jthegedus/2487ce5eb5db0b9da20451c345d2de68#file-gist1-js
Но он отображает оба файла Gist!
Это означает, что если вы пишете сообщение в блоге с несколькими файлами, которые хотите связать, каждый из них должен быть отдельным Gists! 😅 🔫
История разработчиков
Каждый раз, когда я пишу новый пост в блоге, я хочу включить и обсудить некоторые важные фрагменты кода. Каждый раз мне приходится создавать много Gists, чтобы воспользоваться прекрасным рендерингом. Мне не нравится читать посты, в которых не используются преимущества этого рендеринга, поэтому я стараюсь практиковать то, что я проповедую; Я создам эти Gists для всего, что представляет собой нечто большее, чем пара строк кода. Это расстраивает.
Повторяющиеся сны
Суть проблемы не в рендеринге Gist-файла, а в поддержке файлов из репозиториев GitHub! GitHub никоим образом не поддерживает это через провайдер GitHub Embed.ly.
Если я напишу сообщение в блоге о каком-то проекте и хочу поделиться своим примером кода, я могу связать только все репо, а не отдельные файлы. Создание Gists, отражающих файлы репозитория, которые я хочу связать, - это трудоемкое решение. Я использую распределенное управление версиями файлов, поэтому у меня нет двух несинхронизированных копий.
E.G.:
https://github.com/jthegedus/firebase-functions-graphql-example
https://github.com/jthegedus/firebase-functions-graphql-example/blob/master/package.json
Дает такой же рендер из Medium. В первом случае он отображает информацию, которую я ожидаю, но во втором - нет. Я ожидал, что содержимое файла будет отображаться как в Gist.
// Current supported URL scheme http://gist.github.com/* https://gist.github.com/* // The Dream Schemes https://gist.github.com/<gist-id>#<filename.ext> https://github.com/<username>/<repository-name>/blob/<branch-name>/**/<filename.ext>
Я просто хочу, чтобы мои обновленные файлы кода (репозиторий git) хорошо отображались!
Заключение
Панацеей здесь является рендеринг одного файла из ссылок репозитория и Gist на Medium с Embed.ly через встраивание GitHub. Если вы знаете человека в GitHub, который может сделать это, или если есть способ, которым мы могли бы работать над решением как сообщество, тогда поделитесь, пожалуйста! Я бы с радостью вытащил волосы все выходные, работая с регулярным выражением, если бы это потребовалось, чтобы связать отдельные файлы из моего репо и заставить их отображать такие же, как эти прекрасные Gists.
/ rant