Skip to main content

Использование содержимого

Вы можете использовать содержимое linter для проверки ваших вкладов на наличие ошибок.

Сведения о содержимом GitHub Docs

Наше содержимое применяет правила руководства по стилю в содержимом Markdown.

Linter используется markdownlint в качестве платформы для выполнения проверок, отчетов о недостатках и автоматическом исправлении содержимого по возможности. Эта платформа гибко выполняет определенные правила, предоставляет описательные сообщения об ошибках и устраняет ошибки. Содержимое GitHub Docs использует несколько существующих markdownlint правил и дополнительных настраиваемых правил для проверки содержимого Markdown в наших content и data каталогах. Наши пользовательские правила реализуют проверки, которые пока недоступны в markdownlint платформе или относятся к содержимому GitHub Docs. Правила проверяют синтаксис для Markdown и Liquid.

Выполнение содержимого GitHub Docs

Содержимое GitHub Docs будет выполняться автоматически при предварительной фиксации, но его также можно запустить вручную.

Автоматический запуск linter при предварительной фиксации

При локальном написании содержимого и фиксации файлов с помощью командной строки эти промежуточные файлы автоматически будут выложены с помощью содержимого. Сообщаются как предупреждения, так и ошибки, но только ошибки будут препятствовать завершению фиксации.

Если сообщается об ошибках, фиксация не завершится. Вам потребуется исправить обнаруженные ошибки, повторно добавить измененные файлы и снова зафиксировать изменения. Все сообщаемые ошибки должны быть исправлены, чтобы предотвратить появление ошибок в содержимом, которые нарушают руководство по стилю GitHub Docs. Если сообщается о каких-либо предупреждениях, вы можете при необходимости исправить их или нет.

При локальном написании содержимого существует несколько правил, которые можно исправить автоматически с помощью командной строки. Если вы хотите автоматически исправить ошибки, которые можно исправить, см. статью "Автоматическое исправление ошибок, которые можно исправить".

Если вы редактируете файл в пользовательском интерфейсе GitHub, вы не сможете автоматически исправлять ошибки или запускать литер в фиксации, но вы получите сбой CI, если содержимое нарушает какие-либо правила с серьезностью error.

Запуск linter вручную

Запуск linter на поэтапном и измененном файлах

Используйте следующую команду, чтобы локально запустить linter на промежуточных и измененных файлах. Это приведет к error выводу и warning недостатков серьезности.

npm run lint-content

Запуск linter на поэтапном и измененном файлах и только сообщения об ошибках

Используйте следующую команду, чтобы локально запустить linter на этапе и измененных файлах, а также сообщить о недостатках только error серьезности.

npm run lint-content -- --errors

Запуск linter для определенных файлов или каталогов

Используйте следующую команду для локального запуска linter в определенных файлах или каталогах. Разделите несколько путей с пробелом. Файлы и каталоги можно включить в одну и ту же команду.

Shell
npm run lint-content -- \
  --paths content/FILENAME.md content/DIRECTORY

Автоматическое исправление ошибок, которые можно исправить

Если в описании ошибки fixable: true вы можете использовать следующие команды для автоматического исправления.

Выполните следующую команду, чтобы исправить только промежуточные и измененные файлы:

npm run lint-content -- --fix

Выполните следующую команду, чтобы исправить определенные файлы или каталоги:

npm run lint-content -- \
  --fix --paths content/FILENAME.md content/DIRECTORY

Запуск определенного набора правил linter

Используйте следующую команду для выполнения одного или нескольких конкретных правил linter. В этих примерах выполняются heading-increment правила и code-fence-line-length правила. Замените heading-increment code-fence-line-length одним или несколькими псевдонимами linter, которые вы хотите запустить. Чтобы просмотреть список правил linter, которые можно передать этому параметру, выполните команду npm run lint-content -- --help. Можно использовать короткое имя (например, MD001) или длинное имя (например, heading-increment) правила linter.

Запустите указанные правила linter во всех промежуточных и измененных файлах:

npm run lint-content -- \
  --rules heading-increment code-fence-line-length

Выполните указанные правила linter для определенных файлов или каталогов:

