This guide provides instructions for contributing to this Capacitor plugin.
This repository contains minimal code for native Android and iOS. The implementation for native mobile exists in separate repositories:
-
Fork and clone the repo.
-
If you plan to create a new feature or fix a bug, checkout
development
branch (in general Pull Requests should be open for that branch) -
Install the dependencies.
npm install
-
Install SwiftLint if you're on macOS.
brew install swiftlint
Build the plugin web assets and generate plugin API documentation using @capacitor/docgen
.
It will compile the TypeScript code from src/
into ESM JavaScript in dist/esm/
. These files are used in apps with bundlers when your plugin is imported.
Then, Rollup will bundle the code into a single file at dist/plugin.js
. This file is used in apps without bundlers by including it as a script in index.html
.
Build and validate the web and native projects.
This is useful to run in CI to verify that the plugin builds for all platforms.
Check formatting and code quality, autoformat/autofix if possible.
This template is integrated with ESLint, Prettier, and SwiftLint. Using these tools is completely optional, but the Capacitor Community strives to have consistent code style and structure for easier cooperation.
Commits and PR's should use the conventional-commits format so the release process can version and create changelog correctly.
Publishing is automated based on the branch committed to. When a commit or merge is made to a branch a release that corresponds with the branch will be created:
Branch Name | Build Type | NPM Tag | Example NPM Version |
---|---|---|---|
development | dev | dev | @capacitor/[email protected] |
next | next (these are betas/alphas) | next | @capacitor/[email protected] |
main | latest | latest | @capacitor/[email protected] |
- Dev work should be done by creating and merging PR's into the
development
branch until a feature set is complete enough to form a release. - When a feature set is complete enough to form a release, merge the
development
branch into thenext
branch where it becomes a beta/alpha tagged undernext
for testing teams to use before full release. In case a PR is opened fromdevelopment
tonext
, avoid squashing the commits, to keep the history. - Upon completed testing the
next
branch is merged intomain
for a full release to be made. In case a PR is opened fromnext
tomain
, avoid squashing the commits, to keep the history. - The
main
branch should then be merged intodev
andnext
to keep them up to date with the latest code base.
Note: The
files
array inpackage.json
specifies which files get published. If you rename files/directories or add files elsewhere, you may need to update it.