onnxruntime/js
Yulong Wang 009f342caf
[JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308)
* 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
2021-04-16 01:33:10 -07:00
..
.vscode [JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308) 2021-04-16 01:33:10 -07:00
common [JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308) 2021-04-16 01:33:10 -07:00
node [JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308) 2021-04-16 01:33:10 -07:00
.clang-format [JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308) 2021-04-16 01:33:10 -07:00
.eslintrc.js [JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308) 2021-04-16 01:33:10 -07:00
.gitignore [JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308) 2021-04-16 01:33:10 -07:00
package-lock.json [JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308) 2021-04-16 01:33:10 -07:00
package.json [JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308) 2021-04-16 01:33:10 -07:00
README.md [JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308) 2021-04-16 01:33:10 -07:00
tsconfig.json [JS] refactor Javascript/Typescript libraries in ONNX Runtime (#7308) 2021-04-16 01:33:10 -07:00

ONNX Runtime JavaScript API

This directory contains multiple NPM projects:

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 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.

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