Skip to content

Latest commit

 

History

History
95 lines (74 loc) · 4.85 KB

DEVELOPING.md

File metadata and controls

95 lines (74 loc) · 4.85 KB

Development on AMP HTML

Mailing list

We discuss implementation issues on amphtml-discuss@googlegroups.com.

Installation

  1. npm i
  2. edit /etc/hosts and map ads.localhost and iframe.localhost to 127.0.0.1:
  127.0.0.1               ads.localhost iframe.localhost

Build & Test

Command Description
gulp Same as "watch"
gulp minify Builds production binaries.
gulp lint Validates against Google Closure Linter.
gulp build Builds the AMP library.
gulp clean Removes build output.
gulp test Runs tests in Chrome.
gulp test --verbose Runs tests in Chrome with logging enabled.
gulp test --watch Watches for changes in files, runs corresponding test(s) in Chrome.
gulp test --watch --verbose Same as "watch" with logging enabled.
gulp test --safari Runs tests in Safari.
gulp test --firefox Runs tests in Firefox.
http-server -p 8000 -c-1 serves content in current working dir over http://localhost:8000/

To fix issues with Safari test runner launching multiple instances of the test, run:

  defaults write com.apple.Safari ApplePersistenceIgnoreState YES

Manual testing

For testing documents on arbitrary URLs with your current local version of the AMP runtime we created a Chrome extension.

Repository Layout

  3p/             - Implementation of third party sandbox iframes.
  ads/            - Modules implementing specific ad networks used in 
  build/          - (generated) intermediate generated files
  build-system/   - build infrastructure
  builtins/       - tags built into the core AMP runtime
      *.md        - documentation for use of the builtin
      *.js        - source code for builtin tag
  css/            - default css
  dist/           - (generated) main JS binaries are created here. This is what
                    gets deployed to cdn.ampproject.org.
  dist.3p/        - (generated) JS binaries and HTML files for 3p embeds and ads.
                    This is what gets deployed to 3p.ampproject.net.
  docs/           - documentation
  examples/       - example AMP HTML files and corresponding assets
  examples.build/ - (generated) Same as examples with files pointing to the
                    local AMP.
  extensions/     - plugins which extend the AMP HTML runtime's core set of tags
  spec/           - The AMP HTML Specification files
  src/            - source code for the AMP runtime
  test/           - tests for the AMP runtime and builtins
  testing/        - testing infrastructure

Supported browsers

In general we support the 2 latest versions of major browsers like Chrome, Firefox, Edge, Safari and Opera. We support desktop, phone, tablet and the web view version of these respective browsers.

Beyond that the core AMP library and builtin elements should aim for very wide browser support and we accept fixes for all browsers with market share greater than 1 percent.

In particular, we try to maintain "it might not be perfect but isn't broken"-support for the Android 4.0 system browser and Chrome 28+ on phones.

Eng docs

We also recommend scanning the spec. The non-element part should help understand some of the design aspects.