mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-18 21:21:17 +00:00
* working on re-organizing js code for ortweb * remove dup files * move folder * fix common references * fix common es5 * add webpack to common * split interfact/impl * use cjs for node * add npmignore for common * update sourcemap config for common * update node * adjust folder/path in CI and build * update folder * nit: readme * add bundle for dev * correct nodejs paths * enable ORT_API_MANUAL_INIT * set name for umd library * correct name for commonjs export * add priority into registerBackend() * fix npm ci pwd * update eslintrc * revise code * revert package-lock lockfileVersion 2->1 * update prebuild * resolve comments * update document * revise eslint config * update eslint for typescript rules * revert changes by mistake in backend.ts * add env * resolve comments
119 lines
3.4 KiB
Markdown
119 lines
3.4 KiB
Markdown
# 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 `<ORT_ROOT>/js`, run:
|
|
> npm ci
|
|
2. use VSCode to open folder `<ORT_ROOT>/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: <ORT_ROOT>/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 `<ORT_ROOT>/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: <ORT_ROOT>/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 `<ORT_ROOT>/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: <ORT_ROOT>/js/web
|
|
|
|
NOTE: This is the successor of ONNX.js.
|
|
|
|
<!-- TODO: update this section for onnxruntime web -->
|
|
|
|
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
|
|
|
|
<!-- TODO: update this section for onnxruntime react-native -->
|