@revenuecat/purchases-js
Version:
Web subscriptions made easy. Powered by RevenueCat
171 lines (114 loc) • 4.64 kB
Markdown
<h3 align="center">😻 In-App Subscriptions Made Easy 😻</h3>
<h4 align="center">🕸️ For the web 🕸️</h4>
RevenueCat is a powerful, reliable, and free to use in-app purchase server with cross-platform support.
This repository includes all you need to manage your subscriptions on your website or web app using RevenueCat.
Sign up to [get started for free](https://app.revenuecat.com/signup).
# Prerequisites
Login @ [app.revenuecat.com](https://app.revenuecat.com)
- Connect your Stripe account if you haven't already (More payment gateways are coming soon)
- Create a Project (if you haven't already)
- Add a new Web Billing app
- Get the sandbox API key or production API key (depending on the environment)
- Create some products for the Web Billing App
- Create an offering and add packages with Web Billing products
- Create the entitlements you need in your app and link them to the Web Billing products
# Installation
- Add the library to your project's dependencies
- npm
```
npm install --save @revenuecat/purchases-js
```
- yarn
```
yarn add --save @revenuecat/purchases-js
```
# Usage
See the [RevenueCat docs](https://www.revenuecat.com/docs/web/web-billing) and the [SDK Reference](https://revenuecat.github.io/purchases-js-docs).
# Development
## Install the library in a local project
- Clone the repository
- Install dependencies
- Build the library
```bash
pnpm install
pnpm run build:dev
```
To avoid publishing the package you can use pnpm's link feature:
1. In the purchases-js directory, register the package:
```bash
pnpm link
```
2. In your testing project, link to the registered package:
```bash
pnpm link "@revenuecat/purchases-js"
```
> **Note:** Any changes you make to the library will be automatically reflected in your testing project after running `pnpm run build:dev` or `pnpm run build`.
### Using a local `@revenuecat/purchases-ui-js`
When you need to iterate on both `purchases-js` and `purchases-ui-js` together, you can point this repo at a sibling checkout using a `pnpm-workspace.yaml` override (instead of manually editing `package.json`).
1. Place the two repos side by side, for example:
```
Developer/
purchases-js/
purchases-ui-js/
```
2. In `purchases-js`, create or edit `pnpm-workspace.yaml` and add:
```yaml
overrides:
"@revenuecat/purchases-ui-js": "link:../purchases-ui-js"
```
Use the **scoped** package name (`@revenuecat/purchases-ui-js`). A key like `purchases-ui-js` will not apply the override.
3. Reinstall dependencies from the `purchases-js` root:
```bash
pnpm install
```
4. Verify the override resolved:
```bash
pnpm why @revenuecat/purchases-ui-js
```
You should see `link:../purchases-ui-js`.
5. Build the UI package when you change it (from `purchases-ui-js`), then rebuild or run dev builds in `purchases-js` as needed.
#### Reverting
Remove the override from `pnpm-workspace.yaml` and run `pnpm install` again to return to the published `@revenuecat/purchases-ui-js` version.
## Running Storybook
```bash
pnpm run storybook
```
### Environment Setup for Purchase Stories
> **Note:** This setup is only required if you need to test Storybook stories involving the `payment-entry` page.
To run these specific stories, you'll need to set up some environment variables. There are two options:
### Option 1: Internal Teams
Internal team members can find the required environment variables in 1Password.
### Option 2: Setup Manually
1. Create a test account in Stripe
2. Create a `.env.development.local` file and set the following variables:
```bash
VITE_STORYBOOK_PUBLISHABLE_API_KEY="pk_test_1234567890"
VITE_STORYBOOK_ACCOUNT_ID="acct_1234567890"
```
## Running tests
```bash
pnpm run test
```
## Running linters
```bash
pnpm run test:typecheck
pnpm run svelte-check
pnpm run prettier
pnpm run lint
```
## Running E2E tests
Please check the Demo app readme [here](./examples/webbilling-demo/README.md#e2e-tests)
## Update API specs
```bash
pnpm run extract-api
```
This will update the files in `api-report` with the latest public API.
If it has uncommitted changes, CI tests will fail. Run this command and commit the changes if
they are expected.
# Publishing a new version
New versions are automated weekly, but you can also trigger a new release through CircleCI or locally
following these steps:
- Run `bundle exec fastlane bump` and follow the instructions
- A PR should be created with the changes and a hold job in CircleCI.
- Approve the hold job once tests pass. This will create a tag and continue the release in CircleCI
- Merge the PR once it's been released