/reason-expo

ReasonML bindings for Expo

Primary LanguageReason

Reason Expo Logo

reason-expo

ReasonML bindings for Expo


NPM version badge

Versioning

This library doesn't follow conventional semver. The version scheme is shown below, and you should track this library accordingly.

<ExpoVersion>.<Major>.<Minor/Patch>

Getting started

Use the Expo CLI to bootstrap a project with the ReasonExpo template.

expo init <PROJECT_NAME> --template expo-template-reason

Already have an existing Expo Project? Go into your project root & then install the requirements:

yarn add bs-platform --dev
yarn add reason-react reason-react-native reason-expo

Next, create a file named bsconfig.json at the same level at your package.json with the following content:

{
  "name": "my-reason-expo-app",
  "reason": {
    "react-jsx": 3
  },
  "bsc-flags": ["-bs-super-errors"],
  "bs-dependencies": ["reason-react", "reason-react-native", "reason-expo"],
  "sources": [
    {
      "dir": "src"
    }
  ],
  "suffix": ".bs.js",
  "refmt": 3,
  "package-specs": {
    "module": "es6",
    "in-source": true
  }
}

Next, add these scripts to your package.json:

  "build-reason": "bsb -make-world",
  "watch-reason": "bsb -make-world -w",
  "build-reason-clean": "bsb -clean-world -make-world",

Finally, make a folder named src and start writing your ReasonML code in there. yarn build-reason will compile the ReasonML code in that folder for you to import and use in your Expo app's JS/TS code.

Contributing

Fork this repo, clone it onto your machine, install run yarn in the root directory. Start the compiler and Expo test app with yarn dev in the root directory, and start hacking away at the files in packages/reason-expo and packages/test!

Credit: This project is based on the work started in bs-expo.