Vídeos

Package.json e NPM: Tudo que você queria saber!

Thamyres Nunes
Escrito por Thamyres Nunes em 06/05/2021

Olá, tudo bem? O vídeo de hoje é um trecho de uma aula minha onde eu reviso o funcionamento e detalhes do package.json, do package-lock.json e a relação deles com os comandos do NPM. Se você ainda não se sente confortável com estes três conceitos, este vídeo vai te ajudar MUITO!

Referências:

– Meus cursos: https://www.luiztools.com.br/meus-cursos?utm_source=youtube&utm_medium=link&utm_campaign=cursos&utm_content=packagejson

– Meus livros: https://www.luiztools.com.br/meus-livros?utm_source=youtube&utm_medium=link&utm_campaign=livros&utm_content=packagejson

– Artigo complementar: https://www.luiztools.com.br/post/o-guia-completo-do-package-json-do-node-js/

– Redes Sociais: https://about.me/luiztools

Se gostou do conteúdo, não esqueça de curtir o vídeo e se inscrever no canal!

Um abraço e sucesso.

Prof. Luiz

o Olá tudo bem Aqui é o Luiz e o vídeo
de hoje é um preço de uma aula de um dos
meus cursos onde eu ensino aos alunos
como que funciona o PEC Jason no detalhe
a sua relação com npm aí como tirar o
máximo proveito dessas duas
características aí do node.js quando
você ainda não se sente confortável com
as sessões do Peter Jackson com os
comandos do RPM aí a relação de um com o
outro esse vídeo aqui eu tenho certeza
que vai ajudar a finalmente interesses
com certeza então fica comigo aí que vai
ser bem legal né
e como é que eu digo que esse projeto
aqui ele é um projeto noite certo eu
digo isso na criando um arquivo package
contra Deus não poderia criar na mão né
do zero mas realmente a gente faz isso
através não permite mas não tem início
ele tem um modo imperativo é que eu dou
o ano termine tenta vou respondendo as
perguntas e ele tem o atalho menos y em
que ele já me dá um deixou para todas as
configurações abrindo esse pack de
português o que que ele me queria aqui
tá umas coisas para fazer com vocês é de
cerca algumas algumas informações tem um
pack de ponto deles
em algumas informações tem aqui elas são
importantes caso venha publicar este meu
esse meu projeto no mpm na Então quem
ainda não fez isso né você pode pegar um
projeto seu e publicar elimine PM
torná-lo público por exemplo para
qualquer pessoa poder instalar ele como
a dependência de outro projeto para você
pode fazer isso você pode também pagar o
npm né versão paga para que você tenha
seus projetos privados também e sócio
empresa por exemplo pode utilizar os
pacotes criados por você pode falando
rapidamente e algumas opções MM então
tem algumas opções do pack de quanto
Jason que elas são explicitamente
direcionadas para essa publicação DNPM
por exemplo o name do meu pacote eu
posso colocar aqui o nome que eu quiser
mas eu publicar este name vai ser o nome
do meu pacote lá na pele então ele se
torna um pouco mais delicado certo se eu
for
E se eu não for para o mercado faço
qualquer coisa aqui não vai causar um
grande Impacto aqui localmente outros
outras sessões também que impactam muito
publicação a versão certo o node é o npm
Na verdade ele recomenda o uso de
semantic Versa me.es funcionamento com
três números certo então quê que são
esses três números aqui o número mais à
direita é o número do meu pet Então são
bambis fixes são Minor fixes na pequenos
ajustes de código pequenas e faturações
e não implicam em mudança de
funcionamento e não causam nenhum tipo
de quebra compatibilidade com outras
versões então é bem bug fixes correções
pontuais as coisas pequenas
e o número do meio é o my nerves on my
nerves on é o que é adição de
funcionalidades coisas novas certo mas
que também não quebram compatibilidade
ação novos poderes no pacote de vocês
uma aplicação de vocês e o último número
não mais da esquerda né o último
considerando da direita para esquerda é
um mês de uma força aí para a versão
maior aqui é quando eu tenho uma mudança
drástica certo E causa muito
provavelmente uma quebra de
compatibilidade com outras versões ou
mudou muita oportunidade já existentes
na não é coisas pontuais é são coisas
realmente mais grosseiras mudanças
maiores mais expressivas na aplicação
geralmente quebrando compatibilidade com
versões anteriores a esse é o modelo que
a gente chama na LG semente que versem
ou sem ver a mesma coisa Essas são The
Man
Esse é o que ela indica Qual é o arquivo
e vai ser a executado Quando eu der um
rico Fairy ou importe nesse no pacote
então quando a gente faz lá Import seco
e Live from sei com Elise como é que na
o node sabe qual dos n arquivos no
pacote C plus ele tem que retornar a ele
tem que dar um molde ou ponta de esporte
quando eu dou o impacto é atravessa
diretiva vem aqui certo aqui na mãe eu
digo qual é o arquivo na Inicial O
interpoint e meu pacote faz alguém no
futuro venha dar um importe o quê com
ele qual é o arquivo que vai ser
devolvido para essa pessoa então você
pode ter um monte de arquivos o pacote
mas eu vou ter que ter um Palco
principal que carrega todos os demais
Ali e faz aplicação né funcionar né faz
o pacote dá o seu estado
E aí
e depois a gente atende clipes eu quero
entrar mais detalhes eu vou pular aqui
por enquanto Note que a maioria delas é
a gente acaba não usando o último dia a
dia a menos que você venha publicar o
seu pacote no pênis e aí você vai querer
usar elas não para ficar bonitinho essa
página npm lá com as informações
corretamente mas eu não tenho daqui mais
detalhes né no pack de quando a gente
entra na seção de scripts aqui a coisa
começa a ficar um pouco mais
interessante e apesar de a gente já
estar utilizando aqui nas nossas aulas
alguns escritos pelo que eu notei
algumas pessoas ainda não entenderam
exatamente como funciona ou como tirar
proveito dessa seção A então por isso
vale aqui uma revisão Essas são
descritos Essas são inscritos ela é
opcional certo não é canções pack de
quantas vezes os funcionários é porque
ela opcional eu tô posso executar minha
aplicação indo lá no terminal e dando um
node e o caminho do meu arquivo que
executa aplicação ela
e sem problema nenhum vai funcionar no
entanto a seção script scripts me
permite eu tenho scripts
pré-configurados para que mais
facilmente eu possa estar executando tá
compilando tá testando o dando scripts
da minha aplicação mais do que isso em
ambientes de assiah esse Dina
compartilharmos Deploy capilar em de
testes etc geralmente a esperado que
você tem alguns scripts que são padrões
não é download tá então é mesmo com os
padrões mais comuns que eu quero me
apegar aqui mas você pode ficar escrito
qualquer coisa beleza
e como é que funciona a questão de
clipes primeiro alguns scripts eles são
vamos dizer assim esperados que você vem
a criar ela não ser obrigatório eles são
meio que de Fogo de todos os processos e
são inscrito destarte e os clipes de
teste
e como é que eu faço cutstack such start
ele serve para eu subir a minha
aplicação geralmente é utilizado para
subir aplicação e modo de produção é
modo de só sobe aplicação permite você
não vai querer fazer um monte de coisas
nele tá então espera assim muitas vezes
que a sua aplicação por exemplo já
esteja preparada para subir né para
rodar você só vai rolar um pênis Taty
ela vai subir você vai fazer muita muita
coisa diferente e o que por exemplo um
molde caminho do arquivo ou no caso
nosso aqui com tava escrito já um
ts-node caminho do arquivo certo aqui tá
o caminho cansativo né./Disso e Barracão
service/6 eita
a beleza aqui tá passando os parâmetros
a mais não é porque precisa recarregar a
variável de ambiente é preciso ali
registrar alguns caminhos configuração
Tá mas geralmente o start ele vai ter
alguma coisa na salinha aqui só execução
Eu rodaria apenas ele pênis tá então
digo lpm roda né o script destarte deste
projeto ele vai procurar no pack DJ Hum
deixa o projeto um script chamado start
sabe que é o nome padrão já do Donald
ó e vai executar esta linha de comando
aqui então o que ele faz na verdade é te
dar um atalho para essa linha aqui
imagine vezes essa linha toda no
terminal escrevi-lhe pênis Tati ele roda
a Sarinha aqui sabe
e o teste eu vou ter uma linha de
comando para rodar os testes da minha
aplicação então aqui no caso como está
usando gestos no curso nessa perguntar
de começar com Gerson eu poderia rodar
um comando gesto aqui ou se eu quisesse
por exemplo que esse projeto o das
apenas um arquivo específico poderia
rodar gest accounts. Teste.cs Coronel
ele rodaria apenas esse arquivo tá
e para executar scripts de teste eu
rodaria aqui npm traços ele executaria
aquela linha ali que tá configurado no
teto de gesso por que que eu digo que
esses dois aqui eles são já padrões é
porque eu só roda l&pm e o nome dele
qualquer outro script não é para ver se
tem algum outro que eu não lembro agora
de cabeça mas é qualquer um que diz que
você invente da sua cabeça né que você
acredite que você precisa que você quer
criar etc você vai rodar com npm Run e o
nome do skate então estar teste você
quando ele direto ele pênis tarde não
tem mistério agora se eu quiser por
exemplo criar um script só para compilar
o meu projeto né então a gente tem aqui
Um exemplo um compile
bom então queria aqui então está
descrita aqui no curso Então eu quero
rodar um tsc a e depois rodar aqui um o
servidor ou Poderia ajudar o TCC e
também rodar 1 CP não é um comando para
copiar um arquivo de outro lugar e
também rodar um MK dinheiro eu posso
usar os 2 voos comerciais para encadear
comandos certo o rolo comando e depois
rolou do comando e depois voltou tomando
a qualquer comando e funcionaria no seu
terminal funciona aqui ó
bom então se eu quiser criar esse clipes
de compadre por exemplo eu eu queria
executar ele né eu teria que dar uma npm
Run compare o mesmo se eu quiser criar
um script para subir em modo deve o meu
a minha aplicação ele PM hum deve temos
podem pensar tá mas consegui a diferença
de dar um IP estático em tem nenhuma
deve né porque eu queria forma diferente
dentro da minha aplicação em ambiente
deve você vai querer por exemplo você
que passo aplicação com o nodemon por
exemplo a ficar sempre né respeitando
você vai querer ele passou aplicação
daqui a pouco variável de ambiente
Diferentes né ou você vai querer daqui a
pouco copiar algum arquivo enfim tem
várias coisas que você pode até
diferente não somente deve e também te
pode que pode ser útil você tem um
script específico para estar em um
script específico para o HIV
é por causa o nosso aqui certo em breve
a gente roda com limão por exemplo que é
uma coisa aqui em produção a gente uma
música ou de mão nessa usando uma outra
solução não é para fazer essa questão de
sempre rodando tá
a beleza aqui curiosamente na nosso deve
ele acaba também chamando o compadre tá
então a gente acaba encalhando eu posso
votar só com o pai lhe mas se eu rodar o
deve Eu também rodo com pai lhe né junto
perto então não tem como a gente passou
aqui ó a gente dá um menos – exec para
executar um outro inscrito ainda ainda
ele vai disparar o com o pai leque
também para quem for publicar pacotes o
nome da repositório é público no kit
Rubi né quiser compartilhar projetos
open-source etc minha recomendação
sempre tem o start para subir o teste
para testar e o deve para subir como
deve Então isso é bem padrão né Eu
quando pego não saiu né mas em geral a
gente pega um projeto do zero é bem como
a gente dá um npm install para sala
dependência e deixa coisa depois da onde
que ele está difícil de aplicação e se
você não tem o escrito no pênis parte
configurado
e você vai vai exigir que a pessoa tem
aqui descobrir como é cale inicializa a
sua aplicação certo Por qual arquivo que
ela começa talvez você tem o Windows na
raiz seja bem fácil mas às vezes não é
ruim daqui uma raiz conhecia aplicação A
então é importante você deixar Sempre
configurar o seu projeto um estado um
teste se você tem testes que a gente já
comenta que você tem e o geralmente a
interessante ter um deve também para
poder rodar como modo de perto com
a beleza falando Santos clips agora quer
entrar no outro essa ação né casa que da
minha bastante pano para manga que é
dependência Na verdade são duas sessões
a gente é uma sessão de dependências e
que é a the full passa uma dependência
se padrão chama de pênis e eu tenho uma
outra sensação que a sessão de deve de
pênis que são dependências exclusivas do
ambiente de desenvolvimento ou do meio
de testes qualquer ambiente antes de
produção então dependência a gente
entende que é o que tudo é necessário
para rodar a nossa aplicação
hoje deve de pênis vamos tem de que tudo
é necessário honorário tudo que é útil
para desenvolver a aplicação Então se é
algo que eu não preciso para rodar
aplicação de produção fica engravidar
pensa trocar a opcional e produção fim
da vida pensa
oi e daí entra algumas coisas que vale a
gente reforçar aqui com relação à
instalação de dependências tá primeiro.
O npm install npm I que o atalho por
padrão Mas já tem alguns anos isso mas
por padrão se eu der um npm I certo e o
nome de um pacote por exemplo Express
e o node vai baixar este pacote vai
baixar todas as dependências deste
pacote e vai salvar independente ele já
vai salvar automaticamente para gente
isso não passado não era assim então
vocês vão ver na internet ainda algum
historial um tutoriais falando para usar
menos essa maiúsculo ou menos – save
alguma coisa do tipo tá isso não precisa
mais que a usamos já então RPM Express
já já baixo pacote baixa as dependências
do pacote e já salva no pé que Jason já
criou são para mim já salvou Então essa
primeiro.
o segundo. Se não existia a primeira vez
que só o pacote vai gerar também o
arquivo pack de Tarso loc.de Zone eu já
falo dele na sequência eu quero ficar
aqui um pouquinho no pack de jeito
nenhum se eu quiser instalar um pacote
Global na minha máquina eu vou usar npm
i – g e o nome do pacote é por exemplo
tá descritos Brasil então aqui eu tô
dizendo instala não neste projeto mas de
maneira Global né esse pacote aqui
geralmente faz isso para pacotes que são
utilitários de linha de comando perto
eles vão fazer uma dependência como
Express por exemplo não faz sentido
nenhum Não façam isso tá funciona
funciona mas causa um monte de confusão
Eu nem fazer isso para o utilitário de
linha de comando um Expert no leitor à
vontade escrito alguma coisa assim você
tem que ter permissão elevada para fazer
esse comando aqui a se você tiver
rodando usuário
a missão de escrita lá na pasta
dependências globais não vai não vai
terminar vai funcionar certo e se eu
quiser instalar um pacote como
dependência de desenvolvimento eu vou
usar o menos – save traço deve ou menos
de maiúsculo eu sou bem dos atalhos sabe
que temos ao menos de maiúsculo
e daí você coloca por exemplo o gesto é
o Gerson ele é uma dependência para
testes em produção eu não vou rodar
então a dependência de desenvolvimento
não preciso dela Executar a aplicação em
produção na última coisa importante
namorei isso ah eu tenho aqui a
dependência da Express e dependência do
gesto só que que se preze gest possui as
suas próprias dependências Nossa que não
tem essa informação aqui aí se vai ser
outro importante falar no package-lock
Porque aqui não tem uma subida presença
deles quando alguém baixas esse meu
projeto repositório Eu nunca faço commit
the world mod um mas já que ela demora
gigantesca não faço como diz certo então
eu vou ter aqui no meu projeto um GIF
Ignore na Raíssa tá E nesse vídeo kenore
eu boto à noite módulo é que é para não
comentar ela né no meu projeto certo
alguém que baixo no repositório vai
baixar senha ou de modo Qual que é a
primeira coisa que essa pessoa vai ter
que fazer quando ela
e Apostólica ela vai ter que ir na pasta
na raiz e da Uni PM quando ela dá um
mpmi não intermunicipal e que eu não te
faço que eu imprimi faça ele vai lá no
pack de ponta eles vão
e ele olha as dependências que eu tenho
todas elas certo todas elas alcançam
nisso para cada dependência ele vai
baixar a dependência EA sua sub
dependências com base nas regras que
estão escritas no package-lock. Jason
então ele usa o pack de ponto de Jason
para descobrir quais dependências e se
existiram package-lock sem importante é
que não existia ele não não vai usar tá
se existiram package-lock ele vai vir
aqui vai procurar por exemplo o o
Express e vai ver o pai Express eu tenho
q baixar 4 1711
Oi e a subir dependências e são essas
aqui com estas versões Beleza então
quando a gente fala de árvore de
dependências que as estrutura que tem
está falando do package-lock parece que
a árvore de dependências Eu preencho um
GAP que lá atrás o novo tinha né porque
às vezes eu baixavam ela traz um pacote
aqui na minha máquina que tinha sobre
dependências em algumas versões e quando
eu ia instalar em produção mas ele pela
produção eu dá um like instalar achava
com outras dependências e a coisa
desandava não funcionava no mesmo jeito
que ainda máquina compra resolver isso
você criou esse package-lock aqui ele
não é obrigatório mas altamente
recomendável o nome dele funciona assim
ele beleza mas é altamente recomendável
que é para fazer essas esses controles
das lentamente da subir dependências ó o
que o controle Independência principal
Aliexpress eu posso resolver aqui mesmo
E se eu colocar quatro. 17.1 é somente
essa versão e pronto o problema é a
subir dependência beleza
e isso dá um bom gancho para a gente
falar novamente você mesmo que ver sonho
mas você ver porque se eu tenho e
circunflexo aqui antes da versão eu tô
dizendo o que eu aceito a versão 4.4
quer coisa eu tô abrindo mão desses
outros dois números daqui da negação é a
mesma coisa que eu colocar
é isso aqui quatro pontos é quatro
pontos qualquer coisa e se você complexo
Jesus
bom então só Ou seja é a versão 4 com
quaisquer funcionalidades em diante
E se eu quero brindar as funcionalidades
também eu posso usar o tio aqui eu tô
dizendo o que é 4.17 com qualquer versão
de Band fixas onde falar qualquer um que
querem dizer a mais recente de
preferência né então ele pênis estava
baixar mais recente
é isso aqui é a mesma coisa que eu fazer
isso aqui 4.17. X então eu coloco na
fixos e tudo mais ó
bom E se eu quiser por algum motivo
insano né a mais recente versão não
importa qual seja é isso é um risco
tremendo produção tá Não faça isso
produção eu boto só um x aqui ou só um
asterisco só quem vai dizer quando rodar
install pode dizer cara me traz aí o
L’Express mais novo que tu tiver só que
a gente sabe que isso pode gerar
problemas nessas tem uma aplicação
delegada né com uma versão para
conseguir conversar uns a Teresa que
pressa daí estava na quatro pode quebrar
um monte de coisa na aplicação Então tem
que tomar bastante cuidado com isso a
mais comum é o seu complexo né que
mantém a Neide o Evolution Mas permite a
receber as atualizações de fitness
e-books Beleza então é só um primeiro.
Nosso Block seu olhar aqui no pré-caju
aqui ó
e eu tenho que as versões algumas as
versões nossa aí também fixas por
exemplo aceito Marx a maioria vai estar
várias não tá chumbadas né então por que
que é essa aqui vocês vão 7.0 sempre não
aceita outra Maria tem várias receitas
bug fixes e raramente vocês vão
encontrar aceitando o futuro novas para
mim que você não vão aceitar porque a
gente fez novas pode gerar um alguns
comparsas também alguma quebra entre as
versões
a beleza recentemente foi feito uma
modificação da mpm E se eu instalar um
pacote novo no pack de 2 ohms
automaticamente ele já bota no parque de
Loki e seu atualizar o pacote um pack de
vison automaticamente ele também
atualiza no pack de loja a isso é uma
mudança recente tá então fica aí o
alerta que no passado o package-lock ele
era imutável ele estava bloqueado já era
agora não se você quiser atualizar as
versões dos seus pacotes
e você pode rodar no Terminal 1 npm
update npm update ele vai bater no seu
pack de ponto Jason e conforme as regras
de versionamento você definiram certo
então que eu tô dizendo que a regra é
né: qualquer coisa É que eu tô dizendo
que a regra é quatro pontos qualquer
coisa ou forma essa regra e vai procurar
no mpm as versões mais recentes disso a
se a minha regra se eu quiser forçar um
update tipo cru geralzão uma estratégia
é excluir todas as dependências e fala
de novo ou estratégia é vir aqui né e
colocar um asterisco e da Uni PM
apagador de modo ajudando Que inicial de
novo mas faltou do zero ou Dani PM
update também vai falar elas atualizar
as novamente também mas não tiver
atualizados
a beleza é importante ressaltar que lhe
permite Dente também atualiza o
package-lock tá se for se houver
divergência a outro. Né que é uma coisa
que a gente já tá não comentou no curso
e Vale comentar agora
e quando eu vou fazer Deploy em produção
certo seu instalar com npm i eu vou
instalar todas as dependências
dependências de pênis de dar vida apenas
também se eu quero instalar dependência
somente de dependências ação de pênis
sem teste sem tá escrito essas palavras
eu rodo com menos menos prodution então
só rodar ele PM e menos menos produto
ele vai falar só o que tá nessa são de
apenas então vou ter mais falar só mais
limpa e mais rápida para produção
a outra alternativa é o npm install
entende que por padrão se eu tiver
aliado node envie
E você tava com o produto não ele vai
baixar automaticamente só são de penas e
tem uma outra dica que essa aqui não é
tão comum a mas é pode ser bem útil para
vocês é o npm cear
o comando limpei iniciais que ele faz
ele apaga Now de modo certo e faz uma
instalação zerada ele apaga na hora de
molho ele baixa somente as dependências
de produção e se eu tiver de fazer com a
sua mente com as regras do package-lock
certo ele ignora o PEP Jason ele vai lá
no parque agillock direto não existia
Ele reclama ele não roda levar no parque
de ló que só tudo Como manda o
package-lock Tintim por Tintim E se
tiver alguma divergência do package-lock
compete Jason ele também não roda ele te
xinga Então esse cara aqui ele é muito
usado para paip Lines automatizados de
Deploy por isso o nome dele é se ai né
the continuous integration então ele é
para que para que você tenha sempre uma
instalação limpa e fiel a como deve ser
em produção
E aí então ele pega o seu package-lock
instala ele arrisca Zé com nome de modo
Zerado em produção aí saiu para isso né
para gerar a versão de produção
a beleza E aí curtiu a aula na descrição
do vídeo você encontra mais referência
para se aprofundar esses assuntos bem
como os links dos meus livros e dos
nossos se você ficou qualquer dúvida
sobre esse assunto você também pode
deixar nos comentários que eu terei o
maior prazer em responder a antes de
sair se você puder clica aí no like e se
inscreva no canal se você ainda não for
inscrito que me ajuda bastante a
divulgar o meu trabalho e ajudar outros
deves também a entenderem melhor Como
funciona essa tecnologia que é o node.js
Tá bom então um abraço e até a próxima
valeu

Olá, tudo bem?

O que você achou deste conteúdo? Conte nos comentários.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Assista também

6 dicas de performance em Node.js

WebSockets Client em 15 min! (exemplo em Node.js com Binance)

React Native CLI - Testando em smartphone Android - Aula Grátis #02

Dicas para currículo de devs

06 dicas para bots de criptomoedas

Sequelize em 15 minutos, direto ao ponto! (2021)