Articles

npm-install

Tabela de conteúdos

Sinopse

npm install (sem args, no pacote dir)
npm install <nome>
npm install <nome><tag>
npm install <nome><versão>
npm install <nome>/div>@<intervalo de versão>
npm install <alias>@npm:<nome>
npm install <git-hosting>div>:<git-user><repo-name>
npm install <git repo url>
npm install <arball file>
npm install <tarball url>
npm install <folder>
pseudónimos: npm i, npm add
opções comuns:

Descrição

Este comando instala um pacote, e quaisquer pacotes dos quais dependa. Se o pacote tiver um ficheiro de pacote ou de película retráctil, a instalação de dependências será impulsionada por isso, com um npm-shrinkwrap.json tendo precedência se ambos os ficheiros existirem. Ver package-lock.json e npm shrinkwrap.

A package is:

  • a) uma pasta contendo um programa descrito por um package.json file
  • b) um gzipped tarball contendo (a)
  • c) uma url que resolve (b)
  • d) a <name>@<version> que é publicada no registo (ver registry) com (c)
  • e) a <name>@<tag> (ver npm dist-tag) que aponta para (d)
  • f) a <name> que tem uma etiqueta "mais recente" que satisfaz (e)
  • g) a <git remote url> que resolve a (a)

Even se nunca publicar o seu pacote, pode ainda obter muitos benefícios de usar npm se quiser apenas escrever um programa de nó (a), e talvez se quiser também ser capaz de o instalar facilmente noutro local, embalando-o num tarball (b).

  • npm install (no directório de pacotes, sem argumentos):

    Instale as dependências na pasta local de módulos_de_nó.

    No modo global (isto é, com -g ou --global anexado ao comando),instala o contexto do pacote actual (isto é, o directório de trabalho actual) como um pacote global.

    Por defeito, npm install instalará todos os módulos listados como dependências em package.json.

    Com o --production flag (ou quando o NODE_ENV variável de ambiente é definido para production), npm não instalará os módulos listados em devDependencies. Para instalar todos os módulos listados em ambos dependenciese devDependencies quando NODE_ENV variável de ambiente está definido para production,pode usar --production=false.

    NOTE: A bandeira --production não tem significado particular quando se acrescenta adeptos a um projecto.

  • npm install <folder>:

    Instalar o pacote no directório como um link simbólico no projecto actual. As suas dependências serão instaladas antes de serem ligadas. Se <folder> sitsinside the root of your project, as suas dependências podem ser içadas para thetoplevel node_modules como seriam para outros tipos de dependências.

  • npm install <tarball file>:

    instalar um pacote que se encontra no sistema de ficheiros. Nota: se quiser apenas ligar um directório dev à sua raiz npm, pode fazê-lo mais facilmente utilizando .

    Requisitos de tarball:

    • O nome do ficheiro deve usar .tar.tar.gz, ou .tgz à extensão.

    • p> O conteúdo da embalagem deve residir numa subpasta dentro do tarball (normalmente é chamado package/). npm retira uma camada de directório ao instalar o pacote (um equivalente de tar x --strip-components=1 é executado).
    • O pacote deve conter um package.json ficheiro com name e version propriedades.

      Exemplo:

      npm install ./package.tgz

  • npm install <tarball url>:

    p>>p> Vai buscar a url de tarball, e depois instala-a. A fim de distinguir esta e outras opções, o argumento deve começar com "http://" ou "https://"

    Exemplo:

    npm install https://github.com/indexzero/forever/tarball/v0.5.6

  • npm install <name>:

    Faz um <name>@<tag> instalar, onde <tag> é a configuração "tag". (Seeconfig. O valor por defeito da configuração é latest.)

    Na maioria dos casos, isto instalará a versão dos módulos marcados comolatest no registo npm.

    Exemplo:

    npm install sax

    npm install <alias>@npm:<name>:

    Instalar um pacote sob um pseudónimo personalizado. Permite múltiplas versões de pacotes com o mesmo nome lado a lado, nomes de importação mais convenientes para pacotes com outros longos e usando como substitutos os garfos ou pacotes bifurcados npm. O aliasing funciona apenas no seu projecto e não renomeia pacotes em dependências transitivas. Os aliases devem seguir as convenções de nomenclatura indicadas emvalidate-npm-package-name.

    Exemplos:

    npm install my-react@npm:react
    npm install jquery2@npm:jquery@2
    npm install jquery3@npm:jquery@3
    npm install npa@npm:npm-package-arg

