﻿1
00:00:01,260 --> 00:00:02,200
‫Instrutor:

2
00:00:02,200 --> 00:00:03,783
‫Nesta aula, vamos falar

3
00:00:03,783 --> 00:00:05,980
‫sobre um monte de outras

4
00:00:05,980 --> 00:00:08,630
‫coisas que você deve saber sobre como

5
00:00:08,630 --> 00:00:13,610
‫trabalhar com pacotes npm, como controle de versão, atualização ou exclusão de

6
00:00:13,610 --> 00:00:17,043
‫pacotes e também algumas outras coisas, então vamos começar.

7
00:00:18,860 --> 00:00:20,670
‫A primeira coisa que

8
00:00:20,670 --> 00:00:25,670
‫quero falar neste vídeo são os números das versões de nossos pacotes.

9
00:00:26,000 --> 00:00:28,110
‫A maioria dos pacotes

10
00:00:28,110 --> 00:00:31,510
‫no npm segue a chamada notação de versão semântica,

11
00:00:31,510 --> 00:00:34,140
‫o que significa que seus números de

12
00:00:34,140 --> 00:00:36,913
‫versão são sempre expressos com esses três números.

13
00:00:38,010 --> 00:00:41,000
‫O primeiro aqui é chamado de versão principal.

14
00:00:41,000 --> 00:00:44,190
‫O segundo é chamado de versão secundária.

15
00:00:44,190 --> 00:00:47,460
‫O terceiro é chamado de versão do patch.

16
00:00:47,460 --> 00:00:51,604
‫Na verdade, esses três números têm um significado.

17
00:00:51,604 --> 00:00:55,160
‫A versão do patch, que é apenas esta última

18
00:00:55,160 --> 00:00:58,080
‫aqui, tem como objetivo apenas corrigir bugs.

19
00:00:58,080 --> 00:01:01,750
‫Digamos que na versão 1. 18, os desenvolvedores encontraram

20
00:01:01,750 --> 00:01:04,150
‫um bug e então o consertaram

21
00:01:04,150 --> 00:01:08,663
‫e lançaram 1. 18 1

22
00:01:09,860 --> 00:01:11,320
‫Em seguida, eles encontraram outro

23
00:01:11,320 --> 00:01:14,840
‫bug e lançaram 1. 18 2 e assim por

24
00:01:14,840 --> 00:01:18,843
‫diante até chegarem a 1. 18 11, que é

25
00:01:20,350 --> 00:01:22,203
‫o número da versão atual.

26
00:01:23,450 --> 00:01:27,140
‫Novamente, este último aqui é apenas para correção de bugs.

27
00:01:27,140 --> 00:01:31,040
‫Depois disso, temos a versão secundária.

28
00:01:31,040 --> 00:01:32,670
‫A versão secundária

29
00:01:32,670 --> 00:01:35,130
‫introduz alguns novos recursos no

30
00:01:35,130 --> 00:01:38,170
‫pacote, mas não inclui alterações importantes.

31
00:01:38,170 --> 00:01:41,270
‫Todas as alterações feitas em um novo número de versão

32
00:01:41,270 --> 00:01:43,593
‫sempre serão compatíveis com versões anteriores.

33
00:01:44,751 --> 00:01:47,410
‫Se um dia a equipe do nodemon, por exemplo,

34
00:01:47,410 --> 00:01:51,290
‫decidir lançar a versão 1. 19, bem, isso

35
00:01:51,290 --> 00:01:54,110
‫incluirá alguns novos recursos, mas

36
00:01:54,110 --> 00:01:56,570
‫não quebrará nosso código.

37
00:01:56,570 --> 00:01:59,750
‫E o mesmo, claro, acontece com este aqui.

38
00:01:59,750 --> 00:02:03,230
‫Então, se algum dia, houver Slugify 1. 4, bem, então

39
00:02:03,230 --> 00:02:06,190
‫nosso código ainda funcionará da mesma forma.

40
00:02:06,190 --> 00:02:08,320
‫Não haverá alterações significativas.

41
00:02:08,320 --> 00:02:10,600
‫Simplesmente haverá algo novo, portanto,

42
00:02:10,600 --> 00:02:14,947
‫alguns novos recursos, que não são apenas correções de bugs.

43
00:02:14,947 --> 00:02:17,940
‫As correções de bugs novamente são para o

44
00:02:17,940 --> 00:02:19,850
‫terceiro, portanto, para a versão

45
00:02:19,850 --> 00:02:23,870
‫do patch, e os novos recursos menores são para a versão secundária.

