1.9.0 • Published 3 years ago
rescript-ssg v1.9.0
rescript-ssg
rescript-ssg is ReScript library to build static websites with React (rescript-react).
Features and basic info
- Simple. Everything is explicit and passed via function arguments.
- Designed to work with
bs-css/bs-emotion. - Designed to work with ES modules projects.
How it works?
- You create a separate React components for your pages.
rescript-ssgrenders HTML templates and creates ReScript-React app files from page components.- New ReScript files are feed to ReScript compiler.
- Webpack consumes rendered HTML + complied file to create a bundle per page and collect static assets.
Installation
npm install --save-dev rescript-ssgAdd rescript-ssg to bs-dependencies in your bsconfig.json:
{
"bs-dependencies": [
"rescript-ssg",
],
}Basic usage
- Create
Index.respage component:
@react.component
let make = () => {
<h1> React.string "Hello from index page" </h1>
}
// This helper call gets a filepath of this module
let modulePath = RescriptSsg.Utils.getFilepath()- Create
Pages.resfile where we'll define our pages array:
let currentDir = RescriptSsg.Utils.getDirname()
let outputDir = RescriptSsg.Path.join2(currentDir, "../build")
let index: RescriptSsg.PageBuilder.page = {
pageWrapper: None,
component: ComponentWithoutData(<Index />),
modulePath: Index.modulePath,
headCssFilepaths: [],
path: Root,
}
let pages = [index]- Create
Build.resfile. We'll pass this file torescript-ssgbinary to perform build.
let currentDir = RescriptSsg.Utils.getDirname()
let () = RescriptSsg.Commands.build(
~mode=Production,
~outputDir=Pages.outputDir,
~logLevel=Info,
~rescriptBinaryPath=Path.join2(currentDir, "../node_modules/.bin/rescript"),
~pages=Pages.pages,
(),
)- Create
Start.resfile. We'll pass this file torescript-ssgbinary to start dev mode.
let () = RescriptSsg.Commands.start(
~devServerOptions={listenTo: Port(9000), proxy: None},
~mode=Development,
~outputDir=Pages.outputDir,
~logLevel=Info,
~pages=Pages.pages,
(),
)- Make sure you have
"type": "module"inpackage.jsonand updatescriptsfield:
{
"type": "module",
"scripts": {
"build-rescript-ssg": "rescript-ssg src/Build.bs.js",
"start-rescript-ssg": "rescript-ssg src/Start.bs.js"
},
}- Update the
sourcesfield inbsconfig.json. We need to addoutputDirthere to compile intermediate React App files generated byrescript-ssg:
{
"sources": [
{
"dir": "build",
"type" : "dev",
"subdirs": true
}
],
}- Finally, we can run commands.
- To start development mode: Start ReScript compiler in a watch mode in the first terminal tab. Then run in a second tab:
npm run start-rescript-ssg- To build pages:
npm run build-rescript-ssg- After successfull build you'll see two directories in your specified output dir:
publicandtemp.publicdir is what you want to serve. It contains a bundle and static assets.
1.9.0
3 years ago
1.8.0
3 years ago
1.7.0
3 years ago
1.6.0
3 years ago
1.2.0
3 years ago
1.1.0
3 years ago
1.0.0
3 years ago
1.5.0
3 years ago
1.4.0
3 years ago
1.3.0
3 years ago
0.0.12
3 years ago
0.0.11-reason
3 years ago
0.0.10
3 years ago
0.0.10-reason
3 years ago
0.0.9-reason
3 years ago
0.0.8
3 years ago
0.0.8-reason
3 years ago
0.0.7
3 years ago
0.0.7-reason
3 years ago
0.0.5-reason
3 years ago
0.0.4-reason
3 years ago
0.0.4
3 years ago
0.0.3-reason
3 years ago
0.0.3
3 years ago
0.0.2-reason
3 years ago
0.0.2
3 years ago
0.0.1
3 years ago