`npm install` guarda quaisquer pacotes especificados em `dependências` por defeito.
Adicionalmente, pode controlar onde e como são guardados com algumas
bandeiras adicionais:
div>* `-P, --save-prod`: O pacote aparecerá nas suas `dependências`. Esta é a
default a menos que `-D` ou `-O` estejam presentes.
* `-D, --save-dev`: O pacote aparecerá na sua `devDependências`.
* `-O, --save-opcional`: O pacote aparecerá no seu `optionalDependencies`.
* `--no-save-save': Impede salvar para `dependências`.
quando utilizar qualquer uma das opções acima para salvar dependências para o seu
package.json, existem duas bandeiras adicionais opcionais:
* `-E, --save-exact`: As dependências guardadas serão configuradas com um
versão exacta em vez de utilizar o intervalo de semver padrão de npm
operador.
div>* `-B, --save-bundle`: As dependências guardadas também serão adicionadas à sua lista de "dependências-bundleDependencies".
Further, se tiver um `npm-shrinkwrap.json` ou `package-lock'.json` então it
também será actualizado.
<scopo>` é opcional. O pacote será descarregado do registo
associado com o âmbito especificado. Se nenhum registo estiver associado a
o âmbito dado, o registo padrão é assumido. Ver (/cli/v6/using-npm/scope).
Note: se não incluir o @-symbol no nome do seu scope, npm irá
interpretar isto como um repositório GitHub, ver abaixo. Os nomes dos âmbitos
devem também ser seguidos de uma barra oblíqua.
Exemplos:
```bash
npm install sax
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-toque --guardar-dev
npm install dtrace-provider --save-opcional
npm install readable-stream --save-exacto
npm install ansi-regex --save-bundle
```
**Nota***: Se houver um ficheiro ou pasta chamado `<nome>` no actual
directório de trabalho, então tentará instalar isso, e só tentará
fetar o pacote pelo nome se não for válido.

  • npm install <name>@<tag>:

    instalar a versão do pacote que é referenciada pela etiqueta especificada.Se a etiqueta não existir nos dados de registo para esse pacote, então isto falhará.

    Exemplo:

    npm install sax@latest
    npm install @myorg/mypackage@latest

  • npm install <name>@<version>:

    Instalar a versão especificada do pacote. Isto irá falhar se a versão não tiver sido publicada no registo.

    Exemplo:

    npm install [email protected]
    npm install @myorg/[email protected]

  • npm install <name>@<version range>:

    instalar uma versão do pacote que corresponda à gama de versões especificada. Isto seguirá as mesmas regras para resolver as dependências descritas em package.json.

    Note que a maioria dos intervalos de versão devem ser colocados entre aspas para que a sua concha a trate como um único argumento.

    Exemplo:

    npm install sax@"><0.2.0"
    npm install @myorg/privatepackage@"><0.2.0"
  • npm install <git remote url>:

    p> instala o pacote a partir do fornecedor de git hospedado, clonando-o com git.Para uma url remota de git completa, apenas essa URL será tentada.

    <protocolo><hostname><path>

    <protocol> é um dos gitgit+sshgit+httpgit+https, ougit+file.

    Se #<commit-ish> for fornecido, será utilizado para clonar exactamente esse compromisso. Se o commit-ish tiver o formato #semver:<semver><semver> pode ser qualquer intervalo de semver válido ou versão exacta, e npm procurará quaisquer tags ou refs que correspondam a esse intervalo no repositório remoto, tal como o faria para a dependência de aregistros. Se nem #<commit-ish> nem #semver:<semver> for especificado, então o ramo padrão do repositório é utilizado.

    Se o repositório fizer uso de submódulos, esses submódulos serão bem clonados.

    Se o pacote a ser instalado contém um prepare script, o seudependencies e devDependencies será instalado, e o prepareescript será executado, antes de o pacote ser embalado e instalado.

    As seguintes variáveis de ambiente de git são reconhecidas por npm e serão adicionadas ao ambiente quando o git for executado:

    • GIT_ASKPASS

    • >p>GIT_EXEC_PATH
    • GIT_PROXY_COMMAND

    • >p>>GIT_SSH
    • GIT_SSH_COMMAND

    • GIT_SSL_CAINFO

    • GIT_SSL_NO_VERIFY

      Ver a página do homem idiota para detalhes.

      Exemplos:

      npm install git+ssh://[email protected]:npm/cli.git#v1.0.27
      npm install git+ssh://[email protected]:npm/cli#semver:^5.0
      npm install git+https://[email protected]/npm/cli.git
      npm install git://github.com/npm/cli.git#v1.0.27
      GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://[email protected]:npm/cli.git

  • p>npm install <githubname>/<githubrepo>:

  • npm install github:<githubname>/<githubrepo>

:

instalar a embalagem em https://github.com/githubname/githubrepo tentando cloná-la usando git.

Se #<commit-ish> for fornecido, será utilizado para clonar exactamente esse compromisso. Se o commit-ish tiver o formato #semver:<semver><semver> pode ser qualquer intervalo de semver válido ou versão exacta, e npm procurará quaisquer tags ou refs correspondentes a esse intervalo no repositório remoto, tal como o faria para a dependência de aregistros. Se nem #<commit-ish> nem #semver:<semver> for especificado, então master é utilizado.

como nas dependências git normais, dependencies e devDependencies será instalado se o pacote tiver um script prepare, antes de o pacote ser instalado.

Exemplos:

npm install mygithubuser/myproject
npm install github:mygithubuser/myproject

  • npm install gist:<gistID>:

    p> Instalar o pacote em https://gist.github.com/gistID tentando tocloneá-lo usando git. O nome de utilizador do GitHub associado ao gist é opcional e não será guardado em package.json.

    como nas dependências regulares do git, dependencies e devDependencies será instalado se o pacote tiver um script prepare, antes de o pacote ser instalado.

    Exemplo:

    npm install gist:

  • npm install bitbucket:<bitbucketname>/<bitbucketrepo>:

    instalar o pacote em https://bitbucket.org/bitbucketname/bitbucketrepo tentando cloná-lo usando git.

    Se #<commit-ish> for fornecido, será utilizado para clonar exactamente esse compromisso. Se o commit-ish tiver o formato #semver:<semver><semver> pode ser qualquer intervalo de semver válido ou versão exacta, e npm procurará quaisquer tags ou refs correspondentes a esse intervalo no repositório remoto, tal como o faria para a dependência de aregistros. Se nem #<commit-ish> nem #semver:<semver> for especificado, então master é utilizado.

    como nas dependências git regulares, dependencies e devDependencies será instalado se o pacote tiver um script prepare, antes de o pacote ser instalado.

    Exemplo:

    npm install bitbucket:mybitbucketuser/myproject

  • :

    instalar o pacote em https://gitlab.com/gitlabname/gitlabrepo tentando cloná-lo usando git.

    Se #<commit-ish> for fornecido, será utilizado para clonar exactamente esse compromisso. Se o commit-ish tiver o formato #semver:<semver><semver> pode ser qualquer intervalo de semver válido ou versão exacta, e npm procurará quaisquer tags ou refs que correspondam a esse intervalo no repositório remoto, tal como o faria para a dependência de aregistros. Se nem #<commit-ish> nem #semver:<semver> for especificado, então master é utilizado.

    como nas dependências git normais, dependencies e devDependencies será instalado se o pacote tiver um script prepare, antes de o pacote ser instalado.

    Exemplo:

    npm install gitlab:mygitlabuser/myproject
    npm install gitlab:myusr/myproj#semver:^5.0
  • Pode combinar múltiplos argumentos, e mesmo múltiplos tipos de argumentos. Por exemplo:

    npm install sax@"><0.2.0" supervisor de bancada

    O argumento --tag aplicar-se-á a todos os alvos de instalação especificados. Se atag com o nome dado existir, a versão etiquetada é preferida em vez de newerversions.

    O argumento --dry-run relatará da forma habitual o que a instalação teria feito sem realmente instalar nada.

    O --package-lock-only argumento apenas actualizará o package-lock.json,em vez de verificar node_modules e descarregar dependências.

    O -f ou --force argumento obrigará npm a ir buscar recursos remotos, mesmo que exista uma cópia alocal em disco.

    npm install sax --force

    O argumento --no-fund esconderá a mensagem exibida no final de cada instalação que reconhece o número de dependências à procura de financiamento.Ver npm-fund(1)

    O argumento -g ou --global fará com que npm instale o pacote globalmente mais do que localmente. Ver folders.

    O argumento --global-style fará com que npm instale o pacote na sua pasta local node_modules com o mesmo layout que usa com a pasta global node_modules. Apenas as suas dependências directas aparecerão emnode_modules e tudo aquilo de que dependem será aplanado nas suas pastasnode_modules. Isto obviamente eliminará algum deduping.

    The --ignore-scripts argumento fará com que npm não execute anyscripts definidos no package.json. Ver scripts.

    O argumento --legacy-bundling fará com que npm instale o pacote de modo a que versões de npm anteriores a 1.4, como a incluída com o nó 0.8, possam instalar o pacote. Isto elimina todos os deduping.

    O argumento --link fará com que npm ligue instalações globais ao espaço local em alguns casos.

    O argumento --no-bin-links impedirá npm de criar links simbólicos para quaisquer binários que o pacote possa conter.

    O argumento --no-optional impedirá que dependências opcionais sejam instaladas.

    O argumento --no-shrinkwrap, que ignorará um ficheiro de fecho ou de película retráctil disponível e utilizará o pacote.json em vez disso.

    O --no-package-lock argumento impedirá o npm de criar umpackage-lock.json ficheiro. Ao correr com o package-lock desactivado npm não irá automaticamente podar os módulos do seu nó quando instalar.

    O argumento --nodedir=/path/to/node/source permitirá a npm encontrar o código fonte do nó para que npm possa compilar módulos nativos.

    O argumento --only={prod|dev} fará com que apenasdevDependencies ou apenas nãodevDependencies seja instalado independentemente do argumento NODE_ENV.

    O argumento --no-audit pode ser utilizado para desactivar o envio de relatórios de auditoria para os registos configurados. Ver npm-audit para detalhes sobre o que é enviado.

    p>Verconfig. Muitos dos parâmetros de configuração têm algum efeito na instalação, uma vez que é a maior parte do que o npm faz.

    Algoritmo

    Para instalar um pacote, npm utiliza o seguinte algoritmo:

    load the existing node_modules tree from disk
    clone the tree
    fetch get the package.json e metadados variados e adicioná-los ao clone
    passear o clone e adicionar quaisquer dependências em falta
    as dependências serão adicionadas o mais próximo possível do topo
    sem quebrar quaisquer outros módulos
    comparar a árvore original com a árvore clonada e fazer uma lista de
    acções a tomar para converter uma à outra
    executar todas as acções, deepest first
    tipos de acções são instalar, actualizar, remover e mover

    Para isto package{dep} estrutura: A{B,C}, B{C}, C{D}, este algoritmo produz:

    A
    +-- B
    +– C
    +– D

    isto é, a dependência de B a C é satisfeita pelo facto de Aalready ter causado a instalação de C a um nível superior. D ainda está instalado no nível superior, porque nada entra em conflito com ele.

    Para A{B,C}, B{C,D@1}, C{D@2}, este algoritmo produz:

    A
    +-- B
    +-- C
    `-- D@2
    +-- D@1

    Porque B’s D@1 será instalado no nível superior, C tem agora de instalar D@2privately para si próprio. Este algoritmo é determinístico, mas árvores diferentes podem ser produzidas se duas dependências forem solicitadas para instalação numa ordem diferente.

    p>Ver pastas para uma descrição mais detalhada das estruturas de pastas específicas que npm cria.

    Limitações do Algoritmo de Instalação npm

    npm recusar-se-á a instalar qualquer pacote com um nome idêntico ao pacote actual. Isto pode ser anulado com o --force flag, mas na maioria dos casos pode simplesmente ser resolvido alterando o nome do pacote local.

    Existem alguns casos muito raros e patológicos onde um ciclo cancausa npm para tentar instalar uma árvore interminável de pacotes. Este é o caso mais simples:

    A -> B -> A' -> B' -> A -> B -> A' -> B' -> A -> ...

    where A é alguma versão de um pacote, e A' é uma versão diferente do mesmo pacote. Porque B depende de uma versão diferente de A do que aquela que já se encontra na árvore, deve instalar uma cópia separada. O mesmo é válido para A', que deve instalar B'. Porque B'div>A, que foi anulado, o ciclo cai em regressão infinita.

    Para evitar esta situação, npm flat-out recusa-se a instalar qualquername@version que já esteja presente em qualquer parte da árvore dos antepassados do packagefolder. Uma solução mais correcta, mas mais complexa, seria ligarymlink a versão existente para o novo local. Se isto alguma vez afectar um caso real de utilização, será investigado.

    Ver Também

    • pastasnpm
    • actualizaçãonpm
    • auditorianpm
    • fundonpm
    • ligaçãonpm
    • npm rebuild
    • npm scripts
    • npm build
    • npm config
    • npm config
    • npmrc
    • npm registry
    • npm dist-tag
    • npm uninstall
    • npm shrinkwrap
    • package.json

    Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *