Qual é a diferença prática entre npm installe npm update? Quando devo usar qual?
Qual é a diferença prática entre npm installe 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 installnpm updateAlém disso : installe updatepor padrão lida com devDependencies de maneira diferente
npm installvai instalar / atualizar devDependencies a menos que --productiona bandeira é adicionadanpm updateirá ignorar devDependencies, a menos que o --devsinalizador seja adicionadoPor que usar npm install?
Porque npm installfaz 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>--forcenpm install --save somePackagesalvar o * nas dependências?
postinstallrodam na instalação, mas não na atualização.
installe updatefuncionar 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.0onde a ^versão principal é atualizada 1.3.0 -> 1.4.0.
O npm install instala todos os módulos listados no package.jsonarquivo e suas dependências.
O npm update atualiza todos os pacotes no node_modulesdiretó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 installou npm update? Ou, em outras palavras, agora estou usando npm installe 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 installrespeitará a versão fornecida no pacote.json?
updateinstala (ou atualiza para) a versão mais recente do módulo. installinstala a versão mais recente do módulo, caso não seja apresentada, mantém a versão atual.
npm updateserá 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 --forceera exatamente o que eu queria.
Muitas distinções já foram mencionadas. Aqui está mais um:
Correndo npm installna 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 installpode fazer muito mais trabalho do que apenas instalar dependências.
Acabei de ter um caso de uso em prepublishque chamaria makee o Makefilefoi projetado para buscar dependências se a package.jsonatualização for atualizada. A chamada npm installde dentro do Makefilecomando levaria a uma recursão infinita, enquanto a chamada npm updatefuncionava perfeitamente, instalando todas as dependências para que a compilação pudesse prosseguir mesmo que makefosse chamada diretamente.
redismódulo e other_modulerequer uma versão mais antiga redis, npm install other_modulegarantirá other_moduleo uso da versão mais antiga. Pode adicionar other_module/node_modules/redisse 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 updateomitirá um grande número de dependências no package-lock.json. Para ter todos os pacotes necessários disponíveis e package-lock.jsonestar correto, eu sempre tenho que executar npm installlogo depois npm update.
~1.3?