# ONNX Runtime JavaScript API This directory contains multiple NPM projects: - [onnxruntime-common](#onnxruntime-common) - [onnxruntime-node](#onnxruntime-node) - [onnxruntime-web](#onnxruntime-web) - [onnxruntime-react-native](#onnxruntime-react-native) ### Development This folder contains a `.vscode` folder for Visual Studio Code workspace configs. Using VSCode to open this folder will allow code-formatting and linting features on typescript and C/C++ source code inside this folder. Following files are used for code-formatting and linting features for developers: - .vscode/\*\* - package.json - packages-lock.json - .eslintrc.js - .clang-format #### Using VSCode: 1. in `/js`, run: > npm ci 2. use VSCode to open folder `/js` 3. install VSCode extension if not installed yet: - Clang-Format - ESLint To populate typescript type declarations, in each projects, run `npm ci`. ## onnxruntime-common > language: typescript > dependency: > folder: /js/common This project is designed to include all "common" code, which are pure javascript that can run in both Node.js and browsers. ### Requirements Node.js v12+ (recommended v14+) ### Build Use following command in folder `/js/common` to install NPM packages, build typescript files and generate bundles: ``` npm ci ``` ### Distribution It should be able to consumed by both from projects that uses NPM packages (through a Node.js folder structure of `node_modules` folder that generated by `npm install onnxruntime-common`) and from a CDN service that serves a `.min.js` bundle file. ### Features Following features are included in `onnxruntime-common`: - `InferenceSession` interfaces - `Tensor`/`OnnxValue` interfaces, implementation and a set of utility functions - `Backend` interfaces and a set of functions for backend registration ## onnxruntime-node > language: typescript/C++ > dependency: onnxruntime-common, ONNXRuntime.dll > folder: /js/node This project is designed to be used as a NPM package to enable Node.js users to consume ONNX Runtime via Node.js binding, in Node.js or any Node.js compatible environment. ### Requirements Node.js v12+ (recommended v14+) ### Build #### Build ONNX Runtime and Node.js binding Follow [instructions](https://www.onnxruntime.ai/docs/how-to/build.html#apis-and-language-bindings) for building ONNX Runtime Node.js binding #### Build Node.js binding only Use following command in folder `/js/node` to install NPM packages and build typescript files: ``` npm ci ``` This will download the latest pre-built ONNX Runtime binaries for the current platform. ### Distribution It should be able to consumed by from projects that uses NPM packages (through a Node.js folder structure of `node_modules` folder that generated by `npm install onnxruntime-node`). ## onnxruntime-web > language: typescript > dependency: onnxruntime-common, onnxruntime_wasm.wasm > folder: /js/web NOTE: This is the successor of ONNX.js. It should be able to consumed by both from projects that uses NPM packages (through a Node.js folder structure of `node_modules` folder that generated by `npm install onnxruntime-web`) and from a CDN service that serves a `.min.js` file and one or multiple `.wasm` file(s). ## onnxruntime-react-native TBD