docs: Now atom-shell's version should be used when building modules.

This commit is contained in:
Cheng Zhao 2014-09-08 15:07:33 +08:00
parent eb55f1cf47
commit add4e3c6f5

View file

@ -15,14 +15,29 @@ $ apm install .
But you should notice that `apm install module` won't work because it will But you should notice that `apm install module` won't work because it will
install a user package for [Atom Editor](https://github.com/atom/atom) instead. install a user package for [Atom Editor](https://github.com/atom/atom) instead.
## Which version of apm to use
Generally using the latest release of `apm` for latest atom-shell always works,
but if you are uncertain of the which version of `apm` to use, you may manually
instruct `apm` to use headers of a specified version of atom-shell by setting
the `ATOM_NODE_VERSION` environment.
For example force installing modules for atom-shell v0.16.0:
```bash
$ export ATOM_NODE_VERSION=0.16.0
$ apm install .
```
## Native Node module compatibility ## Native Node module compatibility
Since Node v0.11.x there were vital changes in the V8 API. So generally all native Since Node v0.11.x there were vital changes in the V8 API. So generally all
modules written for Node v0.10.x wouldn't work for Node v0.11.x. Additionally native modules written for Node v0.10.x wouldn't work for Node v0.11.x. And
since atom-shell internally uses Node v0.11.9, it carries with the same problem. because atom-shell internally uses Node v0.11.13, it carries with the same
problem.
To solve this, you should use modules that support both Node v0.10.x and v0.11.x. To solve this, you should use modules that support Node v0.11.x,
[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. [nan](https://github.com/rvagg/nan) module to port it to v0.11.x.
@ -33,24 +48,24 @@ native modules.
### The node-gyp way ### The node-gyp way
First you need to check which Node release atom-shell is carrying via To build Node modules with headers of atom-shell, you need to tell `node-gyp`
`process.version` (at the time of writing it is v0.10.5). Then you can where to download headers and which version to use:
configure and build native modules via following commands:
```bash ```bash
$ cd /path-to-module/ $ cd /path-to-module/
$ HOME=~/.atom-shell-gyp node-gyp rebuild --target=0.10.5 --arch=ia32 --dist-url=https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist $ HOME=~/.atom-shell-gyp node-gyp rebuild --target=0.16.0 --arch=ia32 --dist-url=https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist
``` ```
The `HOME=~/.atom-shell-gyp` changes where to find development headers. The The `HOME=~/.atom-shell-gyp` changes where to find development headers. The
`--target=0.10.5` is specifying Node's version. The `--dist-url=...` specifies `--target=0.16.0` is version of atom-shell. The `--dist-url=...` specifies
where to download the headers. where to download the headers. The `--arch=ia32` says the module is built for
32bit system.
### The npm way ### The npm way
```bash ```bash
export npm_config_disturl=https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist export npm_config_disturl=https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist
export npm_config_target=0.10.5 export npm_config_target=0.6.0
export npm_config_arch=ia32 export npm_config_arch=ia32
HOME=~/.atom-shell-gyp npm install module-name HOME=~/.atom-shell-gyp npm install module-name
``` ```