Este artigo irá guiá-lo através dos dois poderosos gerenciadores de pacotes do Node.js: npm e yarn. Espero que seja útil para você!
Curso de introdução rápida ao Node.js: entre para aprender
O primeiro passo para aprender Node
é entender o gerenciador de pacotes do node : npm
Acredito que todos estão familiarizados com npm
, porque frequentemente o usamos para baixar alguns recursos de pacotes.
Mas como a biblioteca de recursos do npm
(https://www.npmjs.com/) está no exterior, a velocidade de download de recursos usando-a é relativamente lenta, então node包管理器
de terceiros, como yarn
e domésticos, são sincronizados com npm
armazéns. Espelho Taobao atualizado (cnpm)
A seguir aprenderemos esses conteúdos em profundidade, vamos começar!
A coluna da série Node começou a ser atualizada Siga o blogueiro, assine a coluna e aprenda Node sem se perder!
o que é npm
Antes de usar npm
, você deve primeiro entender o que é npm
. No primeiro artigo da coluna da série Node [Node.js | O único caminho do front-end para a pilha completa], é mencionado npm
é o armazém de código aberto do Node
e é o maior armazém de código aberto do mundo.
O endereço deste armazém é: https://www.npmjs.com/
Em 17 de março de 2020, npm
serviu 1,3 milhão de pacotes para aproximadamente 12 milhões de desenvolvedores, que os baixaram 75 bilhões de vezes por mês
Para baixar e usar os recursos no armazém npm
, você pode usar npm的指令
(começando com npm
, como npm i axios
download axios
) ou usar outras instruções de terceiros ( Node包管理器
de terceiros), como yarn, etc. .
Declaração oficial:
npm
é uma ferramenta de gerenciamento e distribuição de pacotes paraNodeJS
O gerenciamento de pacotes se reflete no fato de ser um warehouse
NodeJS
, que armazena e gerencia diversos pacotes de softwareNodeJS
.A ferramenta de distribuição consiste no uso
npm的指令
para baixar pacotes no armazémnpm
.
Quando configuramos o ambiente NodeJS
, npm指令模块
é instalado junto com NodeJS
. Podemos executar npm -v
através do terminal para visualizar a versão instalada:
Mas se a versão padrão instalada npm
for muito antiga, você também poderá instalar e atualizar manualmente o npm :
npm i npm@mais recente -g
@latest
representa a instalação da versão mais recente,-g
representa a instalação global, essas instruçõesnpm
serão discutidas posteriormente.
Uma coisa mágica pode ser encontrada acima. Estamos instalando npm
por meio npm
. Podemos instalá-lo nós mesmos?
Na verdade, isso é fácil de entender. npm的指令模块
npm
é armazenado no armazém npm
como um pacote, e o nome deste pacote é npm
.
Então, o que geralmente chamamos de npm refere-se apenas ao módulo de comando do npm (o pacote chamado npm)
Mas, na verdade, a palavra
npm
refere-senpm指令模块
e também aonpm
o próprio armazém de código abertoNodeJS
, então baixamosnpm
emnpm
(este npm representa o armazém de código aberto do NodeJS) (este npm representa o armazém aberto armazém de origem chamado npm Este pacote, este pacote é o módulo de comando do npm)
comandos comuns npm
Existem muitas instruções
npm
. Aqui listamos apenas as mais usadas. Para obter mais informações, consulte a documentação oficial do npm.
npm init
: gera package.json
npm install
: Baixe todos os recursos registrados em package.json
npm install 包名
: Baixe o pacote especificado para o diretório atual
npm uninstall 包名
: desinstala o pacote especificado no diretório atual
npm update 包名
: Atualize o pacote especificado no diretório atual. Se nenhum nome de pacote for adicionado, todos os pacotes no diretório atual serão atualizados.
npm outdated 包名
: Verifique se o pacote especificado no diretório atual está desatualizado . Se nenhum nome de pacote for adicionado, todos os pacotes no diretório atual serão verificados.
npm info 包名
: Obtenha informações detalhadas sobre o pacote no diretório atual
npm list
: Visualiza todos os pacotes instalados no diretório atual e suas dependências e exibe o número da versão ( list
pode ser abreviada como ls
)
npm list 包名
: Veja o número da versão do pacote especificado instalado no diretório atual ( list
pode ser abreviado como ls
)
Alguns pontos adicionais:
install
pode ser abreviado como i
, como: npm install axios
pode ser abreviado como npm i axios
uninstall
pode ser abreviado como un
Adicione o símbolo @
após o nome do pacote para especificar a versão do pacote, como: npm i md5@1
baixa a versão 1 do md5, npm i md5@latest
significa baixar a versão mais recente do md5
sufixo do comando npm
-g
: Especifique o ambiente global
O comando
npm
tem como padrão operar no diretório atual. Adicionar-g
especifica a operação no ambiente global . Como mencionado acima, instale a versão mais recente do npm globalmente:npm i npm@latest -g
, para que o npm possa ser usado em qualquer diretório. .
--save
pode ser abreviado como -s
: especifica dependências no ambiente de produção (registradas em dependencies
)
Após a versão
npm5
, o padrão é--save
. Por exemplo, axios precisa ser instalado tanto no ambiente de produção quanto no ambiente de desenvolvimento:npm i axios -s
--save-dev
pode ser abreviado como -D
: especifique as dependências no ambiente de desenvolvimento (registradas em devDependencies
)
Para instalar o babel que não é necessário no ambiente de produção (usado apenas no ambiente de desenvolvimento):
npm i babel -D
--save-prod
pode ser abreviado como -P
: o mesmo que --save
--save-optional
pode ser abreviado como -O
: especifica dependências opcionais (registradas em optionalDependencies
)
--no-save
: não será gravado em package.json
Para as funções específicas e diferenças de
-g,--save,--save-dev
consulte meu artigo: A diferença entre npm install -g/–save/–save-dev
O sufixo do comando npm também pode ser colocado na frente do nome do pacote:
npm i -g npm@latest
Gerenciamento de pacotes de dependências
No npm
, as dependências conhecidas são: dependencies
e devDependencies
Além disso, na verdade inclui:
peerDependencies
,
optionalDependencies
bundledDependencies / bundleDependencies
Várias dependências, incluindo estas, são registradas em package.json
:
Acima mencionamos essas dependências ao falar sobre sufixos de comando npm . Aqui está uma descrição detalhada do que eles representam:
dependencies
e devDependencies
Confira meu outro artigo: A diferença entre npm install -g/–save/–save-dev
peerDependencies
Você pode conferir o artigo do grandalhão: Entenda peerDependencies em um artigo
optionalDependencies
Dependências opcionais. Se houver alguns pacotes dependentes que ainda
dependencies
ser executados mesmo se a instalaçãooptionalDependencies
ou você quiser que o npm continue em execução, você pode usaroptionalDependencies
. escreva-os em ambos os lugares.
bundledDependencies
/ bundleDependencies
devDependencies
de empacotamento,bundledDependencies
é um objeto de array contendo nomes de pacotes dependentes. Ao publicar, os pacotes nestedependencies
serão empacotados no pacote de lançamento final. erro.
Problemas de versão do pacote que precisam de atenção em package.json
As informações de versão de todos os pacotes baixados através npm
serão registradas em package.json
Ao executar npm i
ele será baixado com base nas informações do pacote registradas em package.json
. Suas regras de download são as seguintes:
Quando a versão do pacote começa com ^
(padrão) , a versão grande será bloqueada
//pacote.json "dependências": { "md5": "^2.1.0" // } começando com ^,
Através do
npm i
será instalada a versão mais recente domd5
2.xx
(a versão mais recente nas duas versões principais), que não é necessariamente 2.1.0, mas também pode ser 2.3.0
Quando a versão do pacote começa com ~
, ela será bloqueada para a segunda versão principal
//pacote.json "dependências": { "md5": "~2.1.0" },
Através
npm i
irei instalar a última versão domd5
2.1.x
(a última versão abaixo da versão 2.1), que não é necessariamente 2.1.0, mas também pode ser 2.1.1
A versão do pacote é *
e será bloqueada para a versão mais recente
//pacote.json "dependências": { "md5": "*" },
Via
npm i
irei instalar a última versão domd5
Se não houver prefixo antes da versão do pacote , ele será bloqueado para a versão especificada.
//pacote.json "dependências": { "md5": "2.1.0" },
Via
npm i
irei instalar a versão 2.1.0 domd5
Resolva o problema da velocidade lenta do npm
Como o armazém npm
está no exterior, será mais lento usarmos o comando npm
na China para baixar o conteúdo deste armazém estrangeiro.
Neste momento, podemos executar o seguinte comando para mudar a fonte do armazém npm
para a fonte doméstica da imagem Taobao (cnpm) :
registro do conjunto de configuração npm https://registry.npmmirror.com
Use npm config get registry
para visualizar a fonte atual:
Quando você usar npm
no futuro, ele será baixado automaticamente do armazém espelho Taobao doméstico e a velocidade será muito rápida.
O endereço de origem anterior do espelho Taobao era http://registry.npm.taobao.org, mas agora foi alterado para http://registry.npmmirror.com Ver detalhes.
Mas será inevitavelmente um pouco problemático mudar de fonte modificando a configuração npm
. Podemos instalar um nrm
globalmente para nos ajudar a mudar rapidamente as fontes npm
.
Use nrm para alternar rapidamente fontes npm
Instale o nrm globalmente:
npm instalar -g nrm
Execute nrm ls
para visualizar fontes npm alternáveis :
Use npm use
para mudar de fonte , como mudar para fonte Taobao: nrm use taobao
Use nrm test 源名
para testar o tempo de resposta da fonte correspondente:
Você pode ver que a velocidade de resposta da fonte Taobao é muito mais rápida do que a fonte padrão do npm
.
Espelho npm chinês: cnpm
cnpm
é um espelho completo do npmjs.org, que pode ser usado no lugar da versão oficial
A frequência de sincronização entre
cnpm
e a versão oficial é uma vez a cada 10 minutos, site oficial do cnpm
Baixar cnpm
:
npm instalar -g cnpm --registry=https://registry.npmmirror.com
cnpm é o espelho Taobao . Quando usamos a fonte do espelho Taobao acima, apenas alteramos a fonte do npm
para a fonte do espelho Taobao ( cnpm
) (esta fonte na verdade se refere ao endereço do armazém) e, em seguida, usamos através dele. o comando npm
.
E aqui está para baixar diretamente a imagem completa do cnpm
e então você pode usar cnpm
em vez do comando npm
:
cnpm installcnpm e axios -g // ....
As instruções do
cnpm
são exatamente as mesmas donpm
. Basta usar cnpm em vez de npm ao usá-lo.
Yarn é uma ferramenta de gerenciamento de dependências lançada pelo Facebook que é mais rápida e eficiente que npm
Instalar:
npm instalar -g fio
Atualizar fio:
versão do conjunto de fios mais recente versão do conjunto de fios das fontes
vantagem
super rápido
yarn
armazena em cache cada pacote baixado para que não haja necessidade de baixá-lo novamente ao usá-lo novamente. Também utiliza downloads paralelos para maximizar a utilização de recursos, para que as instalações sejam mais rápidas
Super seguro <br/> Antes de executar o código, yarn
irá verificar a integridade de cada pacote de instalação através de um algoritmo
Instruções comuns de fios
yarn init
: Inicialize o projeto e gere o arquivo package.json
. As etapas de geração são aproximadamente as mesmas do npm init
yarn help
: exibir lista de comandos
yarn install
: Baixe todos os recursos registrados em package.json
, que pode ser abreviado como yarn
yarn add 包名
: baixe o pacote especificado para o diretório atual
yarn remove 包名
: desinstale o pacote especificado no diretório atual
yarn upgrade 包名
: atualize o pacote especificado no diretório atual. Você pode adicionar @指定版本号
após o nome do pacote para especificar a versão que precisa ser atualizada.
sufixo de comando yarn
--dev
: Especifique dependências no ambiente de desenvolvimento ( devDependencies
), abreviado como -D
--peer
: Especifique as dependências principais ( peerDependencies
)
--optional
: Especifique dependências opcionais ( optionalDependencies
)
Este artigo apresenta npm
e yarn
, bem como nrm
, cnpm
, etc., derivados de npm
Os blogueiros têm usado uma combinação de npm + nrm para alternar fontes , porque isso não apenas garante velocidade rápida, mas também permite a troca conveniente de fontes sem a necessidade de baixar pacotes adicionais, como cnpm
e yarn
Tanto npm
quanto yarn
têm muito conteúdo. Este artigo explica apenas o conteúdo mais comumente usado. Se quiser saber mais, você pode acessar o site oficial correspondente para visualizá-lo.