/puppeteer-extra

💯 Teach puppeteer new tricks through plugins.

Primary LanguageJavaScriptMIT LicenseMIT

puppeteer-extra

This is the monorepo for puppeteer-extra, a modular plugin framework for puppeteer. :-)

For the main documentation, please head over to the puppeteer-extra package.

In case you're interested in the available plugins, check out the packages folder.

Contributing

PRs and new plugins are welcome! 🎉 The plugin API for puppeteer-extra is clean and fun to use. Have a look the PuppeteerExtraPlugin base class documentation to get going and check out the existing plugins (minimal example is the anonymize-ua plugin) for reference.

We use a monorepo powered by Lerna (and yarn workspaces), ava for testing, the standard style for linting and JSDoc heavily to auto-generate markdown documentation based on code. :-)

Lerna

This is monorepo is powered by Lerna and yarn workspaces.

Development flow

# Install deps
yarn

# Bootstrap the packages in the current Lerna repo.
# Installs all of their dependencies and links any cross-dependencies.
yarn bootstrap

# Install debug in all packages
yarn lerna add debug

# Install fs-extra to puppeteer-extra-plugin-user-data-dir
yarn lerna add fs-extra --scope=puppeteer-extra-plugin-user-data-dir

# Remove dependency
# https://github.com/lerna/lerna/issues/833
yarn lerna exec -- yarn remove fs-extra

# Run test in all packages
yarn test

# Update JSDoc based documentation in markdown files
yarn docs

# Upgrade project wide deps like puppeteer
# (We keep the devDependency version blurry with @next)
rm -rf node_modules
rm -rf yarn.lock
yarn
yarn lerna bootstrap

# Update deps within packages (ineractive)
yarn lernaupdate