@ghini/demo-cmtjs-neon
v1.0.2
Published
这个项目很好的展示了如何兼容多种情况灵活导入:cjs mjs cts mts。虽然我建议js就走mjs路线,但还有不少资源使用其他方式写的;而此项目展示了精简核心,掌握就能更好理解其它所有类型配置。另附对rust构建底层的启蒙学习。处理这些协议问题,真是没什么获得感,做好记录,快速理清就好。
Downloads
44
Readme
手把手教程:
cd ./node_modules/demo-cmtjs-neon
node ./test.js
node ./lib/1.cjs
node ./lib/1.mjs
cd ../..
回到了根目录,创建js分别去测试require和import,了解会导入什么,核心能力是js和全平台兼容及使用rust写底层能力
这个项目很好的展示了如何兼容多种情况灵活导入:cjs mjs cts mts。虽然我建议js就走mjs路线,但还有不少资源使用其他方式写的;而此项目展示了精简核心,掌握就能更好理解其它所有类型配置。另附对rust构建底层的启蒙学习。处理这些协议问题,真是没什么获得感,做好记录,快速理清就好
使用neon的话,安装好rust cargo,跨linux平台安装cross docker,学会看package.json,找到相应指令build
创建新neon项目:npm create neon XXX ,当前平台使用选app即可(简单高效),需要全面兼容跨平台选lib(配置也会复杂的多,当前项目即是)
demo-cmtjs-neon
This project was bootstrapped by create-neon.
Building demo-cmtjs-neon
Building demo-cmtjs-neon requires a supported version of Node and Rust.
To run the build, run:
$ npm run build
This command uses the @neon-rs/cli utility to assemble the binary Node addon from the output of cargo
.
Exploring demo-cmtjs-neon
After building demo-cmtjs-neon, you can explore its exports at the Node console:
$ npm i
$ npm run build
$ node
> require('.').greeting()
{ message: 'hello node' }
Available Scripts
In the project directory, you can run:
npm run build
Builds the Node addon (index.node
) from source, generating a release build with cargo --release
.
Additional cargo build
arguments may be passed to npm run build
and similar commands. For example, to enable a cargo feature:
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 to cross-compile for another platform. Use the CARGO_BUILD_TARGET
environment variable to select the build target.
npm run release
Initiate a full build and publication of a new patch release of this library via GitHub Actions.
npm run dryrun
Initiate a dry run of a patch release of this library via GitHub Actions. This performs a full build but does not publish the final result.
npm test
Runs the unit tests by calling cargo test
. You can learn more about adding tests to your Rust code from the Rust book.
Project Layout
The directory structure of this project is:
demo-cmtjs-neon/
├── Cargo.toml
├── README.md
├── lib/
├── src/
| ├── index.mts
| └── index.cts
├── crates/
| └── demo-cmtjs-neon/
| └── src/
| └── lib.rs
├── platforms/
├── package.json
└── target/
| Entry | Purpose |
|----------------|------------------------------------------------------------------------------------------------------------------------------------------|
| Cargo.toml
| The Cargo manifest file, which informs the cargo
command. |
| README.md
| This file. |
| lib/
| The directory containing the generated output from tsc. |
| src/
| The directory containing the TypeScript source files. |
| index.mts
| Entry point for when this library is loaded via ESM import
syntax. |
| index.cts
| Entry point for when this library is loaded via CJS require
. |
| crates/
| The directory tree containing the Rust source code for the project. |
| lib.rs
| Entry point for the Rust source code. |
| platforms/
| The directory containing distributions of the binary addon backend for each platform supported by this library. |
| package.json
| The npm manifest file, which informs the npm
command. |
| target/
| Binary artifacts generated by the Rust build. |
Learn More
Learn more about: