Setting up a ReasonReact project
To create a new ReasonReact project, run the following command:
bsb -init my-reason-react-app -theme react
cd my-reason-react-app
After opening our text editor, we see that a couple of things have changed. The package.json file lists the relevant React and webpack dependencies. Let's install them:
npm install
We also have the following webpack-related npm scripts:
"webpack": "webpack -w",
"webpack:production": "NODE_ENV=production webpack"
In bsconfig.json, we have a new field that turns on JSX for ReasonReact:
"reason": {
"react-jsx": 2
},
We have a simple webpack.config.js file:
const path = require("path");
const outputDir = path.join(__dirname, "build/");
const isProd = process.env.NODE_ENV === "production";
module.exports = {
entry: "./src/Index.bs.js",
mode: isProd ? "production" : "development",
output: {
path: outputDir,
publicPath: outputDir,
filename: "Index.js"
}
};
Note how the configured entry point is "./src/Index.bs.js", which makes sense since, by default, "in-source" is set to true in bsconfig.json. The rest is just normal webpack stuff.
To run this project, we need to run both bsb and webpack:
npm start
/* in another shell */
npm run webpack
/* in another shell */
php -S localhost:3000
Since the index.html file is located within the src directory, we visit http://localhost:3000/src to see the default application.