bucklescriptbsb

How to use a reason module from local package


I’m looking for a way to use a local package (named bs-package) from my Reason React app (named ApplicationA).

bs-package has a single file within src folder called ModuleA.re :

let greet_me = (me) => Js.log("Hello, " ++ me ++ "!");

In ApplicationA I did :

npm install /path/to/bs-package

In node_modules bs-package now appears as symbolic link.

Then added bs-package to bs-dependencies in bsconfig

"bs-dependencies": [
    "reason-react",
    "bs-package",
],

Then run make world in ApplicationA

bsb -make-world 

Now in my Reason React app

ModuleA.greet_me("John");

Gives me

unbound module ModuleA

What am I missing ?

EDIT

Here is the config file of bs-package

It was created with

bsb -init bs-package -theme basic-reson

bsconfig.json

{
    "name": "bs-pacakge",
    "version": "0.1.0",
    "sources": {
        "dir" : "src",
        "subdirs" : true
    },
    "package-specs": {
        "module": "commonjs",
        "in-source": true
    },
    "suffix": ".bs.js",
    "bs-dependencies": [

    ],
    "warnings": {
        "error" : "+101"
    },
    "namespace": true,
    "refmt": 3
}

package.json

{
    "name": "bs-pacakge",
    "version": "0.1.0",
    "scripts": {
        "build": "bsb -make-world",
        "start": "bsb -make-world -w",
        "clean": "bsb -clean-world"
    },
    "keywords": [
        "BuckleScript"
    ],
    "author": "",
    "license": "MIT",
    "devDependencies": {
        "bs-platform": "^5.0.6"
    }
}

As suggested, bs-package is namespaced so this should work

BsPackage.ModuleA.greet_me("name")

But the same error appears

unbound module BsPackage


Solution

  • Apparently the bug came from my bs-platform version. I've just switch from version 6.2.1 to version 7.0.1 and everything works fine now (I'm on Windows).