Tentando dar uma visão geral melhor para iniciantes.
O npm tem sido historicamente (2010) o gerenciador de pacotes mais popular para JavaScript. Se você quiser usá-lo para gerenciar as dependências do seu projeto, pode digitar o seguinte comando:
npm init
Isso irá gerar um package.json
arquivo. Ele contém todas as dependências do projeto.
Então
npm install
criaria um diretório node_modules
e baixaria as dependências (que você adicionou ao package.json
arquivo) dentro dele.
Ele também criará um package-lock.json
arquivo. Este arquivo é usado para descrever a árvore de dependências que foi gerada. Ele permite que os desenvolvedores instalem exatamente as mesmas dependências. Por exemplo, você pode imaginar um desenvolvedor atualizando uma dependência para v2 e v3, enquanto outro atualiza diretamente para v3.
O npm instala dependências de uma forma não determinística, o que significa que os dois desenvolvedores podem ter um node_modules
diretório diferente , resultando em comportamentos diferentes . ** O npm sofreu má reputação como, por exemplo, em fevereiro de 2018: um problema foi descoberto na versão 5.7.0 em que a execução de sudo npm em sistemas Linux alteraria a propriedade dos arquivos do sistema, interrompendo permanentemente o sistema operacional.
Para resolver esses problemas e outros, Facebook introduziu um novo gerenciador de pacotes (2016): Fios de uma mais rápida, mais segura e mais confiável Package Manager para JavaScript.
Você pode adicionar Yarn a um projeto digitando:
yarn init
Isso criará um package.json
arquivo. Em seguida, instale as dependências com:
yarn install
Uma pasta node_modules
será gerada. O Yarn também irá gerar um arquivo chamado yarn.lock
. Este arquivo tem a mesma finalidade que o, package-lock.json
mas é construído usando um algoritmo determinístico e confiável, levando a compilações consistentes.
Se você iniciou um projeto com o npm , pode realmente migrar para o Yarn facilmente. o fio vai consumir o mesmo package.json
. Consulte Migrando do npm para obter mais detalhes.
No entanto, o npm foi aprimorado a cada novo lançamento e alguns projetos ainda usam o npm ao invés do yarn .