Command Line Interface
The DeviceScript command line (CLI) allows to compile and debug programs from your favorite IDE. The CLI is also usable within containers (Docker, GitHub Codespaces, CodeSandbox, ...).
Setup
- install Node.JS 16+
- install the CLI
- npm
- Yarn
- pnpm
npm install @devicescript/cli@latest --save-dev
yarn add @devicescript/cli@latest --dev
pnpm add @devicescript/cli@latest --save-dev
The command tool is named devicescript
or devs
for short.
The full list of options for each command is available through the CLI by running devs help <command>
.
devs init [dir]
The init
commands creates or updates the necessary files to get syntax completion
and checking in DeviceScript project (typically from Visual Studio Code).
devs init myproject
The command will create the files under myproject
. A device script project will look as follows:
.devicescript/ reserved folder for devicescript generated files
package.json projet configuration
devsconfig.json configure the DeviceScript compiler with additional flags,
also used by VSCode extension to activate.
src/ directory for DeviceScript sources
src/main.ts usual name for your entry point application
src/tsconfig.json configure the TypeScript compiler to compile DeviceScript syntax
...
Make sure to keep the devsconfig.json
file even if it is empty.
It is used as a marker to activate the Visual Studio Code extension.
--force
By default, init
will not override existing tsconfig.json
. Using this flag, you can override this setting
and force refreshing that file.
devs init --force
--no-install
Do not run npm
or yarn
install after dropping the files.
--board board-id
Specify the device identifier to use for the project.
The generate will patch ./src/main.ts
and insert the board import statement.
devs add ...
The generated project by init
is barebone by design. The add
command can be used to
update the project with extra features. Each add command may require additional arguments.
add test
Configures the project to add DeviceScript unit tests.
devs add test
add board
Configures the project to add a custom device configuration (board
).
devs add board
add service
Configures the project to add custom services.
devs add service
add sim
Configures the project to add a Node.JS subproject that runs simulated devices.
devs add sim
add npm
Prepare the project to be published to npm.js as a library.
devs add npm
devs build
The build
command compiles the entry point file from the current project
using the resolution rules in tsconfig.json
. It is the default command.
devs build
custom services and boards
The command line will automatically compile markdown files under the services
folder (./services/*.md
)
into TypeScript client definition in node_modules/@devicescript/core/src/services.d.ts
.
--stats
The --stats
flag enables printing additional debugging information about code size,
and other useful metrics.
devs build --stats
devs devtools
The devtools
command launches the developer tool server, without trying to build a project.
devs devtools
build watch
To automatically rebuild your program based on file changes, add the file name.
devs devtools src/main.ts
When the build is run in watch mode, it also opens a developer tool web server that allows to execute the compiled program in a simulator or physical devices. Follow the console application instructions to open the web page.
--internet
To access the developer tools outside localhost, add --internet
devs devtools --internet
--usb, --serial, --spi
These flags tell the CLI to open native transports to USB, Serial or SPI devices. Each of these flags requires to install separate packages. These packages are not installed by default, as they typically have native dependencies and may not successfully install on all environments.
--usb
Uses usb package to communicate with USB devices.
- npm
- Yarn
- pnpm
npm install usb
devs devtools --usb
yarn add usb
devs devtools --usb
pnpm add usb
devs devtools --usb
--serial
Uses serialport package to communicate with USB devices.
- npm
- Yarn
- pnpm
npm install serialport
devs devtools --serial
yarn add serialport
devs devtools --serial
pnpm add serialport
devs devtools --serial
--spi
On Raspberry Pi, uses node-rpio and spi-dev.
- npm
- Yarn
- pnpm
npm install rpio spi-dev
devs devtools --spi
yarn add rpio spi-dev
devs devtools --spi
pnpm add rpio spi-dev
devs devtools --spi
devs flash
Command to flash the DeviceScript firmware onto a physical device. There are dedicated documentation pages to support various MCU architectures.
devs bundle
Bundle firmware, DeviceScript program, and settings into one image. Learn more