A validator for the AMP HTML format.
If you just want to validate a page, please see our documentation over at amp.dev.
Please see js/chromeextension/README.md.
An extension for Visual Studio Code VSCode marketplace
Please see js/nodejs/README.md.
Please see js/webui/README.md.
The validator rules are exported in the JSON format and hosted on: https://cdn.ampproject.org/v0/validator.json
The JSON rules are provided on best-effort basis and it's not recommended to rely on them in a production environment.
This is only useful for development - e.g. when making changes to
js/engine/validator.js
or when authoring an AMP extension, and it's rough
around the edges. Below are instructions for Linux Ubuntu 14.
Install these packages using apt-get:
npm
openjdk-7-jre
protobuf-compiler
python2.7
Then use pip to pip install protobuf
.
In addition, install Node.js v4.4.2. E.g., by downloading or by using a package manager or by using NVM.
Dependencies:
-
npm
-
python 2.7 (should already be installed on OSX)
-
-
protobuf
brew install protobuf mkdir -p /Users/$(whoami)/Library/Python/2.7/lib/python/site-packages echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/$(whoami)/Library/Python/2.7/lib/python/site-packages/homebrew.pth
-
openjdk-7-jre
brew tap homebrew/cask brew install Caskroom/cask/java
-
Then, run python build.py
. This creates dist/validator_minified.js
, which is
equivalent to the validator deployed at cdn.ampproject.org. You may now
use the --validator_js
command line flag to
amphtml-validator to use this validator.
For use for testing with extensions, you can simply run python build.py
to run all of the validator tests in the amphtml repo.
To create/update validator-*.out
files that are used in the test,
run python build.py --update_tests
.
$ amphtml-validator --validator_js dist/validator_minified.js testdata/feature_tests/several_errors.html
testdata/feature_tests/several_errors.html:23:2 The attribute 'charset' may not appear in tag 'meta name= and content='.
testdata/feature_tests/several_errors.html:26:2 The tag 'script' is disallowed except in specific forms.
testdata/feature_tests/several_errors.html:32:2 The mandatory attribute 'height' is missing in tag 'amp-img'. (see https://amp.dev/documentation/components/amp-img)
testdata/feature_tests/several_errors.html:34:2 The attribute 'width' in tag 'amp-ad' is set to the invalid value '100%'. (see https://amp.dev/documentation/components/amp-ad)
...
Note: This is for building the validator from source. If you are simply running validator tests for extensions, see the Installation steps instead.
- Download protobuf with
brew install protobuf
via homebrew. - Use pip to
pip install google
andpip install protobuf
. If you don't have pip, you can get it either viabrew install python
or get-pip.py. - If your npm is out of date, run
npm i -g npm
to update it.
To verify that you have the necessary prerequisites, run and verify:
$ protoc --version
libprotoc 3.5.1
and
$ python
>>> import google.protobuf
>>>
Now cd amphtml/validator
and run python build.py
.