46
00:02:23,870 --> 00:02:26,620
‫Então, é claro, temos a versão principal,

47
00:02:26,620 --> 00:02:28,840
‫que só é aumentada

48
00:02:28,840 --> 00:02:33,140
‫sempre que é um grande lançamento que pode ter alterações significativas.

49
00:02:33,140 --> 00:02:36,500
‫Por exemplo, se o Slugify 2 vier.

50
00:02:36,500 --> 00:02:39,000
‫Bem, nosso código pode não funcionar mais

51
00:02:39,000 --> 00:02:42,130
‫porque a função slugify que temos aqui, por

52
00:02:42,130 --> 00:02:44,856
‫exemplo, pode ter mudado seu nome ou

53
00:02:44,856 --> 00:02:48,940
‫talvez o parâmetro que ele espera aqui seja diferente ou as

54
00:02:48,940 --> 00:02:51,240
‫opções podem ter mudado, ou algo

55
00:02:51,240 --> 00:02:53,210
‫pode ter mudado que quebrará

56
00:02:53,210 --> 00:02:55,123
‫a versão anterior .

57
00:02:57,040 --> 00:02:59,720
‫Esteja ciente de que quando há uma nova

58
00:02:59,720 --> 00:03:02,020
‫versão, ela geralmente pode afetar o código

59
00:03:02,020 --> 00:03:03,570
‫que você já possui.

60
00:03:05,030 --> 00:03:07,300
‫Por isso, também é

61
00:03:07,300 --> 00:03:09,823
‫importante falar sobre atualização de pacotes.

62
00:03:10,670 --> 00:03:12,620
‫Em nosso pacote. arquivo

63
00:03:12,620 --> 00:03:15,258
‫json, este pequeno símbolo aqui que

64
00:03:15,258 --> 00:03:18,460
‫vem antes do número da versão é o

65
00:03:18,460 --> 00:03:22,363
‫que especifica quais atualizações aceitamos para cada um dos pacotes.

66
00:03:23,290 --> 00:03:27,430
‫Este símbolo aqui, que o npm especifica aqui

67
00:03:27,430 --> 00:03:31,900
‫por padrão, significa que aceitamos correções e versões menores.

68
00:03:31,900 --> 00:03:34,890
‫Agora, como realmente atualizamos os pacotes?

69
00:03:34,890 --> 00:03:39,080
‫Bem, vamos realmente encerrar esse processo aqui.

70
00:03:39,080 --> 00:03:40,580
‫A primeira coisa

71
00:03:40,580 --> 00:03:44,120
‫que podemos fazer é verificar se há algum pacote desatualizado.

72
00:03:44,120 --> 00:03:49,120
‫Escrevemos npm desatualizado e isso deve nos dar uma

73
00:03:49,720 --> 00:03:51,530
‫tabela com todos os

74
00:03:51,530 --> 00:03:53,125
‫pacotes desatualizados.

75
00:03:53,125 --> 00:03:55,970
‫Bem, agora, eles estão todos atualizados, então

76
00:03:55,970 --> 00:03:57,860
‫isso não aconteceu realmente.

77
00:03:57,860 --> 00:03:59,021
‫O que

78
00:03:59,021 --> 00:04:01,550
‫quero mostrar agora é que podemos realmente

79
00:04:01,550 --> 00:04:05,240
‫instalar um determinado pacote com um determinado número de versão.

80
00:04:05,240 --> 00:04:06,945
‫Vamos fazer isso com o Slugify e

81
00:04:06,945 --> 00:04:11,003
‫instalá-lo na versão 1. 0 0

82
00:04:13,980 --> 00:04:18,980
‫Npm install slugify e depois em 1. 0 0

83
00:04:22,220 --> 00:04:23,233
‫Vamos experimentar.

84
00:04:25,645 --> 00:04:29,560
‫Agora, de fato, temos um zero zero.

85
00:04:29,560 --> 00:04:31,740
‫Quando passamos o mouse sobre ele, ele mostra

86
00:04:31,740 --> 00:04:35,773
‫a última versão 1. 3 4, que é o que tínhamos.

87
00:04:36,660 --> 00:04:40,630
‫Mas se agora rodarmos o npm desatualizado, ele

88
00:04:40,630 --> 00:04:43,390
‫deve nos fornecer isso.

89
00:04:43,390 --> 00:04:46,360
‫Vemos que a corrente é 1. 0 0

90
00:04:46,360 --> 00:04:50,642
‫Desejado é 1. 3 4, porque esse

