Standardize native modules

This commit is contained in:
Jessica Lord 2015-08-31 19:22:06 -07:00
parent 6a2bd80a9a
commit be73388918

View file

@ -1,37 +1,40 @@
# Using native Node modules # Using Native Node Modules
The native Node modules are supported by Electron, but since Electron is The native Node modules are supported by Electron, but since Electron is
using a different V8 version from official Node, you have to manually specify using a different V8 version from official Node, you have to manually specify
the location of Electron's headers when building native modules. the location of Electron's headers when building native modules.
## Native Node module compatibility ## Native Node Module Compatibility
Since Node v0.11.x there were vital changes in the V8 API. So generally all Since Node v0.11.x there were vital changes in the V8 API. So generally all
native modules written for Node v0.10.x wouldn't work for newer Node or io.js versions. And native modules written for Node v0.10.x won't work for newer Node or io.js
because Electron internally uses __io.js v3.1.0__, it carries with the same versions. And because Electron internally uses __io.js v3.1.0__, it has the
problem. same problem.
To solve this, you should use modules that support Node v0.11.x or later, To solve this, you should use modules that support Node v0.11.x or later,
[many modules](https://www.npmjs.org/browse/depended/nan) do support both now. [many modules](https://www.npmjs.org/browse/depended/nan) do support both now.
For old modules that only support Node v0.10.x, you should use the For old modules that only support Node v0.10.x, you should use the
[nan](https://github.com/rvagg/nan) module to port it to v0.11.x or later versions of Node or io.js. [nan](https://github.com/rvagg/nan) module to port it to v0.11.x or later
versions of Node or io.js.
## How to install native modules ## How to Install Native Modules
Three ways to install native modules:
### The Easy Way ### The Easy Way
The most straightforward way to rebuild native modules is via the The most straightforward way to rebuild native modules is via the
[`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild) package, [`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild) package,
which handles the manual steps of downloading headers and building native modules: which handles the manual steps of downloading headers and building native modules:
```sh ```sh
npm install --save-dev electron-rebuild npm install --save-dev electron-rebuild
# Every time you run npm install, run this too # Every time you run npm install, run this
./node_modules/.bin/electron-rebuild ./node_modules/.bin/electron-rebuild
``` ```
### The node-gyp way ### The node-gyp Way
To build Node modules with headers of Electron, you need to tell `node-gyp` To build Node modules with headers of Electron, you need to tell `node-gyp`
where to download headers and which version to use: where to download headers and which version to use:
@ -46,9 +49,9 @@ The `HOME=~/.electron-gyp` changes where to find development headers. The
where to download the headers. The `--arch=x64` says the module is built for where to download the headers. The `--arch=x64` says the module is built for
64bit system. 64bit system.
### The npm way ### The npm Way
You can also use `npm` to install modules, the steps are exactly the same with You can also use `npm` to install modules. The steps are exactly the same with
Node modules, except that you need to setup some environment variables: Node modules, except that you need to setup some environment variables:
```bash ```bash