mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-26 12:21:03 +00:00
fix: test
This commit is contained in:
87
rust/README.md
Normal file
87
rust/README.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# `@napi-rs/package-template`
|
||||
|
||||

|
||||
|
||||
> Template project for writing node packages with napi-rs.
|
||||
|
||||
# Usage
|
||||
|
||||
1. Click **Use this template**.
|
||||
2. **Clone** your project.
|
||||
3. Run `yarn install` to install dependencies.
|
||||
4. Run `yarn napi rename -n [@your-scope/package-name] -b [binary-name]` command under the project folder to rename your package.
|
||||
|
||||
## Install this test package
|
||||
|
||||
```bash
|
||||
yarn add @napi-rs/package-template
|
||||
```
|
||||
|
||||
## Ability
|
||||
|
||||
### Build
|
||||
|
||||
After `yarn build/npm run build` command, you can see `package-template.[darwin|win32|linux].node` file in project root. This is the native addon built from [lib.rs](./src/lib.rs).
|
||||
|
||||
### Test
|
||||
|
||||
With [ava](https://github.com/avajs/ava), run `yarn test/npm run test` to testing native addon. You can also switch to another testing framework if you want.
|
||||
|
||||
### CI
|
||||
|
||||
With GitHub Actions, each commit and pull request will be built and tested automatically in [`node@20`, `@node22`] x [`macOS`, `Linux`, `Windows`] matrix. You will never be afraid of the native addon broken in these platforms.
|
||||
|
||||
### Release
|
||||
|
||||
Release native package is very difficult in old days. Native packages may ask developers who use it to install `build toolchain` like `gcc/llvm`, `node-gyp` or something more.
|
||||
|
||||
With `GitHub actions`, we can easily prebuild a `binary` for major platforms. And with `N-API`, we should never be afraid of **ABI Compatible**.
|
||||
|
||||
The other problem is how to deliver prebuild `binary` to users. Downloading it in `postinstall` script is a common way that most packages do it right now. The problem with this solution is it introduced many other packages to download binary that has not been used by `runtime codes`. The other problem is some users may not easily download the binary from `GitHub/CDN` if they are behind a private network (But in most cases, they have a private NPM mirror).
|
||||
|
||||
In this package, we choose a better way to solve this problem. We release different `npm packages` for different platforms. And add it to `optionalDependencies` before releasing the `Major` package to npm.
|
||||
|
||||
`NPM` will choose which native package should download from `registry` automatically. You can see [npm](./npm) dir for details. And you can also run `yarn add @napi-rs/package-template` to see how it works.
|
||||
|
||||
## Develop requirements
|
||||
|
||||
- Install the latest `Rust`
|
||||
- Install `Node.js@10+` which fully supported `Node-API`
|
||||
- Install `yarn@1.x`
|
||||
|
||||
## Test in local
|
||||
|
||||
- yarn
|
||||
- yarn build
|
||||
- yarn test
|
||||
|
||||
And you will see:
|
||||
|
||||
```bash
|
||||
$ ava --verbose
|
||||
|
||||
✔ sync function from native code
|
||||
✔ sleep function from native code (201ms)
|
||||
─
|
||||
|
||||
2 tests passed
|
||||
✨ Done in 1.12s.
|
||||
```
|
||||
|
||||
## Release package
|
||||
|
||||
Ensure you have set your **NPM_TOKEN** in the `GitHub` project setting.
|
||||
|
||||
In `Settings -> Secrets`, add **NPM_TOKEN** into it.
|
||||
|
||||
When you want to release the package:
|
||||
|
||||
```bash
|
||||
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]
|
||||
|
||||
git push
|
||||
```
|
||||
|
||||
GitHub actions will do the rest job for you.
|
||||
|
||||
> WARN: Don't run `npm publish` manually.
|
||||
Reference in New Issue
Block a user