Skip to content
(WIP) Dart docs localization, get started from the wiki page here:
JavaScript HTML Dart CSS Ruby Shell
Branch: master
Clone or download
Latest commit 8dc8532 Nov 11, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Jul 8, 2019
examples sync 2019/11/10 Nov 10, 2019
site-shared @ a480c72 Refresh site-shared, use ruby and node default vers (#2059) Nov 1, 2019
src sync 2019/11/10 Nov 10, 2019
tool sync w/ & translate Nov 6, 2019
.firebaserc Add Firebase project aliases for new staging servers (#1910) Sep 17, 2019
.gitignore async await codelab (#1659) Aug 7, 2019
.gitmodules fixs the submodules issue Oct 31, 2019
.travis.yml Fix the deploy error by revert the deploy condition. Nov 9, 2019
AUTHORS Migrating repo from Ocupop Jul 11, 2016 Improvements to CONTRIBUTING & README (#2036) Oct 24, 2019
Gemfile sync w/ & CI Oct 31, 2019
Gemfile.lock sync w/ & CI Oct 31, 2019
LICENSE Migrating repo from Ocupop Jul 11, 2016 fixed a typo (#2049) Nov 5, 2019
_config.yml sync w/ & CI Oct 31, 2019
_config_dev.yml Refreshed look with new logos (#830) May 3, 2018
_config_now.yml Upgrade to bootstrap 4, Step 1: essentials (#1106) Aug 27, 2018
analysis_options.yaml fix 1931 (#1975) Oct 4, 2019
build.excerpt.yaml chore: use new code excerpter (#912) Jun 9, 2018
firebase.json dart2native & dartaotruntime docs (#2048) Nov 5, 2019
package.json Upgrade to Node 12, firebase-tools 7.6 (#2058) Nov 1, 2019
pubspec.yaml Remove references to the webdev site (#1756) Jul 12, 2019

The Dart language site (

Build Status SVG first-timers SVG

The site, built with Jekyll and hosted on Firebase.

We welcome contributions, and we're first-timer friendly!

For simple changes (such as to CSS and text), you probably don't need to build this site. Often you can make changes using the GitHub UI.

If you want or need to build, follow the steps below.

Help us improve these instructions! If you have any problems getting set up to build or performing the actual build, please edit this README or file an issue (or both).

Before you build this site

1. Get the prerequisites

Install the following tools if you don't have them already.

  • nvm, the Node Version Manager.
  • rvm, the Ruby Version Manager.
  • Dart

IMPORTANT: Follow the installation instructions for each of the tools carefully. In particular, configure your shell/environment so that the tools are available in every terminal/command window you create.

2. Clone this repo and its submodule

NOTE: This repo has a git submodule, which affects how you clone it.

To clone this repo (site-www), follow the instructions given in the GitHub help on Cloning a repository, and choose one of the following submodule-cloning techniques:

  • Clone this repo and its submodule at the same, use the --recurse-submodules option:
    git clone --recurse-submodules
  • If you've already cloned this repo without its submodule, then run this command from the repo root:
    git submodule update --init --remote

IMPORTANT: Whenever you update your repo, update the submodule as well:
git pull; git submodule update --init --remote

3. Run installation scripts

NOTE: It is safe to (re-)run all of the commands and scripts given below even if you already have the required packages installed.

Open a terminal/command window and execute the following commands:

  1. cd <path-to-this-repo>   # change to root of this repo
  2. source ./tool/   # initialize environment variables; install/use required Node & Ruby version
  3. ./tool/   # install core set of required tools
  4. ./tool/   # install everything else needed to build this site


  • Any time you create a new terminal/command window to work on this repo, repeat steps 1 and 2 above.
  • If you upgrade Dart then rerun all of the steps above.

Building this site

Once everything is installed, you need to do a full site build at least once:

  • jekyll build   # full site build

The generated site is placed in the _site folder. To serve this folder use:

  • npx superstatic --port 4000

Or, if you aren't testing redirects, use this command (which has the bonus of autorefreshing your browser after edits):

  • jekyll serve --livereload

To view the generated site open localhost:4000 in a browser.

You can build, serve, and have a watcher for changes by running the following command:

  • ./tool/

Pre-push checks

If you've made changes to this site's documentation and committed locally, then run the following command before pushing your work:


If the script reports errors or warnings, then address the issues and rerun the script. Otherwise, you can push your changes.

Site checks

Checking example code

If you've made changes to the example code run the following commands:

  • ./tool/
  • ./tool/
  • ./tool/ --quick

If the last command reports failed tests and you'd like to know which test failed, then rerun the command without the -q flag.

Checking the site's HTML

First, build the site and launch the server:

jekyll build && npx superstatic --port 4000

Next, to check for broken links, run this from the top of the repo:


To also check external URLs (which is much slower), run the linkcheck command with the --external (or -e, for short) option.

With this tool you can check any URL by simply specifying it as a parameter:

pub global activate linkcheck

To check for valid HTML, good images, and broken links (though not as well as linkcheck.dart), run this from the top of the repo: NOTE: As of April 16, 2019, this doesn't work. See issue #1461.


To find old links (from the site version before this one) that are broken, use these commands:

./tool/ &
linkcheck -i deploy/urls/old_site_urls.txt

Staging the site

First, save your changes. For example, from the top directory:

git commit src

Create a pull request by pushing your branch to GitHub.

git push origin <branchname>

Navigate to the Firebase console,

If you don't already have a project to stage to, create it:

  1. Select Create New Project.
  2. Enter a project name in the dialog, such as staging-1.
  3. Click Create Project. This takes you to the page for your new project.

Note: To keep the number of projects under control, we reuse them. Our naming convention is <first initial><last initial>-dart-dev-<number>, for example, sz-dart-dev-1 and kw-dart-dev-1.

Return to the Firebase console. You should now see your project in the list. Copy the name of your project (e.g. sz-dart-dev-2) to your clipboard.

On the command line, from the top of GitHub repo, edit the .firebaserc file.

Change dart-dev to the name of your project. For example:

  "projects": {
    "default": "sz-dart-dev-2"

Build the docs, to get the latest changes and set the new project name:

jekyll build

Then deploy the docs:

./tool/shared/ --robots ok default

You can now navigate to the staged version at https://<your-instance> -— for example,

Important: Don't commit the .firebaserc file containing the name of your staged version.

Navigate to the PR on GitHub and update it with the location of the staged version, the names of your reviewers, and so on.

Before making any more changes, stash .firebaserc:

git stash

You can later retrieve the stashed file, if you need to stage again, using git stash pop.

Troubleshooting the build

See the Troubleshooting wiki page.

You can’t perform that action at this time.