Qual é a diferença prática entre npm install
e npm update
? Quando devo usar qual?
520
A diferença entre o npm install e o npm update de manipulação das versões de pacote especificadas em package.json :
{
"name": "my-project",
"version": "1.0", // install update
"dependencies": { // ------------------
"already-installed-versionless-module": "*", // ignores "1.0" -> "1.1"
"already-installed-semver-module": "^1.4.3" // ignores "1.4.3" -> "1.5.2"
"already-installed-versioned-module": "3.4.1" // ignores ignores
"not-yet-installed-versionless-module": "*", // installs installs
"not-yet-installed-semver-module": "^4.2.1" // installs installs
"not-yet-installed-versioned-module": "2.7.8" // installs installs
}
}
Resumo : A única grande diferença é que um módulo já instalado com versão difusa ...
npm install
npm update
Além disso : install
e update
por padrão lida com devDependencies de maneira diferente
npm install
vai instalar / atualizar devDependencies a menos que --production
a bandeira é adicionadanpm update
irá ignorar devDependencies, a menos que o --dev
sinalizador seja adicionadoPor que usar npm install
?
Porque npm install
faz mais quando você olha além de lidar com suas dependências package.json
. Como você pode ver no npm install, você pode ...
PATH
) usandonpm install -g <name>
--force
~1.3
?npm install --save somePackage
salvar o * nas dependências?postinstall
rodam na instalação, mas não na atualização.install
eupdate
funcionar de forma diferente em URLs git, tags git etc. especificadas nopackage.json
, seria ótimo adicionar esses casos ao exemplo.1.3.0 -> 1.3.1
é, semelhante ao local^1.3.0
onde a^
versão principal é atualizada1.3.0 -> 1.4.0
.O npm install instala todos os módulos listados no
package.json
arquivo e suas dependências.O npm update atualiza todos os pacotes no
node_modules
diretório e suas dependências.O npm install express instala apenas o módulo express e suas dependências.
módulo npm update express updates express (começando com [email protected], ele não atualiza suas dependências).
Portanto, as atualizações são para quando você já possui o módulo e deseja obter a nova versão.
fonte
npm install
ounpm update
? Ou, em outras palavras, agora estou usandonpm install
e parece fazer a atualização também. Existe algum motivo para usarnpm update
?update
, sempre será atualizada para a versão mais recente, independentemente do pacote.json, enquantoinstall
respeitará a versão fornecida no pacote.json?update
instala (ou atualiza para) a versão mais recente do módulo.install
instala a versão mais recente do módulo, caso não seja apresentada, mantém a versão atual.npm update
será atualizado para a versão mais recente com base no seu package.json, não importando isso. Se você tiver "express": "3.x" e estiver na versão 3.1.0, ele será atualizado para a tag 3.x mais recente. Se houver uma versão 4.x, ela não instalará a versão mais recente.Na maioria dos casos, isso instalará a versão mais recente do módulo publicada no npm.
ou melhor, para atualizar o módulo para a versão mais recente, use:
--save
: O pacote aparecerá nas suas dependências.Mais informações: npm-install
fonte
npm install express@latest --save --force
era exatamente o que eu queria.Muitas distinções já foram mencionadas. Aqui está mais um:
Correndo
npm install
na parte superior do seu diretório de origem será executado vários scripts:prepublish
,preinstall
,install
,postinstall
. Dependendo do que esses scripts fazem, umnpm install
pode fazer muito mais trabalho do que apenas instalar dependências.Acabei de ter um caso de uso em
prepublish
que chamariamake
e oMakefile
foi projetado para buscar dependências se apackage.json
atualização for atualizada. A chamadanpm install
de dentro doMakefile
comando levaria a uma recursão infinita, enquanto a chamadanpm update
funcionava perfeitamente, instalando todas as dependências para que a compilação pudesse prosseguir mesmo quemake
fosse chamada diretamente.fonte
redis
módulo eother_module
requer uma versão mais antigaredis
,npm install other_module
garantiráother_module
o uso da versão mais antiga. Pode adicionarother_module/node_modules/redis
se necessário.npm update
: instale e atualize com os módulos de nó mais recentes que estão no package.jsonnpm install
: instale os módulos do nó definidos em package.json (sem atualização)fonte
npm update
omitirá um grande número de dependências nopackage-lock.json
. Para ter todos os pacotes necessários disponíveis epackage-lock.json
estar correto, eu sempre tenho que executarnpm install
logo depoisnpm update
.