91
00:04:50,642 --> 00:04:53,060
‫é o que aceitamos, porque lembre-se, com

92
00:04:53,060 --> 00:04:56,820
‫isso aqui, aceitamos todos os patches e todas as versões

93
00:04:56,820 --> 00:04:59,821
‫secundárias, mas é claro, também podemos mudar isso.

94
00:04:59,821 --> 00:05:04,580
‫Por exemplo, podemos defini-lo com este símbolo aqui.

95
00:05:04,580 --> 00:05:07,860
‫Isso aceitará apenas lançamentos de patches.

96
00:05:07,860 --> 00:05:09,483
‫Este é um pouco mais seguro.

97
00:05:10,960 --> 00:05:13,570
‫Se executarmos o npm desatualizado novamente, vamos ver

98
00:05:13,570 --> 00:05:14,693
‫o que temos.

99
00:05:15,590 --> 00:05:19,150
‫Agora, o desejado é apenas 1. 0 2,

100
00:05:19,150 --> 00:05:22,690
‫porque, novamente, só aceitamos versões secundárias.

101
00:05:22,690 --> 00:05:26,090
‫Então, 1. 3 4 não

102
00:05:26,090 --> 00:05:28,670
‫é aceito por nós porque, bem,

103
00:05:28,670 --> 00:05:30,820
‫não aceitamos nenhum dos lançamentos

104
00:05:30,820 --> 00:05:33,670
‫menores, então, novamente, apenas lançamentos de patch.

105
00:05:33,670 --> 00:05:38,670
‫Se você fosse fazer o npm update slugify agora, vamos ver o

106
00:05:41,460 --> 00:05:42,903
‫que temos então.

107
00:05:45,360 --> 00:05:48,440
‫Agora estamos em 1. 0 2

108
00:05:48,440 --> 00:05:49,537
‫Você vê

109
00:05:49,537 --> 00:05:52,930
‫que ele mudou novamente para minha configuração de

110
00:05:52,930 --> 00:05:56,360
‫atualização aqui para aceitar versões menores e de patch.

111
00:05:56,360 --> 00:05:58,763
‫Não apenas os lançamentos de patch como tínhamos antes.

112
00:06:01,010 --> 00:06:02,820
‫Se vamos executar isso agora de

113
00:06:02,820 --> 00:06:04,180
‫novo, isso deve nos elevar

114
00:06:04,180 --> 00:06:08,163
‫totalmente para 1. 3 4, como tínhamos antes.

115
00:06:09,710 --> 00:06:11,343
‫Na verdade, aqui vamos nós.

116
00:06:12,550 --> 00:06:16,060
‫Tudo bem, é assim que atualizamos os pacotes.

117
00:06:16,060 --> 00:06:18,240
‫Existem outras configurações que

118
00:06:18,240 --> 00:06:20,040
‫podemos escolher aqui.

119
00:06:20,040 --> 00:06:23,070
‫Podemos dizer, por exemplo, que queremos todas as

120
00:06:23,070 --> 00:06:25,970
‫versões, então se em algum momento houver uma

121
00:06:25,970 --> 00:06:28,790
‫versão dois e se não atualizarmos nossos

122
00:06:28,790 --> 00:06:30,930
‫pacotes, ele irá então elevar

123
00:06:30,930 --> 00:06:33,633
‫automaticamente nossa versão para a versão dois.

124
00:06:34,590 --> 00:06:36,903
‫Este inclui todas as

125
00:06:38,259 --> 00:06:40,880
‫versões, mesmo aquelas com alterações significativas.

126
00:06:40,880 --> 00:06:43,530
‫Mas isso geralmente não é uma boa ideia,

127
00:06:43,530 --> 00:06:46,330
‫então eu geralmente escolho este que é o

128
00:06:46,330 --> 00:06:49,510
‫padrão, ou às vezes até este aqui porque em

129
00:06:49,510 --> 00:06:52,740
‫algum ponto, mesmo que uma versão menor deva simplesmente introduzir

130
00:06:52,740 --> 00:06:54,880
‫novos recursos, mas sem alterações significativas,

131
00:06:54,880 --> 00:06:57,690
‫sabemos que às vezes pode haver bugs que

132
00:06:57,690 --> 00:07:00,490
‫os desenvolvedores não encontraram e, em seguida, esses

133
00:07:00,490 --> 00:07:02,270
‫bugs encontram seu caminho

134
00:07:02,270 --> 00:07:05,010
‫em nosso código e podem quebrar nosso código.

