mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 21:47:02 +00:00
93 lines
3.6 KiB
Markdown
93 lines
3.6 KiB
Markdown
# revolt.node
|
|
|
|
**revolt.node:** Node.js bindings for the Revolt software
|
|
|
|
This project was bootstrapped by [create-neon](https://www.npmjs.com/package/create-neon).
|
|
|
|
## Building revolt.node
|
|
|
|
Building revolt.node requires a [supported version of Node and Rust](https://github.com/neon-bindings/neon#platform-support).
|
|
|
|
To run the build, run:
|
|
|
|
```sh
|
|
$ npm run build
|
|
```
|
|
|
|
This command uses the [@neon-rs/cli](https://www.npmjs.com/package/@neon-rs/cli) utility to assemble the binary Node addon from the output of `cargo`.
|
|
|
|
## Exploring revolt.node
|
|
|
|
After building revolt.node, you can explore its exports at the Node console:
|
|
|
|
```sh
|
|
$ npm i
|
|
$ npm run build
|
|
$ node
|
|
> require('.').hello()
|
|
'hello node'
|
|
```
|
|
|
|
## Available Scripts
|
|
|
|
In the project directory, you can run:
|
|
|
|
#### `npm install`
|
|
|
|
Installs the project, including running `npm run build`.
|
|
|
|
#### `npm run build`
|
|
|
|
Builds the Node addon (`index.node`) from source, generating a release build with `cargo --release`.
|
|
|
|
Additional [`cargo build`](https://doc.rust-lang.org/cargo/commands/cargo-build.html) arguments may be passed to `npm run build` and similar commands. For example, to enable a [cargo feature](https://doc.rust-lang.org/cargo/reference/features.html):
|
|
|
|
```
|
|
npm run build -- --feature=beetle
|
|
```
|
|
|
|
#### `npm run debug`
|
|
|
|
Similar to `npm run build` but generates a debug build with `cargo`.
|
|
|
|
#### `npm run cross`
|
|
|
|
Similar to `npm run build` but uses [cross-rs](https://github.com/cross-rs/cross) to cross-compile for another platform. Use the [`CARGO_BUILD_TARGET`](https://doc.rust-lang.org/cargo/reference/config.html#buildtarget) environment variable to select the build target.
|
|
|
|
#### `npm test`
|
|
|
|
Runs the unit tests by calling `cargo test`. You can learn more about [adding tests to your Rust code](https://doc.rust-lang.org/book/ch11-01-writing-tests.html) from the [Rust book](https://doc.rust-lang.org/book/).
|
|
|
|
## Project Layout
|
|
|
|
The directory structure of this project is:
|
|
|
|
```
|
|
revolt.node/
|
|
├── Cargo.toml
|
|
├── README.md
|
|
├── src/
|
|
| └── lib.rs
|
|
├── index.node
|
|
├── package.json
|
|
└── target/
|
|
```
|
|
|
|
| Entry | Purpose |
|
|
|----------------|------------------------------------------------------------------------------------------------------------------------------------------|
|
|
| `Cargo.toml` | The Cargo [manifest file](https://doc.rust-lang.org/cargo/reference/manifest.html), which informs the `cargo` command. |
|
|
| `README.md` | This file. |
|
|
| `src/` | The directory tree containing the Rust source code for the project. |
|
|
| `lib.rs` | Entry point for the Rust source code. |
|
|
| `index.node` | The main module, a [Node addon](https://nodejs.org/api/addons.html) generated by the build and pointed to by `"main"` in `package.json`. |
|
|
| `package.json` | The npm [manifest file](https://docs.npmjs.com/cli/v7/configuring-npm/package-json), which informs the `npm` command. |
|
|
| `target/` | Binary artifacts generated by the Rust build. |
|
|
|
|
## Learn More
|
|
|
|
Learn more about:
|
|
|
|
- [Neon](https://neon-bindings.com).
|
|
- [Rust](https://www.rust-lang.org).
|
|
- [Node](https://nodejs.org).
|