npm run lint-content -- \
  --rules heading-increment code-fence-line-length \
  --path content/FILENAME.md content/DIRECTORY

Обход перехватчика фиксации

Если ошибка linter catchs, которую вы не ввели, можно обойти перехватчик фиксации Git с помощью --no-verify параметра при фиксации изменений.

git commit -m 'MESSAGE' --no-verify

Отображение меню справки для скрипта содержимого linter

npm run lint-content -- --help

Правила подстраивание

Каждое правило настроено в файле, src/content-linter/styleгде определены серьезность правил.

Перед объединением изменений в main ветвь необходимо устранить ошибки. Предупреждения следует устранять, но не предотвращать объединение изменений в main ветвь. Большинство правил в конечном итоге будут повышены до ошибок, так как содержимое больше не имеет предупреждений нарушений.

Идентификатор правилаИмена правилDescriptionСерьезностьТеги
MD001Увеличение заголовкаУровни заголовков должны увеличиваться только на один уровень за разerrorЗаголовки
MD004ul-styleСтиль неупорядоченного спискаerrorмаркер, ul
MD009no-trailing-spacesКонечные пробелыerrorпробел
MD011no-reversed-linksСинтаксис обратной ссылкиerrorссылки
MD012без нескольких пустыхНесколько последовательных пустых строкerrorпробелы, blank_lines
MD014commands-show-outputЗнаки доллара, используемые перед командами без отображения выходных данныхerrorкодом
MD018no-missing-space-atxНет места после хэш-заголовка стиля atxerrorзаголовки, atx, пробелы
MD019no-multiple-space-atxНесколько пробелов после хэш-заголовка стиля atxerrorзаголовки, atx, пробелы
MD022пустые заголовкиЗаголовки должны быть окружены пустыми строкамиerrorзаголовки, blank_lines
MD023заголовок-слеваЗаголовки должны начинаться в начале строки.errorзаголовки, пробелы
MD027no-multiple-space-blockquoteНесколько пробелов после символа blockquoteerrorblockquote, пробелы, отступы
MD029ol-префиксПрефикс упорядоченного элемента спискаerrorol
MD030list-marker-spaceПробелы после маркеров спискаerrorol, ul, пробелы
MD031пустые заборы вокругБлоки заборированного кода должны быть окружены пустыми строкамиerrorкод, blank_lines
MD037без пробела в акцентеПробелы внутри маркеров выделенияerrorпробелы, акцент
MD039no-space-in-linksПробелы внутри текста ссылкиerrorпробелы, ссылки
MD040забортный язык кодаБлоки кода, защищенные, должны иметь указанный языкerrorкод, язык
MD042no-empty-linksНет пустых ссылокerrorссылки
MD047single-trailing-newlineФайлы должны заканчиваться одним символом новой строкиerrorblank_lines
MD049стиль акцентаСтиль выделенияerroremphasis
MD050сильный стильСильный стильerroremphasis
search-replaceзаполнитель todocs-placeholderПерехват вхождения заполнителя TODOCS.error
search-replacedocs-domainПерехват вхождения домена docs.github.com.error
search-replaceдомен справкиПерехват вхождения домена help.github.com.error
search-replaceПредварительная версия доменаПерехват вхождения домена preview.ghdocs.com.error
search-replaceдомен разработчикаПерехват вхождения домена developer.github.com.error
search-replaceустаревший синтаксис жидкости: site.dataПерехват вхождений устаревшего синтаксиса данных жидкости.error
search-replaceустаревший синтаксис жидкости: octicon-Используемый синтаксис октикона жидкости не рекомендуется. Вместо этого используйте этот формат octicon "<octicon-name>" aria-label="<Octicon aria label>"error
GH001no-default-alt-textИзображения должны иметь значимый альтернативный текст (замещающий текст)errorспециальные возможности, изображения
GH002no-generic-link-textИзбегайте использования универсального текста ссылки, например Learn more или Click hereerrorспециальные возможности, ссылки
GHD030длина строки забора кодаЛинии ограждения кода не должны превышать максимальную длинупредупреждений (не рекомендуется)код, специальные возможности
GHD032image-alt-text-end-punctuationАльтернативный текст для изображений должен заканчиваться знаками препинанияerrorспециальные возможности, изображения
GHD004image-file-kebab-caseИмена файлов изображений должны использовать kebab-caseerrorimages
GHD033неверный alt-text-lengthЗамещающий текст изображений должен составлять от 40 до 150 символовпредупреждений (не рекомендуется)специальные возможности, изображения
GHD002internal-links-no-langВнутренние ссылки не должны иметь жестко закодированный языковой кодerrorссылки, URL-адрес
GHD003внутренняя косая чертаВнутренние ссылки должны начинаться с /errorссылки, URL-адрес
GHD031image-alt-text-exclude-wordsАльтернативный текст для изображений не должен начинаться с таких слов, как "изображение" или "графический"errorспециальные возможности, изображения
GHD034list-first-word-capitalizationПервое слово элемента списка должно быть заглавнопредупреждений (не рекомендуется)ul, ol
GHD001препинание ссылокЗаголовки внутренних ссылок не должны содержать знаки препинанияerrorссылки, URL-адрес
GHD008ранние ссылки на accessФайлы, которые не являются ранним доступом, не должны ссылаться на файлы с ранним доступом или ранним доступомerrorфункция, ранний доступ
GHD021задания yaml-scheduled-jobsФрагменты YAML, включающие запланированные рабочие процессы, не должны выполняться в час и должны быть уникальнымиerrorфункция, действия
GHD006внутренняя версия-links-old-versionВнутренние ссылки не должны иметь жестко закодированную версию с использованием старого синтаксиса управления версиямиerrorссылки, URL-адрес, управление версиями
GHD005hardcoded-data-variableСтроки, содержащие "личный маркер доступа", должны использовать переменную продукта.errorодин источник
GHD013github-owned-action-referencesСсылки на действия, принадлежащие GitHub, не должны быть жестко закодированыerrorфункция, действия
GHD016liquid-quoted-условно-argУсловные теги Liquid не должны кавычки условного аргументаerrorжидкость, формат
GHD014liquid-data-references-definedСсылки на ликвидные или отступные данные найдены в содержимом, не имеющих значения или не существующих в каталоге данных.errorliquid
GHD015формат liquid-data-tagТеги ссылок на ликвидные или отступные данные должны быть правильно отформатированы и иметь правильное количество аргументов и интерваловerrorжидкость, формат
GHD010frontmatter-hidden-docsСтатьи с свойством hidden frontmatter могут находиться только в определенных продуктахerrorfrontmatter, компонент, ранний доступ
GHD009frontmatter-early-access-referencesФайлы, которые не являются ранним доступом, не должны иметь интерфейсные элементы, ссылающиеся на ранний доступerrorfrontmatter, компонент, ранний доступ
GHD011frontmatter-video-transcriptsРасшифровка видео должна быть настроена правильноerrorfrontmatter, feature, video-transcripts
GHD012frontmatter-schemaFrontmatter должен соответствовать схемеerrorfrontmatter, схема
GHD007заметки кодаЗаметки кода, определенные в Markdown, должны содержать определенное свойство frontmatter макетаerrorcode, feature, annotate, frontmatter
GHD017frontmatter-liquid-синтаксисСвойства Frontmatter должны использовать допустимые свойства Liquiderrorжидкость, frontmatter
GHD018синтаксис liquid-Содержимое Markdown должно использовать допустимое содержимое Liquiderrorliquid
GHD019liquid-if-tagsТеги Liquid ifversion следует использовать вместо if тегов, если аргумент является допустимой версией.errorliquid, управление версиями
GHD020liquid-ifversion-tagsТеги Liquid ifversion должны содержать допустимые имена версий в качестве аргументовerrorliquid, управление версиями
GHD0222liquid-ifversion-versionsЖидкость ifversionelsif) не всегда должна быть вернойпредупреждений (не рекомендуется)liquid, управление версиями
GHD035rai-reusable-usageСтатьи RAI и повторно используемые файлы могут ссылаться только на повторное использование содержимого в каталоге data/reusables/rai.errorфункция, rai
GHD036image-no-gifИзображение не должно быть GIF- ссылкой на styleguide: участие/style-guide-and-content-model/style-guide.md#imageserrorimages
GHD038истек срок действия содержимогоСодержимое с истекшим сроком действия должно быть исправлено.errorсрок действия истек
GHD039истекает срок действия в ближайшее времяСрок действия содержимого, срок действия которого истекает в ближайшее время, должен быть упреждаем.предупреждений (не рекомендуется)срок действия истек
GHD040управление версиями table-liquidТаблицы должны использовать правильный формат управления версиями liquiderrorВ таблицах
GHD041закрепление стороннего действияПримеры кода, использующие сторонние действия, должны всегда закрепляться на полной длине фиксации SHAerrorфункция, действия
GHD042liquid-tag-whitespaceТеги Liquid должны начинаться и заканчиваться одним пробелом. Аргументы тега Liquid должны быть разделены только одним пробелом.errorжидкость, формат

