﻿1
00:00:01,260 --> 00:00:02,200
‫Istruttore:

2
00:00:02,200 --> 00:00:03,783
‫In questa lezione

3
00:00:03,783 --> 00:00:05,980
‫parleremo di un sacco di

4
00:00:05,980 --> 00:00:08,630
‫altre cose che dovresti sapere sul

5
00:00:08,630 --> 00:00:13,610
‫lavoro con i pacchetti npm, come il versioning, l'aggiornamento o l'eliminazione di

6
00:00:13,610 --> 00:00:17,043
‫pacchetti e anche alcune altre cose, quindi iniziamo.

7
00:00:18,860 --> 00:00:20,670
‫La prima cosa di

8
00:00:20,670 --> 00:00:25,670
‫cui voglio parlare in questo video sono questi numeri di versione dei nostri pacchetti.

9
00:00:26,000 --> 00:00:28,110
‫La maggior parte dei pacchetti

10
00:00:28,110 --> 00:00:31,510
‫su npm segue la cosiddetta notazione semantica della versione, il

11
00:00:31,510 --> 00:00:34,140
‫che significa che i loro numeri di

12
00:00:34,140 --> 00:00:36,913
‫versione sono sempre espressi con questi tre numeri.

13
00:00:38,010 --> 00:00:41,000
‫Il primo qui è chiamato la versione principale.

14
00:00:41,000 --> 00:00:44,190
‫Il secondo è chiamato la versione minore.

15
00:00:44,190 --> 00:00:47,460
‫Il terzo è chiamato la versione patch.

16
00:00:47,460 --> 00:00:51,604
‫C'è davvero un significato in questi tre numeri.

17
00:00:51,604 --> 00:00:55,160
‫La versione della patch, che è solo quest'ultima qui,

18
00:00:55,160 --> 00:00:58,080
‫è pensata solo per correggere i bug.

19
00:00:58,080 --> 00:01:01,750
‫Diciamo che nella versione 1. 18, gli sviluppatori hanno trovato

20
00:01:01,750 --> 00:01:04,150
‫un bug e quindi l'hanno corretto e

21
00:01:04,150 --> 00:01:08,663
‫poi rilasciato 1. 18. 1.

22
00:01:09,860 --> 00:01:11,320
‫Poi hanno trovato un altro bug e

23
00:01:11,320 --> 00:01:14,840
‫poi ne hanno rilasciato 1. 18. 2 e così

24
00:01:14,840 --> 00:01:18,843
‫via fino a raggiungere 1. 18. 11, che è

25
00:01:20,350 --> 00:01:22,203
‫il numero di versione corrente.

26
00:01:23,450 --> 00:01:27,140
‫Di nuovo, quest'ultimo qui è solo per correzioni di bug.

27
00:01:27,140 --> 00:01:31,040
‫Dopodiché, abbiamo la versione minore.

28
00:01:31,040 --> 00:01:32,670
‫La versione secondaria

29
00:01:32,670 --> 00:01:35,130
‫introduce alcune nuove funzionalità nel

30
00:01:35,130 --> 00:01:38,170
‫pacchetto, ma non include modifiche sostanziali.

31
00:01:38,170 --> 00:01:41,270
‫Tutte le modifiche apportate a un nuovo numero di versione

32
00:01:41,270 --> 00:01:43,593
‫saranno sempre compatibili con le versioni precedenti.

33
00:01:44,751 --> 00:01:47,410
‫Se un giorno il team di nodemon, ad esempio,

34
00:01:47,410 --> 00:01:51,290
‫decide di rilasciare la versione 1. 19, beh, questo

35
00:01:51,290 --> 00:01:54,110
‫includerà alcune nuove funzionalità ma non

36
00:01:54,110 --> 00:01:56,570
‫infrangerà il nostro codice.

37
00:01:56,570 --> 00:01:59,750
‫E lo stesso ovviamente accade con questo qui.

