Skip to content

Commit

Permalink
Merge pull request #697 from neon-bindings/create-neon-readme
Browse files Browse the repository at this point in the history
create-neon README
  • Loading branch information
dherman authored Mar 12, 2021
2 parents c0d72cb + 98a8435 commit 5d1d659
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 1 deletion.
11 changes: 11 additions & 0 deletions create-neon/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Create Neon

The `create-neon` tool bootstraps [Neon](https://neon-bindings.com) projects, which allows developers to build binary Node modules written in [Rust](https://www.rust-lang.org).

## Usage

You can conveniently use this tool with the [`npm init`](https://docs.npmjs.com/cli/v7/commands/npm-init) syntax:

```sh
$ npm init neon my-project
```
106 changes: 105 additions & 1 deletion create-neon/data/templates/README.md.hbs
Original file line number Diff line number Diff line change
@@ -1,5 +1,109 @@
# {{package.name}}

{{#if package.description}}
{{package.description}}
**{{package.name}}:** {{package.description}}

{{/if}}
This project was bootstrapped by [create-neon](https://www.npmjs.com/package/create-neon).

## Installing {{package.name}}

Installing {{package.name}} requires a [supported version of Node and Rust](https://github.com/neon-bindings/neon#platform-support).

You can install the project with npm. In the project directory, run:

```sh
$ npm install
```

This fully installs the project, including installing any dependencies and running the build.

## Building {{package.name}}

If you have already installed the project and only want to run the build, run:

```sh
$ npm run build
```

This command uses the [cargo-cp-artifact](https://github.com/neon-bindings/cargo-cp-artifact) utility to run the Rust build and copy the built library into `./index.node`.

## Exploring {{package.name}}

After building {{package.name}}, you can explore its exports at the Node REPL:

```sh
$ npm install
$ 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 build`

Builds the Node addon (`index.node`) from source.

### `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:

```
{{package.name}}/
├── Cargo.toml
├── README.md
├── index.node
├── package.json
├── src/
| └── lib.rs
└── target/
```

### Cargo.toml

The Cargo [manifest file](https://doc.rust-lang.org/cargo/reference/manifest.html), which informs the `cargo` command.

### README.md

This file.

### index.node

The Node addon—i.e., a binary Node module—generated by building the project. This is the main module for this package, as dictated by the `"main"` key in `package.json`.

Under the hood, a [Node addon](https://nodejs.org/api/addons.html) is a [dynamically-linked shared object](https://en.wikipedia.org/wiki/Library_(computing)#Shared_libraries). The `"build"` script produces this file by copying it from within the `target/` directory, which is where the Rust build produces the shared object.

### package.json

The npm [manifest file](https://docs.npmjs.com/cli/v7/configuring-npm/package-json), which informs the `npm` command.

### src/

The directory tree containing the Rust source code for the project.

### src/lib.rs

The Rust library's main module.

### target/

Binary artifacts generated by the Rust build.

## Learn More

To learn more about Neon, see the [Neon documentation](https://neon-bindings.com).

To learn more about Rust, see the [Rust documentation](https://www.rust-lang.org).

To learn more about Node, see the [Node documentation](https://nodejs.org).

0 comments on commit 5d1d659

Please sign in to comment.