Синтаксис правил подкладки

Некоторые правила подстроки возвращают предупреждения или ошибки на основе html-комментариев, которые можно добавить в статьи.

Синтаксис для истечения срока действия и истечения срока действия содержимого

Правила GHD038 и GHD039 проверка содержимого, заданного вручную датой окончания срока действия. За 19 дней до указанной даты содержимое будет возвращено предупреждение о том, что срок действия содержимого истекает в ближайшее время. Начиная с указанной даты содержимое возвращает ошибку и помечает содержимое для исправления.

Вы можете добавить дату окончания срока действия в содержимое, упаковав его в HTML-теги, содержащие дату окончания срока действия в формате: <!-- expires yyyy-mm-dd --> <!-- end expires yyyy-mm-dd -->

Используйте:

This content does not expire.
<!-- expires 2022-01-28 -->
This content expires on January 28, 2022.
<!-- end expires 2022-01-28 -->
This content also does not expire.

Обратите внимание, что если вы помещаете истекшие теги в HTML-элемент table , убедитесь, что тег проходит по всей строке и не только ячейке. Например:

<!-- expires 2024-06-28 -->
<tr>
<td>
macOS
</td>
<td>
The <code>macos-11</code> label is закрытие and will no longer be available after 28 June 2024.
</td>
</tr>
<!-- end expires 2024-06-28 -->