135
00:07:05,010 --> 00:07:07,600
‫Não queremos isso, é claro.

136
00:07:07,600 --> 00:07:09,700
‫A versão mais segura é

137
00:07:09,700 --> 00:07:12,149
‫apenas usar esta para correção de bugs.

138
00:07:12,149 --> 00:07:15,510
‫Na verdade, vamos mantê-lo assim aqui, apenas

139
00:07:15,510 --> 00:07:17,783
‫para fins de demonstração.

140
00:07:19,183 --> 00:07:20,950
‫Isso é o que você precisa

141
00:07:20,950 --> 00:07:23,123
‫saber sobre os números de versão e atualização.

142
00:07:24,030 --> 00:07:26,443
‫Mas é claro que também podemos excluir pacotes.

143
00:07:27,350 --> 00:07:30,493
‫Vamos agora instalar o Express,

144
00:07:36,280 --> 00:07:40,140
‫para que possamos prosseguir e excluí-lo depois disso.

145
00:07:40,140 --> 00:07:43,000
‫Tenho certeza que você pode adivinhar como podemos fazer isso.

146
00:07:43,000 --> 00:07:44,960
‫Isso é muito fácil.

147
00:07:44,960 --> 00:07:49,620
‫Desinstalação do Npm, portanto, na verdade não é chamada de exclusão.

148
00:07:49,620 --> 00:07:51,510
‫É realmente uma desinstalação.

149
00:07:51,510 --> 00:07:56,303
‫Nós instalamos e desinstalamos o Express.

150
00:07:58,170 --> 00:08:00,460
‫Isso irá excluí-lo de nossa pasta de

151
00:08:00,460 --> 00:08:02,941
‫módulos de nó e também de nossas dependências

152
00:08:02,941 --> 00:08:05,960
‫em um pacote. arquivo json.

153
00:08:06,920 --> 00:08:11,000
‫Cada vez que decidimos não usar mais um módulo, bem,

154
00:08:11,000 --> 00:08:14,140
‫devemos sempre ir em frente e removê-lo,

155
00:08:14,140 --> 00:08:15,983
‫ou realmente desinstalá-lo.

156
00:08:16,900 --> 00:08:19,450
‫Agora, para terminar, gostaria de falar um

157
00:08:19,450 --> 00:08:22,240
‫pouco sobre a pasta de módulos de nó.

158
00:08:22,240 --> 00:08:24,010
‫Esta pasta, que contém

159
00:08:24,010 --> 00:08:26,600
‫todas as dependências do nosso projeto.

160
00:08:26,600 --> 00:08:29,210
‫Digamos que você queira compartilhar seu código com

161
00:08:29,210 --> 00:08:31,393
‫alguém ou que, por exemplo, queira

162
00:08:31,393 --> 00:08:33,550
‫começar a trabalhar em um

163
00:08:33,550 --> 00:08:35,850
‫computador e depois passar para o próximo.

164
00:08:35,850 --> 00:08:39,140
‫Você nunca compartilhará essa pasta de módulos de nó porque

165
00:08:39,140 --> 00:08:42,330
‫esse código pode ser facilmente obtido no npm.

166
00:08:42,330 --> 00:08:44,570
‫Não há necessidade de seguir em

167
00:08:44,570 --> 00:08:46,760
‫frente e copiar todo esse código

168
00:08:46,760 --> 00:08:50,730
‫aqui, por exemplo, para um repositório GitHub ou para uma pasta do

169
00:08:50,730 --> 00:08:54,040
‫Dropbox, ou realmente em algum lugar onde você deseja compartilhar

170
00:08:54,040 --> 00:08:56,000
‫seu código, porque esta pasta

171
00:08:56,000 --> 00:08:58,616
‫aqui como você vê tem toneladas de pastas

172
00:08:58,616 --> 00:09:01,670
‫e cada um deles pode ter toneladas de arquivos.

173
00:09:01,670 --> 00:09:03,670
‫De repente, você pode acabar

174
00:09:03,670 --> 00:09:06,313
‫com dezenas ou centenas de milhares de arquivos.

175
00:09:07,718 --> 00:09:09,860
‫Você nunca deve compartilhar esta

176
00:09:09,860 --> 00:09:13,173
‫pasta e nunca fazer check-out em seu repositório GitHub.

177
00:09:14,680 --> 00:09:17,620
‫Digamos que você tenha feito upload deste código

178
00:09:17,620 --> 00:09:21,173
‫para sua conta GitHub sem esses módulos de nó

