Reason/OCaml PPX generating ReactIntl `id` from `defaultMessage`
npm install res-react-intl

Reason/OCaml PPX generating ReactIntl id _(short MD5)_ from defaultMessage.
Input:
``re
// Demo.re
open ReactIntl;
module Msg = {
[@intl.messages];
let hello = {defaultMessage: "Hello"};
};
[@react.component]
let make = () => {
};
`
Output:
`js
// Demo.bs.js
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE
'use strict'
var React = require('react')
var ReactIntl = require('react-intl')
var Msg = {
hello: {
id: '_8b1a9953',
defaultMessage: 'Hello',
},
}
function Demo(Props) {
return React.createElement(ReactIntl.FormattedMessage, {
id: '_0beb880a',
defaultMessage: 'Some default message',
})
}
var make = Demo
exports.Msg = Msg
exports.make = make
`
Install the PPX with yarn or npm
`bash`
yarn add res-react-intl bs-react-intlOr
npm install res-react-intl bs-react-intl
And add the PPX in your bsconfig.json file:
`json`
{
"bs-dependencies": ["bs-react-intl"],
"ppx-flags": ["res-react-intl/ppx"]
}
Extract the messages:
`bash`
res-react-intl-extract --allow-duplicates src
After cloning the repository, you should run both esy and yarn to installres-react-intl
dependencies. uses esy for managing the important dependencies,yarn
and is used solely for pre-commit linting/formatting of Reason files.
- esy build -> Builds the projectesy watch
- -> Watches for changes to Reason/OCaml files in the entire project, including in the /test directoryesy test_native
- -> Runs the native tests (in test/native)esy test_bs
- -> Runs the BuckleScript tests (in test/bucklescript)
1. Bump the version of the ppx in esy.json on master (we use semantic versioning)
2. Create and push a new tag
``
$ git checkout master
$ git tag vx.y.z
$ git push origin vx.y.z
3. Create detailed release notes for the new version, following the Added/Changed/Fixed/Removed` format. Note that the new version of the PPX will automatically be pushed to NPM and a release will be created on GitHub.