The AMP Project Website.
The official homepage of the AMP Project.
We welcome contributions to amp.dev.
Note: fixing spelling mistakes and other small changes are often easiest by directly editing the file on Github.
Note: For those intending to conduct development on this repository beyond fixing typos, Linux and macOS are the only currently supported operating systems. Windows is not supported at this time.
$ nvm install --lts
sh $ brew doctor
sh $ brew install python
sh $ echo "export PATH=\"$(python -m site --user-base)/bin\":\$PATH" >> ~/.bash_profile
sh $ source ~/.bash_profile
Note: If using Linux, refer to the section of pip's official documentation titled Ensure you can run pip from the command line for pip installation troubleshooting.
sh $ echo "export PATH=\"$(python -m site --user-base)/bin\":\$PATH" >> ~/.bashrc
sh $ source ~/.bashrc
Run the following command to use a faster YAML parser.
sh $ sudo apt install -y python-yaml
pipinstead of its installer. Using
pipwill enable importing from the
growpackage in Python later on.
Note: Be sure to use the
pipcommand associated with Python 3 as Grow 1 depends on Python 3.
$ pip3 install --user grow
To get started with contributing to amp.dev, you first need to fork the repository. Once you've done that you can clone the repository:
$ git clone https://github.com/YOUR-USERNAME/amp.dev
... and then install the dependencies via NPM:
$ cd amp.dev $ npm install
If it's your first time working on amp.dev, it is recommended to bootstrap your local environment. To do so, make sure you have set up a valid GitHub access token in an environment variable named
$ export AMP_DOC_TOKEN="c59f6..."
This command enables the import from GitHub to run flawlessly. The actual import occurs by running the following command, which will also build the Playground and Boilerplate Generator once.
$ npm run bootstrap
Tip: Due to bad network conditions or GitHub's API rate-limiting there might be errors during import. Try running the above command with the
-- --queue-importsflag to prevent them.
You can then start developing in your local environment with the command below. The task will take care of building and copying all files, watching them for changes, and rebuilding them when needed. Beware that changes to the Express backend require the Gulp task to be restarted.
$ npm run develop
This command prints a lot to the shell and will most likely end on
Server ready. Press ctrl-c to quit.. Seeing this line means everything went fine so far unless otherwise stated in the logs; the site should be available at http://localhost:8080/. The service running on port
8081is only Grow rendering the pages.
You can contribute your changes back to the main repository by creating a pull request.
Made changes to a lot of Grow documents at once and not quite sure if all references are still valid? You can run
npm run lint:growto pick up broken ones.
To run a local test build that does all the minifying and vends the static pages instead of proxying them through to Grow you can run:
$ npm run build:local $ npm run start:local
Tip: For more rapid local testing, it may be preferable to only build a subset of specified locales. Run the following command with
--localesbeing a comma seperated list of locale abbreviations you want to build, e.g.
en,fror even just
npm run build:local -- --locales
Caution: starting a build will automatically clean all locations of possible remainings from previous builds. Make sure you don't have anything there that you want to keep - additionally check your working copy for eventual unintended local changes.
npm run build:local -- --locales
To perform a build run the following command with
--envbeing one of the following valid environments:
$ npx gulp build --env
This command builds all parts of the project and might take a while. Usually, all builds on amp-dev-staging.appspot.com and amp.dev are built using Travis CI. In case you want to reproduce one of those remote builds in your local environment, you can fetch the build artifacts by running:
$ npx gulp fetchArtifacts --travis-build
Copyright 2019 The AMP HTML Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.