38
00:01:59,750 --> 00:02:03,230
‫Quindi, se un giorno, c'è Slugify 1. 4, allora il nostro

39
00:02:03,230 --> 00:02:06,190
‫codice continuerà a funzionare allo stesso modo.

40
00:02:06,190 --> 00:02:08,320
‫Non ci saranno modifiche sostanziali.

41
00:02:08,320 --> 00:02:10,600
‫Semplicemente ci sarà qualcosa di

42
00:02:10,600 --> 00:02:14,947
‫nuovo, quindi alcune nuove funzionalità, che non sono solo correzioni di bug.

43
00:02:14,947 --> 00:02:17,940
‫Le correzioni di bug sono di nuovo per

44
00:02:17,940 --> 00:02:19,850
‫la terza, quindi per la

45
00:02:19,850 --> 00:02:23,870
‫versione patch, quindi le nuove funzionalità minori sono per la versione minore.

46
00:02:23,870 --> 00:02:26,620
‫Poi, naturalmente, abbiamo la versione principale, che viene

47
00:02:26,620 --> 00:02:28,840
‫aumentata solo ogni volta che

48
00:02:28,840 --> 00:02:33,140
‫si tratta di una nuova versione enorme che può avere modifiche di rilievo.

49
00:02:33,140 --> 00:02:36,500
‫Ad esempio, se arriva Slugify 2.

50
00:02:36,500 --> 00:02:39,000
‫Bene, il nostro codice potrebbe non funzionare

51
00:02:39,000 --> 00:02:42,130
‫più perché la funzione slugify che abbiamo qui,

52
00:02:42,130 --> 00:02:44,856
‫ad esempio, potrebbe aver cambiato nome o

53
00:02:44,856 --> 00:02:48,940
‫forse il parametro che si aspetta qui è diverso o le

54
00:02:48,940 --> 00:02:51,240
‫opzioni potrebbero essere cambiate, o qualcosa

55
00:02:51,240 --> 00:02:53,210
‫potrebbe essere cambiato che interromperà

56
00:02:53,210 --> 00:02:55,123
‫la versione precedente .

57
00:02:57,040 --> 00:02:59,720
‫Tieni presente che quando c'è una nuova

58
00:02:59,720 --> 00:03:02,020
‫versione, di solito potrebbe influenzare il

59
00:03:02,020 --> 00:03:03,570
‫codice che hai già.

60
00:03:05,030 --> 00:03:07,300
‫Per questo motivo è importante

61
00:03:07,300 --> 00:03:09,823
‫anche parlare di aggiornamento dei pacchetti.

62
00:03:10,670 --> 00:03:12,620
‫Nel nostro pacchetto. json,

63
00:03:12,620 --> 00:03:15,258
‫questo piccolo simbolo qui davanti

64
00:03:15,258 --> 00:03:18,460
‫al numero di versione è ciò che

65
00:03:18,460 --> 00:03:22,363
‫specifica quali aggiornamenti accettiamo per ciascuno dei pacchetti.

66
00:03:23,290 --> 00:03:27,430
‫Questo simbolo qui, che npm specifica qui per

67
00:03:27,430 --> 00:03:31,900
‫impostazione predefinita, significa che accettiamo patch e versioni minori.

68
00:03:31,900 --> 00:03:34,890
‫Ora, come aggiorniamo effettivamente i pacchetti?

69
00:03:34,890 --> 00:03:39,080
‫Bene, in realtà chiudiamo questo processo qui.

70
00:03:39,080 --> 00:03:40,580
‫La prima cosa

71
00:03:40,580 --> 00:03:44,120
‫che possiamo fare è controllare se ci sono pacchetti obsoleti.

72
00:03:44,120 --> 00:03:49,120
‫Scriviamo npm obsoleto e questo dovrebbe darci effettivamente una

73
00:03:49,720 --> 00:03:51,530
‫tabella con tutti i

74
00:03:51,530 --> 00:03:53,125
‫pacchetti obsoleti.

