85 lines
2.4 KiB
Markdown
85 lines
2.4 KiB
Markdown
# Contributing
|
|
|
|
This guide provides instructions for contributing to this Capacitor plugin.
|
|
|
|
## Developing
|
|
|
|
### Local Setup
|
|
|
|
1. Fork and clone the repo.
|
|
1. Install the dependencies.
|
|
|
|
```shell
|
|
npm install
|
|
```
|
|
|
|
1. Install iOS dependencies (macOS only).
|
|
|
|
```shell
|
|
cd example-app/ios/App
|
|
pod install
|
|
```
|
|
|
|
1. Install SwiftLint if you're on macOS.
|
|
|
|
```shell
|
|
brew install swiftlint
|
|
```
|
|
|
|
### Example App (iOS Simulator)
|
|
|
|
1. Sync native projects.
|
|
|
|
```shell
|
|
cd example-app
|
|
npx cap sync ios
|
|
```
|
|
|
|
1. Build for a simulator device.
|
|
|
|
```shell
|
|
xcodebuild -workspace ios/App/App.xcworkspace -scheme App -destination "id=<SIMULATOR_UDID>" build
|
|
```
|
|
|
|
1. Install and launch on the simulator.
|
|
|
|
```shell
|
|
xcrun simctl boot <SIMULATOR_UDID>
|
|
xcrun simctl install <SIMULATOR_UDID> <PATH_TO_App.app>
|
|
xcrun simctl launch <SIMULATOR_UDID> com.example.plugin
|
|
```
|
|
|
|
> **Note**: The example app already includes the required location permission keys in its Info.plist. If you add a new app target, ensure those keys exist.
|
|
|
|
### Scripts
|
|
|
|
#### `npm run build`
|
|
|
|
Build the plugin web assets and generate plugin API documentation using [`@capacitor/docgen`](https://github.com/ionic-team/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`.
|
|
|
|
#### `npm run verify`
|
|
|
|
Build and validate the web and native projects.
|
|
|
|
This is useful to run in CI to verify that the plugin builds for all platforms.
|
|
|
|
#### `npm run lint` / `npm run fmt`
|
|
|
|
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](https://github.com/capacitor-community/) strives to have consistent code style and structure for easier cooperation.
|
|
|
|
## Publishing
|
|
|
|
There is a `prepublishOnly` hook in `package.json` which prepares the plugin before publishing, so all you need to do is run:
|
|
|
|
```shell
|
|
npm publish
|
|
```
|
|
|
|
> **Note**: The [`files`](https://docs.npmjs.com/cli/v7/configuring-npm/package-json#files) array in `package.json` specifies which files get published. If you rename files/directories or add files elsewhere, you may need to update it.
|