npm package: @ghini/demo-cmtjs-neon
Description: 这个项目很好的展示了如何兼容多种情况灵活导入：cjs mjs cts mts。虽然我建议js就走mjs路线，但还有不少资源使用其他方式写的；而此项目展示了精简核心，掌握就能更好理解其它所有类型配置。另附对rust构建底层的启蒙学习。处理这些协议问题，真是没什么获得感，做好记录，快速理清就好。
Author: Ghini
Latest version: 1.0.2
Deprecated: Deprecate! use @ghini/xstart

手把手教程：  
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](https://www.npmjs.com/package/create-neon).

## Building demo-cmtjs-neon

Building demo-cmtjs-neon 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 demo-cmtjs-neon

After building demo-cmtjs-neon, you can explore its exports at the Node console:

```sh
$ 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`](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 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](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:

```
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](https://doc.rust-lang.org/cargo/reference/manifest.html), which informs the `cargo` command.                   |
| `README.md`    | This file.                                                                                                                               |
| `lib/`         | The directory containing the generated output from [tsc](https://typescriptlang.org).                                                    |
| `src/`         | The directory containing the TypeScript source files.                                                                                    |
| `index.mts`    | Entry point for when this library is loaded via [ESM `import`](https://nodejs.org/api/esm.html#modules-ecmascript-modules) syntax.       |
| `index.cts`    | Entry point for when this library is loaded via [CJS `require`](https://nodejs.org/api/modules.html#requireid).                          |
| `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](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).