75
00:03:53,125 --> 00:03:55,970
‫Bene, in questo momento sono tutti aggiornati, quindi

76
00:03:55,970 --> 00:03:57,860
‫non è successo davvero.

77
00:03:57,860 --> 00:03:59,021
‫Quello che

78
00:03:59,021 --> 00:04:01,550
‫voglio mostrarti ora è che possiamo effettivamente

79
00:04:01,550 --> 00:04:05,240
‫installare un certo pacchetto con un certo numero di versione.

80
00:04:05,240 --> 00:04:06,945
‫Facciamolo con Slugify e installiamolo

81
00:04:06,945 --> 00:04:11,003
‫alla versione 1. 0. 0.

82
00:04:13,980 --> 00:04:18,980
‫Npm install slugify e poi su 1. 0. 0.

83
00:04:22,220 --> 00:04:23,233
‫Proviamolo.

84
00:04:25,645 --> 00:04:29,560
‫Ora, infatti, abbiamo uno zero zero.

85
00:04:29,560 --> 00:04:31,740
‫Quando ci passiamo sopra, in realtà dice

86
00:04:31,740 --> 00:04:35,773
‫l'ultima versione 1. 3. 4, che è quello che avevamo.

87
00:04:36,660 --> 00:04:40,630
‫Ma se ora eseguiamo npm

88
00:04:40,630 --> 00:04:43,390
‫obsoleto, dovrebbe darcelo.

89
00:04:43,390 --> 00:04:46,360
‫Vediamo che la corrente è 1. 0. 0.

90
00:04:46,360 --> 00:04:50,642
‫Il ricercato è 1. 3. 4, perché questo

91
00:04:50,642 --> 00:04:53,060
‫è quello che accettiamo perché ricorda,

92
00:04:53,060 --> 00:04:56,820
‫che con questo qui, accettiamo tutte le patch e tutte

93
00:04:56,820 --> 00:04:59,821
‫le versioni minori, ma ovviamente possiamo anche cambiarlo.

94
00:04:59,821 --> 00:05:04,580
‫Ad esempio, possiamo impostarlo su questo simbolo qui.

95
00:05:04,580 --> 00:05:07,860
‫Questo accetterà quindi solo le versioni di patch.

96
00:05:07,860 --> 00:05:09,483
‫Questo è un po' più sicuro.

97
00:05:10,960 --> 00:05:13,570
‫Se eseguiamo di nuovo npm obsoleto, vediamo

98
00:05:13,570 --> 00:05:14,693
‫cosa otteniamo.

99
00:05:15,590 --> 00:05:19,150
‫Ora il ricercato è solo 1. 0. 2, perché

100
00:05:19,150 --> 00:05:22,690
‫ancora una volta accettiamo solo versioni minori.

101
00:05:22,690 --> 00:05:26,090
‫Quindi 1. 3. 4 non

102
00:05:26,090 --> 00:05:28,670
‫è accettato da noi perché, beh, non

103
00:05:28,670 --> 00:05:30,820
‫accettiamo nessuna delle versioni minori,

104
00:05:30,820 --> 00:05:33,670
‫quindi di nuovo, solo versioni di patch.

105
00:05:33,670 --> 00:05:38,670
‫Se dovessi eseguire l'aggiornamento di npm slugify ora, vediamo cosa abbiamo

106
00:05:41,460 --> 00:05:42,903
‫ottenuto allora.

107
00:05:45,360 --> 00:05:48,440
‫Adesso siamo a 1. 0. 2.

108
00:05:48,440 --> 00:05:49,537
‫Vedete che

109
00:05:49,537 --> 00:05:52,930
‫è cambiato di nuovo per la mia configurazione

110
00:05:52,930 --> 00:05:56,360
‫di aggiornamento qui per accettare versioni minori e patch.

111
00:05:56,360 --> 00:05:58,763
‫Non solo i rilasci di patch come prima.

