# 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=" build ``` 1. Install and launch on the simulator. ```shell xcrun simctl boot xcrun simctl install xcrun simctl launch 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.