15 KiB
GitHub Docs
This repository contains the documentation website code and Markdown source files for docs.github.com.
GitHub's Docs team works on pre-production content in a private repo that regularly syncs with this public repo.
In this article:
Contributing
📝 To find out how you can best contribute to GitHub's product documentation, see CONTRIBUTING.md.
📣 If you'd like help troubleshooting a PR, have a great new idea, or want to share something amazing you've learned in our docs, join us in discussions.
🪲 If you've found a problem, you can open an issue using a template.
❓ If you're having trouble with your GitHub account, contact Support.
💛 We do not accept pull requests for translated content - see CONTRIBUTING.md for more information.
READMEs
In addition to the README you're reading right now, this repo includes other READMEs that describe the purpose of each subdirectory in more detail:
- content/README.md
- data/README.md
- data/reusables/README.md
- data/variables/README.md
- includes/liquid-tags/README.md
- includes/README.md
- javascripts/README.md
- layouts/README.md
- lib/liquid-tags/README.md
- middleware/README.md
- script/README.md
- stylesheets/README.md
- tests/README.md
Developing
This site is powered by Node.js! 🐢 🚀
You'll need Node.js v12 to run the site. If you're using nodenv (you can
run nodenv version
to find out which Node.js version you're on), read the
nodenv section for instructions on switching to Node.js 12. If you're
not using nodenv, the best way to install Node.js is to
download the LTS installer from nodejs.org.
Once you've installed Node.js, open up Terminal and run the following:
git clone https://github.com/github/docs-internal
cd docs-internal
npm install
npm start
You should now have a running server! Visit localhost:4000 in your browser. It will automatically restart as you make changes to site content.
When you're ready to stop your local server, type CTRLc in your terminal window.
Site structure
This site was originally written in Jekyll and later Nanoc, both of which are Ruby static site generators. This site is now a dynamic Node.js webserver powered by Express, using middleware to add support for proper HTTP redirects, language header detection, and dynamic content generation to support the various flavors of GitHub's product documenation, like dotcom and GitHub Enterprise. For more context on why this change was made, see the new help.github.com proposal doc.
The tech powering the site is now different, but many of the tried-and-true authoring conventions of the original Jekyll site have been preserved:
- Content is written in Markdown files which live in the
content
directory. - Content can use the Liquid templating language.
- Files in the
data
directory are available to templates via the{% data %}
tag. - Markdown files can contain frontmatter.
- The
redirect_from
Jekyll plugin behavior is supported.
See the Content README for more info.
Error handling
Errors generated from requests will be sent to Sentry via middlware/handle-errors.js
, and the lib/failbot.js
client. This is a lightweight wrapper for sending exceptions to GitHub's Sentry instance.
Search
This site's search functionality is powered by Algolia, a third-party service.
See search.md for details.
License
The GitHub product documentation in the assets, content, and data folders are licensed under a CC-BY license.
All other code in this repository is licensed under a MIT.
When using the GitHub logos, be sure to follow the GitHub logo guidelines.
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!