112
00:06:01,010 --> 00:06:02,820
‫Se lo eseguiamo di nuovo

113
00:06:02,820 --> 00:06:04,180
‫ora, dovrebbe effettivamente portarci

114
00:06:04,180 --> 00:06:08,163
‫fino a 1. 3. 4, come abbiamo fatto prima.

115
00:06:09,710 --> 00:06:11,343
‫Infatti, ci siamo.

116
00:06:12,550 --> 00:06:16,060
‫Va bene, è così che aggiorniamo i pacchetti.

117
00:06:16,060 --> 00:06:18,240
‫Ci sono altre configurazioni che

118
00:06:18,240 --> 00:06:20,040
‫possiamo scegliere qui.

119
00:06:20,040 --> 00:06:23,070
‫Possiamo dire, ad esempio, che vogliamo tutte le

120
00:06:23,070 --> 00:06:25,970
‫versioni, quindi se a un certo punto c'è

121
00:06:25,970 --> 00:06:28,790
‫una versione due e se non abbiamo

122
00:06:28,790 --> 00:06:30,930
‫aggiornato i nostri pacchetti, la

123
00:06:30,930 --> 00:06:33,633
‫nostra versione aumenterà automaticamente alla versione due.

124
00:06:34,590 --> 00:06:36,903
‫Questa include tutte le

125
00:06:38,259 --> 00:06:40,880
‫versioni, anche quelle con modifiche sostanziali.

126
00:06:40,880 --> 00:06:43,530
‫Ma di solito non è una buona idea,

127
00:06:43,530 --> 00:06:46,330
‫quindi di solito vado solo con questo che

128
00:06:46,330 --> 00:06:49,510
‫è predefinito, o talvolta anche questo qui perché a un

129
00:06:49,510 --> 00:06:52,740
‫certo punto, anche se una versione minore dovrebbe semplicemente introdurre

130
00:06:52,740 --> 00:06:54,880
‫nuove funzionalità ma senza cambiamenti di

131
00:06:54,880 --> 00:06:57,690
‫rilievo, sappiamo che a volte possono esserci bug che

132
00:06:57,690 --> 00:07:00,490
‫gli sviluppatori non trovano, e quindi questi bug

133
00:07:00,490 --> 00:07:02,270
‫si fanno strada nel

134
00:07:02,270 --> 00:07:05,010
‫nostro codice e potrebbero violare il nostro codice.

135
00:07:05,010 --> 00:07:07,600
‫Non lo vogliamo, ovviamente.

136
00:07:07,600 --> 00:07:09,700
‫La versione più sicura è quella

137
00:07:09,700 --> 00:07:12,149
‫di usare solo questa per le correzioni di bug.

138
00:07:12,149 --> 00:07:15,510
‫In realtà teniamolo così qui, solo

139
00:07:15,510 --> 00:07:17,783
‫a scopo dimostrativo.

140
00:07:19,183 --> 00:07:20,950
‫Questo è ciò che devi

141
00:07:20,950 --> 00:07:23,123
‫sapere sui numeri di versione e sull'aggiornamento.

142
00:07:24,030 --> 00:07:26,443
‫Ma ovviamente possiamo anche eliminare i pacchetti.

143
00:07:27,350 --> 00:07:30,493
‫Ora andiamo avanti e installiamo Express,

144
00:07:36,280 --> 00:07:40,140
‫in modo da poter procedere ed eliminarlo successivamente.

145
00:07:40,140 --> 00:07:43,000
‫Sono sicuro che puoi indovinare come possiamo farlo.

146
00:07:43,000 --> 00:07:44,960
‫È molto facile.

147
00:07:44,960 --> 00:07:49,620
‫Npm uninstall, quindi in realtà non si chiama delete.

148
00:07:49,620 --> 00:07:51,510
‫Si sta davvero disinstallando.

149
00:07:51,510 --> 00:07:56,303
‫Installiamo e disinstalliamo Express.

