Command-line toolkit and runtime that takes EO XMIR + eo-foreign.json
(usually in .eoc/) and turns them into a Node.js project you can run or
test. It does not read .eo directly — you must generate XMIR first.
Built and tested with EO version 0.49.0
(eo2js/test/mvnw/eo-version.txt).
Using other versions may lead to unpredictable results.
- Node.js 20+ and npm
- Java + Maven (if you generate XMIR via
eo-maven-plugin; other EO toolchains likeeocare fine too)
npm install -g eo2jsUse any EO toolchain to compile .eo into .eoc.
Example with EO Maven plugin:
mvn org.eolang:eo-maven-plugin:register \
org.eolang:eo-maven-plugin:parse \
org.eolang:eo-maven-plugin:optimize \
org.eolang:eo-maven-plugin:shake \
org.eolang:eo-maven-plugin:lint \
-Deo.sourcesDir=src \
-Deo.targetDir=.eoc \
-Deo.failOnWarning=falseAfter that, .eoc/eo-foreign.json and XMIR files are ready for eo2js.
transpile— convert XMIR fromeo-foreign.jsonto JS under<target>/<project>link— build npm project (package.json, deps,__main__.js)dataize <object> [args...]— transpile+link (unless--alone) and run the EO objecttest— transpile+link (unless--alone) and run EO tests generated from XMIR with+tests
Common options: -t/--target .eoc dir (default .eoc), -p/--project
JS subdir (default project), -f/--foreign path to eo-foreign.json
(default eo-foreign.json in target), -r/--resources path to eo2js resources
(only needed when running from a clone), -d/--dependency path to local
eo2js-runtime, --alone to skip automatic prerequisites.
# After generating .eoc:
eo2js dataize org.eo2js.demo.main -t .eoc -p project
# If transpile/link already done:
eo2js dataize org.eo2js.demo.main --alone -t .eoc -p projectIf you use the defaults (.eoc and project), you can omit -t/-p.
Create hello/main.eo (any folder name is fine):
+package hello
+home https://example.com
+version 0.1.0
[] > main
"Hello from eo2js!" > @
Compile to .eoc from the folder where hello/ lives:
mvn org.eolang:eo-maven-plugin:register \
org.eolang:eo-maven-plugin:parse \
org.eolang:eo-maven-plugin:optimize \
org.eolang:eo-maven-plugin:shake \
org.eolang:eo-maven-plugin:lint \
-Deo.sourcesDir=hello \
-Deo.targetDir=.eoc \
-Deo.failOnWarning=falseThen run via eo2js:
eo2js dataize hello.main -t .eoc -p projectNODE_PATH=eo2js/node_modules \
node eo2js/src/eo2js.js dataize org.eo2js.demo.main \
-t readme-demo/.eoc -p project \
-r eo2js/src/resources \
-d eo2js-runtime(-r/-d point to local resources/runtime; omit if installed globally.)
First, run npm install. Then, run npm test. All tests should pass.
Make your changes and then make a pull request.