Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions locale/pt-br/knowledge/getting-started/npm/what-is-npm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
title: O que é o npm?
date: '2011-08-26T10:08:50.000Z'
tags:
- npm
difficulty: 1
layout: knowledge-post.hbs
---

`npm`, é a abreviação para Node Package Manager (Gerenciador de Pacotes do Node). O npm é duas coisas: em primeiro lugar, é um repositório online para a publicação de projetos Node.js de código aberto; segundo, é um utilitário por linha de comando para a interação com os repositórios mencionados, o que ajuda na instalação de pacotes, no versionamento de versões, e no gerenciamento de dependências. Uma infinidade de bibliotecas e aplicativos node.js são publicados no npm e muitos outros são adicionados todos os dias. Essas aplicações podem ser pesquisados ​​em https://www.npmjs.com/. Depois de ter pacote que você deseja instalar, ele pode ser instalado pela linha de comando com apenas um único comando.

Vamos dizer que você está trabalhando duro um dia, desenvolvendo uma Grande Aplicação. Você se depara com um problema, e decide que é hora de usar aquela biblioteca legal de que você está ouvindo falar - vamos usar o [async](http://github.com/caolan/async) do Caolan McMahon como exemplo. Felizmente, o `npm` é muito simples de usar: você só precisa executar `npm install async`, e o módulo especificado será instalado no diretório atual em `./node_modules/`. Uma vez instalado na sua pasta `node_modules`, você poderá usar o `require()` como se fosse um built-ins.

Vejamos um exemplo de instalação global - digamos que seja o `coffee-script`. O comando npm é simples: `npm install coffee-script -g`. Isto irá instalar o programa globalmente e colocar um link simbólico em `/usr/local/bin/`. Isso permitirá que você execute o programa a partir do console como qualquer outra ferramenta CLI. Neste caso, a execução de `coffee` permitirá que você use o REPL do coffee-script.

Outro uso importante do npm é o gerenciamento de dependências. Quando você tem um projeto node com um arquivo [package.json](/pt-br/knowledge/getting-started/npm/what-is-the-file-package-json), você pode executar `npm install` a partir da raiz do projeto e o npm irá instalar todas as dependências listadas no pacote.json. Isso torna a instalação de um projeto Node a partir de um repositório git muito mais fácil! Por exemplo, `vows`, um dos frameworks de teste do Node, pode ser instalado a partir do git, e sua dependência única, `eyes`, pode ser manipulada automaticamente:

Exemplo:

git clone https://github.com/cloudhead/vows.git
cd vows
npm install

Após executar estes comandos, você verá o diretório `node_modules` contendo todas as dependências do projeto especificadas em package.json.
59 changes: 59 additions & 0 deletions locale/pt-br/knowledge/getting-started/what-is-require.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
title: O que é o require?
date: '2011-08-26T10:08:50.000Z'
tags:
- npm
- core
- globals
- builtin
difficulty: 1
layout: knowledge-post.hbs
---

O Node.js segue o sistema de módulos CommomJS, e a função nativa `require` é a forma mais fácil de incluir módulos que existem em arquivos separados. A funcionalidade básica do `require` é que ele lê um arquivo javascript, executa o arquivo e então retorna o objeto `exports`. Um exemplo de módulo:

console.log("evaluating example.js");

var invisible = function () {
console.log("invisible");
}

exports.message = "hi";

exports.say = function () {
console.log(exports.message);
}

Então, se você executar `var example = require('./example.js')`, então o `example.js` será processado e, em seguida, `example` será um objeto igual a:

{
message: "hi",
say: [Function]
}

Se você quiser definir o objeto exportado para uma função ou um novo objeto, você tem que usar o objeto `module.exports`. Então, por exemplo:

module.exports = function () {
console.log("hello world")
}

require('./example2.js')() //requere ele mesmo e executa o objeto exportado.

Vale a pena notar que cada vez que você subseqüentemente requere um arquivo já requerido, o objeto `exports` é armazenado em cache e reutilizado. Para ilustrar este ponto:

node> require('./example.js')
avaliando example.js
{ message: 'hi', say: [Function] }
node> require('./example.js')
{ message: 'hi', say: [Function] }
node> require('./example.js').message = "hey" //atribuindo "hey" para message
'hey'
node> require('./example.js') //Pode-se pensar que isso "recarregaria" o arquivo...
{ message: 'hey', say: [Function] } //...mas a mensagem ainda é "hey" devido ao cache do módulo.

Como você pode ver acima, `example.js` é processado na primeira vez, mas todas as chamadas subsequentes para o `require()` invocam apenas o cache do módulo, em vez de ler o arquivo novamente. E como visto acima, isso pode ocasionalmente produzir efeitos colaterais.

As regras de onde o `require` localiza os arquivos podem ser um pouco complexas, mas uma simples regra é que se o arquivo não iniciar com "./" ou "/", ele é considerado um módulo central (e o caminho local do Node é verificado), ou uma dependência na pasta local `node_modules`. Se o arquivo começar com "./", ele será considerado um arquivo relativo para o arquivo que chamou o `require`. Se o arquivo começar com "/", ele será considerado um caminho absoluto.
NOTA: você pode omitir ".js" que o `require` irá anexá-lo automaticamente, se necessário. Para mais informações, consulte a [documentação oficial](https://nodejs.org/docs/v0.4.2/api/modules.htmll#all_Together...)

Uma nota extra: se o nome do arquivo passado para `require` for um diretório, ele procurará primeiro pelo `package.json` no diretório e carregará o arquivo referenciado na propriedade `main`. Caso contrário, ele irá procurar por um `index.js`.