150
00:07:58,170 --> 00:08:00,460
‫Ciò lo eliminerà quindi dalla nostra cartella

151
00:08:00,460 --> 00:08:02,941
‫dei moduli del nodo e anche dalle nostre

152
00:08:02,941 --> 00:08:05,960
‫dipendenze in un pacchetto. json file.

153
00:08:06,920 --> 00:08:11,000
‫Ogni volta che decidiamo di non usare più un

154
00:08:11,000 --> 00:08:14,140
‫modulo, beh, dovremmo sempre procedere e rimuoverlo,

155
00:08:14,140 --> 00:08:15,983
‫o addirittura disinstallarlo.

156
00:08:16,900 --> 00:08:19,450
‫Ora, come ultima cosa, voglio parlare

157
00:08:19,450 --> 00:08:22,240
‫un po' della cartella dei moduli del nodo.

158
00:08:22,240 --> 00:08:24,010
‫Questa cartella, che contiene

159
00:08:24,010 --> 00:08:26,600
‫tutte le dipendenze del nostro progetto.

160
00:08:26,600 --> 00:08:29,210
‫Supponiamo che tu voglia condividere il tuo codice

161
00:08:29,210 --> 00:08:31,393
‫con qualcuno, o che tu, ad esempio,

162
00:08:31,393 --> 00:08:33,550
‫desideri iniziare a lavorare su un

163
00:08:33,550 --> 00:08:35,850
‫computer e poi passare a quello successivo.

164
00:08:35,850 --> 00:08:39,140
‫Non condividerai mai questa cartella dei moduli del nodo

165
00:08:39,140 --> 00:08:42,330
‫perché questo codice, puoi facilmente ottenerlo da npm.

166
00:08:42,330 --> 00:08:44,570
‫Non c'è bisogno di andare avanti

167
00:08:44,570 --> 00:08:46,760
‫e copiare tutto questo codice qui,

168
00:08:46,760 --> 00:08:50,730
‫ad esempio, in un repository GitHub o in una cartella Dropbox, o

169
00:08:50,730 --> 00:08:54,040
‫davvero da qualche parte in cui vuoi condividere il tuo

170
00:08:54,040 --> 00:08:56,000
‫codice, perché questa cartella

171
00:08:56,000 --> 00:08:58,616
‫qui come vedi ha tonnellate di cartelle

172
00:08:58,616 --> 00:09:01,670
‫e ognuno di loro potrebbe avere tonnellate di file.

173
00:09:01,670 --> 00:09:03,670
‫All'improvviso, potresti ritrovarti con

174
00:09:03,670 --> 00:09:06,313
‫decine o centinaia di migliaia di file.

175
00:09:07,718 --> 00:09:09,860
‫Non dovresti mai condividere questa

176
00:09:09,860 --> 00:09:13,173
‫cartella e non controllarla mai nel tuo repository GitHub.

177
00:09:14,680 --> 00:09:17,620
‫Diciamo che hai caricato questo codice sul tuo

178
00:09:17,620 --> 00:09:21,173
‫account GitHub senza i moduli di questo nodo, oppure lo

179
00:09:22,580 --> 00:09:25,020
‫hai messo in un Dropbox su

180
00:09:25,020 --> 00:09:27,660
‫un computer e lo hai scaricato sull'altro.

181
00:09:27,660 --> 00:09:30,464
‫Diciamo che ora abbiamo scaricato questo codice

182
00:09:30,464 --> 00:09:32,780
‫qui, quindi senza moduli nodo.

183
00:09:32,780 --> 00:09:34,540
‫Quindi eliminiamo quello ora e

184
00:09:36,050 --> 00:09:38,523
‫finiamo con solo una normale cartella di progetto.

185
00:09:39,720 --> 00:09:42,092
‫Come possiamo ora recuperare le nostre dipendenze o

186
00:09:42,092 --> 00:09:44,180
‫la nostra cartella dei moduli del nodo?