Подавление правил linter

Иногда может потребоваться документировать то, что нарушает одно или несколько правил linter. В этих случаях можно отключить правила, добавив комментарий в файл Markdown. Вы можете отключить все правила или определенные правила. Всегда старайтесь ограничить как можно меньше правил. Правило для всего файла можно отключить для раздела файла Markdown, определенной строки или следующей строки.

Например, если вы пишете статью, содержащую регулярное выражение (^|/)[Cc]+odespace/ , которое проверяет синтаксис обратной ссылки, оно активирует MD011 правило, которое проверяет обратные ссылки. Вы можете отключить правило MD011 в этой конкретной строке, добавив следующий комментарий.

(^|/)[Cc]+odespace/ <!-- markdownlint-disable-line MD011 -->

Если строка, которую вы пытаетесь игнорировать, находится в блоке кода, можно игнорировать блок кода, окружив его следующими комментариями.

<!-- markdownlint-disable MD011 -->
```
(^|/)[Cc]+odespace/
```
<!-- markdownlint-enable MD011 -->

Эти комментарии можно использовать для включения или отключения правил.

КомментарийДействие
<!-- markdownlint-disable -->Отключить все правила
<!-- markdownlint-enable -->Включение всех правил
<!-- markdownlint-disable-line -->Отключить все правила для текущей строки
<!-- markdownlint-disable-next-line -->Отключить все правила для следующей строки
<!-- markdownlint-disable RULE-ONE RULE-TWO -->
<!-- markdownlint-enable RULE-ONE RULE-TWO -->Включение одного или нескольких правил по имени
<!-- markdownlint-disable-line RULE-NAME -->Отключение одного или нескольких правил по имени текущей строки
<!-- markdownlint-disable-next-line RULE-NAME -->Отключение одного или нескольких правил по имени для следующей строки