# Usando Módulos Nativos do Node

Os módulos nativos do Node são suportados pelo Electron, desde que o Electron
esteja usando uma versão diferente da oficial V8 do Node, você tem de
especificar manualmente a localização das headers do Electron quando compilar os
módulos nativos.

## Compatibilidade de Módulos Nativos do Node

Módulos nativos podem quebrar quando utilizar a nova versão do Node, V8.
Para ter certeza que o módulo que você está interessado em trabalhar com o 
Electron, você deve checar se a versão do Node utilizada é compatível com a
usada pelo Electron.
Você pode verificar qual versão do Node foi utilizada no Electron olhando na
página [releases](https://github.com/atom/electron/releases) ou usando
`process.version` (veja [Quick Start](https://github.com/atom/electron/blob/master/docs/tutorial/quick-start.md)
por exemplo).

Considere usar [NAN](https://github.com/nodejs/nan/) para seus próprios
módulos, caso isso facilite o suporte da múltiplas versões do Node. Isso é
também de grande ajuda para fazer a portabilidade dos módulos antigos para as
versões mais novas do Node, assim podendo trabalhar com o Electron.

## Como Instalar os Módulos Nativos

Existem três maneiras de instalar os módulos nativos:

### O Modo Fácil

O modo mais direto para recompilar os módulos é pelo pacote
[`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild),
o que lida com passos manuais para baixar as headers e construir os módulos
nativos:

```sh
npm install --save-dev electron-rebuild

# Sempre que rodar npm install, execute também:
node ./node_modules/.bin/electron-rebuild
```

### Via npm

Você pode usar também `npm` para instalar os módulos. Os passos são exatamente
os mesmos com os módulos Node, exceto que você precisa configurar algumas
variáveis da ambiente:

```bash
export npm_config_disturl=https://atom.io/download/atom-shell
export npm_config_target=0.33.1
export npm_config_arch=x64
export npm_config_runtime=electron
HOME=~/.electron-gyp npm install module-name
```

### O modo node-gyp

Para compilar os módulos do Node com as headers do Electron, você precisa dizer
ao `node-gyp` onde baixar as headers e qual versão usar:

```bash
$ cd /path-to-module/
$ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/atom-shell
```

A tag `HOME=~/.electron-gyp` altera onde encontrar as headers de desenvolvimento.
A tag `--target=0.29.1` é a versão do Electron. A tag `--dist-url=...` especifica
onde baixar as headers. A tag `--arch=x64` diz ao módulo que é feito em 64bit.