187
00:09:44,180 --> 00:09:46,120
‫Bene, è molto facile.

188
00:09:46,120 --> 00:09:48,503
‫Tutto quello che dobbiamo fare è installare npm.

189
00:09:55,490 --> 00:09:58,950
‫Quello che ha fatto è leggere il nostro pacchetto. json, leggi

190
00:09:58,950 --> 00:10:02,030
‫le nostre dipendenze e poi scarica

191
00:10:02,030 --> 00:10:05,860
‫di nuovo tutto in questa cartella, va bene.

192
00:10:05,860 --> 00:10:07,940
‫Ora un pezzo importante di questo puzzle

193
00:10:07,940 --> 00:10:10,503
‫è il lucchetto. json file.

194
00:10:12,290 --> 00:10:15,070
‫Se lo apriamo, otteniamo un elenco di tutte

195
00:10:15,070 --> 00:10:17,710
‫le versioni di tutti i pacchetti che

196
00:10:17,710 --> 00:10:19,210
‫stiamo effettivamente utilizzando.

197
00:10:19,210 --> 00:10:22,093
‫Ciò include le dipendenze delle nostre dipendenze.

198
00:10:23,100 --> 00:10:25,373
‫Andiamo a Slugify, per esempio.

199
00:10:28,030 --> 00:10:29,910
‫Slugify, e quindi qui vediamo che stiamo usando la

200
00:10:29,910 --> 00:10:31,413
‫versione 1. 3. 4.

201
00:10:33,270 --> 00:10:35,600
‫Questo è molto importante perché se condividi

202
00:10:35,600 --> 00:10:38,420
‫il tuo codice, vuoi che l'altro sviluppatore o anche

203
00:10:38,420 --> 00:10:40,190
‫te stesso utilizzi esattamente le

204
00:10:40,190 --> 00:10:42,450
‫stesse versioni del pacchetto, in modo che

205
00:10:42,450 --> 00:10:45,760
‫il tuo codice funzioni esattamente allo stesso modo per te

206
00:10:45,760 --> 00:10:47,300
‫e per l'altro sviluppatore.

207
00:10:47,300 --> 00:10:50,200
‫Per questo, i numeri di versione esatti sono

208
00:10:50,200 --> 00:10:52,380
‫fondamentalmente scolpiti nella pietra in questo

209
00:10:52,380 --> 00:10:54,833
‫pacchetto di blocco. json file.

210
00:10:56,624 --> 00:10:58,850
‫Se condividi il tuo codice, indipendentemente dal fatto

211
00:10:58,850 --> 00:11:02,180
‫che tu stia utilizzando GitHub o Dropbox o qualcosa del genere, condividi

212
00:11:02,180 --> 00:11:04,690
‫sempre il tuo pacchetto. json e

213
00:11:04,690 --> 00:11:07,660
‫il pacchetto lock. json perché

214
00:11:07,660 --> 00:11:09,690
‫questi due file sono necessari

215
00:11:09,690 --> 00:11:12,460
‫per consentire all'altro sviluppatore di ricostruire sostanzialmente

216
00:11:12,460 --> 00:11:15,143
‫la cartella dei moduli del nodo.

217
00:11:18,232 --> 00:11:20,860
‫Sì, penso che sia tutto ciò

218
00:11:20,860 --> 00:11:23,600
‫che devi sapere sulle versioni dei

219
00:11:23,600 --> 00:11:28,230
‫pacchetti, sull'aggiornamento, sulla disinstallazione e anche sulla condivisione del codice con

220
00:11:28,230 --> 00:11:31,710
‫npm, package. json e pacchetto-lock. json.

221
00:11:31,710 --> 00:11:33,870
‫Se c'è qualcos'altro che vuoi sapere,

222
00:11:33,870 --> 00:11:37,320
‫puoi sempre chiedere di nuovo nel corso Q e A

223
00:11:37,320 --> 00:11:39,323
‫e poi riceverai aiuto lì.

