Git Product home page Git Product logo

amp-toolbox's Introduction

AMP Toolbox

A collection of AMP tools making it easier to publish and host AMP pages. The following tools are part of this project:

Development

Setting up your environment

After forking amp-toolbox to your own github org, do the following steps to get started:

# clone your fork to your local machine
git clone https://github.com/your-fork/amp-toolbox.git

# step into local repo
cd amp-toolbox

# install dependencies
npm install

# run tests
npm test

Adding new dependencies

amp-toolbox uses Lerna to manage it's packages. To keep build times low, devDependencies (but not CLI dependencies) must be added to the root package.json file. Runtime dependencies are managed for each package individually.

When adding a new package inside the packages directory, register the package via:

npm run bootstrap

Running Tests

The test suite runs for all packages and must be run from the root directory.

# run tests on node and browser
npm test

# run only in node (fastest)
npm run test:node

# run only in browser
npm run test:browser

Using additional arguments the node tests can generate a coverage report or run only for a specific package.

# generate a coverage report
npm run test:node -- --collectCoverage

# run only tests for AMP Optimizer
npm run test:node -- packages/optimizer

Style & Linting

This codebase adheres to the Google Javascript Styleguide and is enforced using ESLint. ESLint is run as part of the test suite, but you can also explicity run it via:

# run ESLint
npm run lint

# run ESLint with `--fix` option to automatically fix errors (if possible)
npm run lint:fix

Making a Release

Before publishing a release, make sure to have the lates changes from master and the changelog is up-to-date:

$ npm run changelog

This will print all changes since the previous release. For this to work, all PRs need to be correctly labeled as:

  • breaking (๐Ÿ’ฅ Breaking Change)
  • enhancement (๐Ÿš€ Enhancement)
  • bug (๐Ÿ› Bug Fix)
  • documentation (๐Ÿ“ Documentation)
  • internal (๐Ÿ  Internal)

Copy and prepend the new changes to CHANGELOG.md when you're about to make a release. Don't forget to update the version. Commit the updated changelog and run:

$ npm publish

to publish all changed packages to NPM. Pick the new version according to SemVer.

Contributing

Please see the CONTRIBUTING file for information on contributing to the AMP Project.

License

AMP Toolbox is made by the AMP Project, and is licensed under the Apache License, Version 2.0.

amp-toolbox's People

Contributors

addieachan avatar alabiaga avatar amedina avatar andreban avatar arghyaiitb avatar caroqliu avatar daggy1234 avatar dakkad avatar dbrown910 avatar dependabot[bot] avatar dritter avatar enriqe avatar fstanis avatar ijjk avatar ithinkihaveacat avatar jridgewell avatar matthiasrohmer avatar mattwomple avatar mdmower avatar merceyz avatar patrickkettner avatar processprocess avatar renovate-bot avatar renovate[bot] avatar samouri avatar schlessera avatar sebastianbenz avatar tharders avatar timneutkens avatar torch2424 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.