Skip to content

callstackincubator/react-native-legal

Repository files navigation

React Native Legal

React Native Legal - Automagically generate license acknowledgements for your React Native app πŸš€


Release Deploy Docs Integration tests - License Kit (Node) Unit tests - React Native Legal Shared E2E tests - Android E2E tests - iOS

Automagically generate license acknowledgements for your React Native app and any Node.js project πŸš€

Android iOS AndroidTV tvOS
Android example iOS example AndroidTV example tvOS example

Documentation

You can find the full documentation for all packages in this repository at callstackincubator.github.io/react-native-legal.

Installation

React Native

yarn add react-native-legal

or

npm i --save react-native-legal

Standalone CLI

yarn add -D license-kit

or

npm i --save-dev license-kit

Node.js - API

yarn add -D @callstack/react-native-legal-shared

or

npm i --save-dev @callstack/react-native-legal-shared

Usage

This tool is split into 4 parts:

  • a React Native library that lets you display native screen with a list of all dependencies and their licenses
  • an Expo config plugin (for Expo projects) and a custom community cli plugin (for bare RN projects)
  • a standalone CLI tool that can be used in any Node.js project to generate license metadata
  • a shared package that exposes the core functionality of the license management tool, allowing customization of presentation logic in your Node.js scripts

I want to generate licenses in my Expo project

  1. Add the config plugin to the app.json/app.config.js
{
  "expo": {
    "plugins": [
+      "react-native-legal"
    ]
  }
}
  1. Use the library in the codebase
import * as React from 'react';
import { Button, View } from 'react-native';
import { ReactNativeLegal } from 'react-native-legal';

function launchNotice() {
  ReactNativeLegal.launchLicenseListScreen('OSS Notice');
}

function MyComponent() {
  return (
    <View>
      <Button onPress={launchNotice} text="Open source licenses" />
    </View>
  );
}
  1. Use Prebuild or EAS to build the app

I want to generate licenses reports in my bare RN project

  1. Invoke the CLI plugin from the root of your RN app
npx react-native legal-generate

or

yarn react-native legal-generate
  1. Use the library in the codebase
import * as React from 'react';
import { Button, View } from 'react-native';
import { ReactNativeLegal } from 'react-native-legal';

function launchNotice() {
  ReactNativeLegal.launchLicenseListScreen('OSS Notice');
}

function MyComponent() {
  return (
    <View>
      <Button onPress={launchNotice} text="Open source licenses" />
    </View>
  );
}

I want to generate licenses reports in my Node.js project

You can use the license-kit CLI tool to generate license reports in your Node.js project. Here's how to do it:

  1. Run the CLI tool from the root of your Node.js project:
npx license-kit report --format markdown --output ./public/licenses.md

or

yarn license-kit report --format markdown --output ./public/licenses.md

This will scan your project's dependencies and generate a license report in the specified format (JSON, Markdown, raw text, or AboutLibraries-compatible JSON metadata).

For a list of supported flags and the default values, run npx license-kit --help or read them documented in the package's README. To read more about a specific command, run npx license-kit <command> --help, e.g. npx license-kit report --help.

I want to customize the presentation of the licenses in my JS/TS project

You can use the @callstack/react-native-legal-shared package to access the core functionalities of the license management tool. To do so, please read the programmatic usage documentation.

Expo

  • βœ… You can use this library with Development Builds by adding react-native-legal to your app.json/app.config.js plugins array.
  • ❌ This library can't be used in the "Expo Go" app because it requires custom native code.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

Acknowledgements

  • AboutLibraries - collects and displays the license metadata for the Android app <3
  • LicensePlist - generates license metadata for the iOS app <3

License

MIT