179
00:09:22,580 --> 00:09:25,020
‫ou colocado em um Dropbox

180
00:09:25,020 --> 00:09:27,660
‫em um computador e baixado em outro.

181
00:09:27,660 --> 00:09:30,464
‫Digamos que agora baixamos este código aqui,

182
00:09:30,464 --> 00:09:32,780
‫portanto, sem módulos de nó.

183
00:09:32,780 --> 00:09:34,540
‫Portanto, excluímos esse agora e

184
00:09:36,050 --> 00:09:38,523
‫acabamos com apenas uma pasta de projeto normal.

185
00:09:39,720 --> 00:09:42,092
‫Como agora recuperamos nossas dependências ou nossa

186
00:09:42,092 --> 00:09:44,180
‫pasta de módulos de nó?

187
00:09:44,180 --> 00:09:46,120
‫Bem, é muito fácil.

188
00:09:46,120 --> 00:09:48,503
‫Tudo o que precisamos fazer é instalar o npm.

189
00:09:55,490 --> 00:09:58,950
‫O que fiz foi ler nosso pacote. arquivo json,

190
00:09:58,950 --> 00:10:02,030
‫leia nossas dependências e baixe

191
00:10:02,030 --> 00:10:05,860
‫tudo de volta para esta pasta, certo.

192
00:10:05,860 --> 00:10:07,940
‫Agora, uma peça importante desse quebra-cabeça é

193
00:10:07,940 --> 00:10:10,503
‫o bloqueio do pacote. arquivo json.

194
00:10:12,290 --> 00:10:15,070
‫Se abrirmos, obteremos uma lista de todas

195
00:10:15,070 --> 00:10:17,710
‫as versões de todos os pacotes que

196
00:10:17,710 --> 00:10:19,210
‫estamos realmente usando.

197
00:10:19,210 --> 00:10:22,093
‫Isso inclui as dependências de nossas dependências.

198
00:10:23,100 --> 00:10:25,373
‫Vamos para o Slugify, por exemplo.

199
00:10:28,030 --> 00:10:29,910
‫Slugify, e aqui vemos que estamos usando a

200
00:10:29,910 --> 00:10:31,413
‫versão 1. 3 4

201
00:10:33,270 --> 00:10:35,600
‫Isso é muito importante porque, se você

202
00:10:35,600 --> 00:10:38,420
‫compartilhar seu código, deseja que o outro desenvolvedor ou

203
00:10:38,420 --> 00:10:40,190
‫até mesmo você use exatamente

204
00:10:40,190 --> 00:10:42,450
‫as mesmas versões de pacote, para que

205
00:10:42,450 --> 00:10:45,760
‫seu código funcione exatamente da mesma maneira para você e

206
00:10:45,760 --> 00:10:47,300
‫para o outro desenvolvedor.

207
00:10:47,300 --> 00:10:50,200
‫Para isso, os números exatos da versão são

208
00:10:50,200 --> 00:10:52,380
‫basicamente gravados em pedra neste pacote

209
00:10:52,380 --> 00:10:54,833
‫de bloqueio. arquivo json.

210
00:10:56,624 --> 00:10:58,850
‫Se você compartilha seu código, não importa

211
00:10:58,850 --> 00:11:02,180
‫se você está usando GitHub ou Dropbox ou algo parecido, sempre

212
00:11:02,180 --> 00:11:04,690
‫compartilhe seu pacote. arquivo json e

213
00:11:04,690 --> 00:11:07,660
‫o bloqueio de pacote. arquivo json

214
00:11:07,660 --> 00:11:09,690
‫porque esses dois arquivos são

215
00:11:09,690 --> 00:11:12,460
‫necessários para o outro desenvolvedor reconstruir basicamente

216
00:11:12,460 --> 00:11:15,143
‫a pasta de módulos de nó.

217
00:11:18,232 --> 00:11:20,860
‫Sim, acho que isso é tudo

218
00:11:20,860 --> 00:11:23,600
‫que você precisa saber sobre versões

219
00:11:23,600 --> 00:11:28,230
‫de pacote, atualização, desinstalação e também compartilhamento de código com

220
00:11:28,230 --> 00:11:31,710
‫pacote npm. json e package-lock. json.

221
00:11:31,710 --> 00:11:33,870
‫Se houver mais alguma coisa que você queira

222
00:11:33,870 --> 00:11:37,320
‫saber, você pode sempre perguntar novamente no curso de perguntas e respostas

223
00:11:37,320 --> 00:11:39,323
‫e então você obterá ajuda lá.

