diff --git a/docs/tutorial/use-native-node-modules.md b/docs/tutorial/use-native-node-modules.md index e8918d5cfd9d..2aa13da3612d 100644 --- a/docs/tutorial/use-native-node-modules.md +++ b/docs/tutorial/use-native-node-modules.md @@ -15,14 +15,29 @@ $ apm install . 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. +## 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 -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 Node v0.11.x. Additionally -since atom-shell internally uses Node v0.11.9, it carries with the same problem. +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 Node v0.11.x. And +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. -[Many modules](https://www.npmjs.org/browse/depended/nan) do support both now. +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. 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. @@ -33,24 +48,24 @@ native modules. ### The node-gyp way -First you need to check which Node release atom-shell is carrying via -`process.version` (at the time of writing it is v0.10.5). Then you can -configure and build native modules via following commands: +To build Node modules with headers of atom-shell, you need to tell `node-gyp` +where to download headers and which version to use: ```bash $ 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 -`--target=0.10.5` is specifying Node's version. The `--dist-url=...` specifies -where to download the headers. +`--target=0.16.0` is version of atom-shell. The `--dist-url=...` specifies +where to download the headers. The `--arch=ia32` says the module is built for +32bit system. ### The npm way ```bash 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 HOME=~/.atom-shell-gyp npm install module-name ```