Qual é a diferença prática entre npm install
e npm update
? Quando devo usar qual?
Qual é a diferença prática entre npm install
e npm update
? Quando devo usar qual?
Respostas:
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
npm install --save somePackage
salvar o * nas dependências?
postinstall
rodam na instalação, mas não na atualização.
install
e update
funcionar de forma diferente em URLs git, tags git etc. especificadas no package.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 é atualizada 1.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 npm@2.x, 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.
npm install
ou npm update
? Ou, em outras palavras, agora estou usando npm install
e parece fazer a atualização também. Existe algum motivo para usar npm update
?
update
, sempre será atualizada para a versão mais recente, independentemente do pacote.json, enquanto install
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.
npm install express --save
ou melhor, para atualizar o módulo para a versão mais recente, use:
npm install express@latest --save --force
--save
: O pacote aparecerá nas suas dependências.
Mais informações: npm-install
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, um npm install
pode fazer muito mais trabalho do que apenas instalar dependências.
Acabei de ter um caso de uso em prepublish
que chamaria make
e o Makefile
foi projetado para buscar dependências se a package.json
atualização for atualizada. A chamada npm install
de dentro do Makefile
comando levaria a uma recursão infinita, enquanto a chamada npm update
funcionava perfeitamente, instalando todas as dependências para que a compilação pudesse prosseguir mesmo que make
fosse chamada diretamente.
redis
módulo e other_module
requer uma versão mais antiga redis
, npm install other_module
garantirá other_module
o uso da versão mais antiga. Pode adicionar other_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.json
npm install
: instale os módulos do nó definidos em package.json (sem atualização)
npm update
omitirá um grande número de dependências no package-lock.json
. Para ter todos os pacotes necessários disponíveis e package-lock.json
estar correto, eu sempre tenho que executar npm install
logo depois npm update
.
~1.3
?