﻿1
00:00:01,260 --> 00:00:02,200
‫Kursleiter:

2
00:00:02,200 --> 00:00:03,783
‫In dieser Vorlesung werden

3
00:00:03,783 --> 00:00:05,980
‫wir über eine Reihe weiterer

4
00:00:05,980 --> 00:00:08,630
‫Dinge sprechen, die Sie über die Arbeit

5
00:00:08,630 --> 00:00:13,610
‫mit npm-Paketen wissen sollten, wie zum Beispiel Versionierung, Aktualisierung oder Löschung von Paketen

6
00:00:13,610 --> 00:00:17,043
‫und auch einige andere Dinge, also fangen wir an.

7
00:00:18,860 --> 00:00:20,670
‫Das erste, worüber

8
00:00:20,670 --> 00:00:25,670
‫ich in diesem Video sprechen möchte, sind diese Versionsnummern unserer Pakete.

9
00:00:26,000 --> 00:00:28,110
‫Die meisten Pakete auf

10
00:00:28,110 --> 00:00:31,510
‫npm folgen der sogenannten semantischen Versionsnotation, was

11
00:00:31,510 --> 00:00:34,140
‫bedeutet, dass ihre Versionsnummern immer

12
00:00:34,140 --> 00:00:36,913
‫mit diesen drei Zahlen ausgedrückt werden.

13
00:00:38,010 --> 00:00:41,000
‫Die erste hier wird als Hauptversion bezeichnet.

14
00:00:41,000 --> 00:00:44,190
‫Die zweite wird als Nebenversion bezeichnet.

15
00:00:44,190 --> 00:00:47,460
‫Die dritte wird als Patch-Version bezeichnet.

16
00:00:47,460 --> 00:00:51,604
‫Diese drei Zahlen haben tatsächlich eine Bedeutung.

17
00:00:51,604 --> 00:00:55,160
‫Die Patch-Version, die hier nur die letzte

18
00:00:55,160 --> 00:00:58,080
‫ist, soll nur Fehler beheben.

19
00:00:58,080 --> 00:01:01,750
‫Sagen wir das in Version 1. 18, die Entwickler fanden einen

20
00:01:01,750 --> 00:01:04,150
‫Fehler und so haben sie diesen Fehler behoben

21
00:01:04,150 --> 00:01:08,663
‫und dann 1 veröffentlicht. 18. 1.

22
00:01:09,860 --> 00:01:11,320
‫Dann fanden sie einen weiteren Fehler

23
00:01:11,320 --> 00:01:14,840
‫und veröffentlichten dann 1. 18. 2 und so weiter und

24
00:01:14,840 --> 00:01:18,843
‫so weiter, bis sie 1 erreicht haben. 18. 11, das

25
00:01:20,350 --> 00:01:22,203
‫ist die aktuelle Versionsnummer.

26
00:01:23,450 --> 00:01:27,140
‫Auch dieser letzte hier ist nur für Fehlerbehebungen.

27
00:01:27,140 --> 00:01:31,040
‫Danach haben wir die Nebenversion.

28
00:01:31,040 --> 00:01:32,670
‫Die Nebenversion führt

29
00:01:32,670 --> 00:01:35,130
‫einige neue Funktionen in das

30
00:01:35,130 --> 00:01:38,170
‫Paket ein, enthält jedoch keine wichtigen Änderungen.

31
00:01:38,170 --> 00:01:41,270
‫Alle Änderungen, die an einer neuen Versionsnummer

32
00:01:41,270 --> 00:01:43,593
‫vorgenommen werden, sind immer abwärtskompatibel.

33
00:01:44,751 --> 00:01:47,410
‫Wenn beispielsweise das Nodemon-Team eines Tages beschließt,

34
00:01:47,410 --> 00:01:51,290
‫Version 1 zu veröffentlichen. 19, nun, das

35
00:01:51,290 --> 00:01:54,110
‫wird dann einige neue Funktionen enthalten, aber

36
00:01:54,110 --> 00:01:56,570
‫es wird unseren Code nicht brechen.

37
00:01:56,570 --> 00:01:59,750
‫Und das gleiche passiert natürlich auch mit diesem hier.

38
00:01:59,750 --> 00:02:03,230
‫Wenn es also eines Tages Slugify 1 gibt. 4, gut, dann

39
00:02:03,230 --> 00:02:06,190
‫wird unser Code immer noch genauso funktionieren.

40
00:02:06,190 --> 00:02:08,320
‫Es wird keine Breaking Changes geben.

41
00:02:08,320 --> 00:02:10,600
‫Es wird einfach etwas Neues

42
00:02:10,600 --> 00:02:14,947
‫geben, also einige neue Features, die nicht nur Bugfixes sind.

43
00:02:14,947 --> 00:02:17,940
‫Bugfixes sind wiederum für die dritte, also

44
00:02:17,940 --> 00:02:19,850
‫für die Patch-Version,

45
00:02:19,850 --> 00:02:23,870
‫und dann kleinere neue Funktionen für die untergeordnete Version.

46
00:02:23,870 --> 00:02:26,620
‫Dann haben wir natürlich die Hauptversion, die nur

47
00:02:26,620 --> 00:02:28,840
‫dann erhöht wird, wenn es

48
00:02:28,840 --> 00:02:33,140
‫sich um eine große neue Version handelt, die bahnbrechende Änderungen enthalten kann.

49
00:02:33,140 --> 00:02:36,500
‫Zum Beispiel, wenn Slugify 2 daherkommt.

50
00:02:36,500 --> 00:02:39,000
‫Nun, unser Code funktioniert möglicherweise nicht

51
00:02:39,000 --> 00:02:42,130
‫mehr, weil die slugify-Funktion, die wir hier haben,

52
00:02:42,130 --> 00:02:44,856
‫beispielsweise ihren Namen geändert hat oder die

53
00:02:44,856 --> 00:02:48,940
‫Parameter, die sie hier erwartet, anders sind oder sich die

54
00:02:48,940 --> 00:02:51,240
‫Optionen geändert haben oder sich etwas

55
00:02:51,240 --> 00:02:53,210
‫geändert hat, das die vorherige

56
00:02:53,210 --> 00:02:55,123
‫Version zerstört. .

57
00:02:57,040 --> 00:02:59,720
‫Beachten Sie, dass eine neue Version normalerweise

58
00:02:59,720 --> 00:03:02,020
‫Auswirkungen auf den Code haben kann,

59
00:03:02,020 --> 00:03:03,570
‫den Sie bereits haben.

60
00:03:05,030 --> 00:03:07,300
‫Aus diesem Grund ist es auch

61
00:03:07,300 --> 00:03:09,823
‫wichtig, über die Aktualisierung von Paketen zu sprechen.

62
00:03:10,670 --> 00:03:12,620
‫In unserem Paket. json-Datei,

63
00:03:12,620 --> 00:03:15,258
‫dieses kleine Symbol hier, das

64
00:03:15,258 --> 00:03:18,460
‫vor der Versionsnummer steht, gibt an,

65
00:03:18,460 --> 00:03:22,363
‫welche Updates wir für jedes der Pakete akzeptieren.

66
00:03:23,290 --> 00:03:27,430
‫Dieses Symbol hier, das npm hier standardmäßig

67
00:03:27,430 --> 00:03:31,900
‫angibt, bedeutet, dass wir Patch- und Minor-Releases akzeptieren.

68
00:03:31,900 --> 00:03:34,890
‫Wie aktualisieren wir nun Pakete eigentlich?

69
00:03:34,890 --> 00:03:39,080
‫Nun, lassen Sie uns diesen Prozess hier tatsächlich beenden.

70
00:03:39,080 --> 00:03:40,580
‫Das erste, was wir

71
00:03:40,580 --> 00:03:44,120
‫tun können, ist zu überprüfen, ob veraltete Pakete vorhanden sind.

72
00:03:44,120 --> 00:03:49,120
‫Wir schreiben npm veraltet, und das sollte uns dann eigentlich eine

73
00:03:49,720 --> 00:03:51,530
‫Tabelle mit allen veralteten

74
00:03:51,530 --> 00:03:53,125
‫Paketen geben.

75
00:03:53,125 --> 00:03:55,970
‫Nun, im Moment sind sie alle auf dem neuesten Stand,

76
00:03:55,970 --> 00:03:57,860
‫also ist das nicht wirklich passiert.

77
00:03:57,860 --> 00:03:59,021
‫Was ich

78
00:03:59,021 --> 00:04:01,550
‫Ihnen jetzt zeigen möchte, ist, dass wir

79
00:04:01,550 --> 00:04:05,240
‫tatsächlich ein bestimmtes Paket mit einer bestimmten Versionsnummer installieren können.

80
00:04:05,240 --> 00:04:06,945
‫Machen wir das mit Slugify und installieren

81
00:04:06,945 --> 00:04:11,003
‫es auf Version 1. 0. 0.

82
00:04:13,980 --> 00:04:18,980
‫Npm installieren slugify und dann bei 1. 0. 0.

83
00:04:22,220 --> 00:04:23,233
‫Probieren wir das aus.

84
00:04:25,645 --> 00:04:29,560
‫Nun haben wir tatsächlich eine Null Null.

85
00:04:29,560 --> 00:04:31,740
‫Wenn wir den Mauszeiger darüber bewegen, wird tatsächlich die

86
00:04:31,740 --> 00:04:35,773
‫neueste Version 1 angezeigt. 3. 4, das hatten wir.

87
00:04:36,660 --> 00:04:40,630
‫Aber wenn wir jetzt npm veraltet ausführen, sollte

88
00:04:40,630 --> 00:04:43,390
‫es uns dann das geben.

89
00:04:43,390 --> 00:04:46,360
‫Wir sehen, dass der Strom 1 ist. 0. 0.

90
00:04:46,360 --> 00:04:50,642
‫Gesucht ist 1. 3. 4, denn das

91
00:04:50,642 --> 00:04:53,060
‫ist diejenige, die wir akzeptieren, denn denken

92
00:04:53,060 --> 00:04:56,820
‫Sie daran, dass wir hiermit alle Patches und alle Nebenversionen

93
00:04:56,820 --> 00:04:59,821
‫akzeptieren, aber natürlich können wir das auch ändern.

94
00:04:59,821 --> 00:05:04,580
‫Zum Beispiel können wir es hier auf dieses Symbol setzen.

95
00:05:04,580 --> 00:05:07,860
‫Dieser akzeptiert dann nur Patch-Releases.

96
00:05:07,860 --> 00:05:09,483
‫Dieser ist etwas sicherer.

97
00:05:10,960 --> 00:05:13,570
‫Wenn wir npm veraltet jetzt wieder ausführen, sehen wir uns

98
00:05:13,570 --> 00:05:14,693
‫an, was wir bekommen.

99
00:05:15,590 --> 00:05:19,150
‫Gesucht wird jetzt nur noch 1. 0. 2, denn

100
00:05:19,150 --> 00:05:22,690
‫auch hier akzeptieren wir nur Nebenversionen.

101
00:05:22,690 --> 00:05:26,090
‫Also 1. 3. 4

102
00:05:26,090 --> 00:05:28,670
‫wird von uns nicht akzeptiert,

103
00:05:28,670 --> 00:05:30,820
‫da wir keine der

104
00:05:30,820 --> 00:05:33,670
‫Nebenversionen akzeptieren, also wieder nur Patch-Versionen.

105
00:05:33,670 --> 00:05:38,670
‫Wenn Sie jetzt npm update slugify durchführen würden, sehen wir uns an, was wir

106
00:05:41,460 --> 00:05:42,903
‫dann bekommen haben.

107
00:05:45,360 --> 00:05:48,440
‫Jetzt sind wir beim 1. 0. 2.

108
00:05:48,440 --> 00:05:49,537
‫Sie sehen,

109
00:05:49,537 --> 00:05:52,930
‫dass sich meine Aktualisierungskonfiguration hier wieder geändert

110
00:05:52,930 --> 00:05:56,360
‫hat, um Neben- und Patch-Versionen zu akzeptieren.

111
00:05:56,360 --> 00:05:58,763
‫Nicht nur die Patch-Releases wie zuvor.

112
00:06:01,010 --> 00:06:02,820
‫Wenn wir das jetzt noch einmal ausführen,

113
00:06:02,820 --> 00:06:04,180
‫sollte es uns tatsächlich bis

114
00:06:04,180 --> 00:06:08,163
‫auf 1 bringen. 3. 4, wie wir vorher hatten.

115
00:06:09,710 --> 00:06:11,343
‫In der Tat, los geht's.

116
00:06:12,550 --> 00:06:16,060
‫Alles klar, so aktualisieren wir Pakete.

117
00:06:16,060 --> 00:06:18,240
‫Es gibt andere Konfigurationen, die

118
00:06:18,240 --> 00:06:20,040
‫wir hier auswählen können.

119
00:06:20,040 --> 00:06:23,070
‫Wir können zum Beispiel sagen, dass wir alle

120
00:06:23,070 --> 00:06:25,970
‫Versionen wollen. Wenn es also irgendwann eine

121
00:06:25,970 --> 00:06:28,790
‫Version 2 gibt und wir unsere Pakete

122
00:06:28,790 --> 00:06:30,930
‫nicht aktualisiert haben, wird

123
00:06:30,930 --> 00:06:33,633
‫unsere Version automatisch auf Version 2 hochgestuft.

124
00:06:34,590 --> 00:06:36,903
‫Dieser enthält alle Versionen,

125
00:06:38,259 --> 00:06:40,880
‫auch solche mit Breaking Changes.

126
00:06:40,880 --> 00:06:43,530
‫Aber das ist normalerweise keine gute Idee,

127
00:06:43,530 --> 00:06:46,330
‫und so gehe ich normalerweise einfach mit dieser

128
00:06:46,330 --> 00:06:49,510
‫Standardeinstellung oder manchmal sogar dieser hier aus, denn irgendwann,

129
00:06:49,510 --> 00:06:52,740
‫selbst wenn ein Minor-Release einfach neue Funktionen einführen sollte,

130
00:06:52,740 --> 00:06:54,880
‫aber keine Breaking Changes, wissen

131
00:06:54,880 --> 00:06:57,690
‫wir das Manchmal kann es Fehler geben, die

132
00:06:57,690 --> 00:07:00,490
‫Entwickler nicht finden, und dann finden diese

133
00:07:00,490 --> 00:07:02,270
‫Fehler ihren Weg in

134
00:07:02,270 --> 00:07:05,010
‫unseren Code und könnten unseren Code brechen.

135
00:07:05,010 --> 00:07:07,600
‫Das wollen wir natürlich nicht.

136
00:07:07,600 --> 00:07:09,700
‫Die sicherste Version ist,

137
00:07:09,700 --> 00:07:12,149
‫diese nur für Fehlerbehebungen zu verwenden.

138
00:07:12,149 --> 00:07:15,510
‫Lassen Sie es uns hier eigentlich einfach so

139
00:07:15,510 --> 00:07:17,783
‫belassen, nur zu Demonstrationszwecken.

140
00:07:19,183 --> 00:07:20,950
‫Das müssen Sie

141
00:07:20,950 --> 00:07:23,123
‫über Versionsnummern und Aktualisierungen wissen.

142
00:07:24,030 --> 00:07:26,443
‫Aber wir können natürlich auch Pakete löschen.

143
00:07:27,350 --> 00:07:30,493
‫Lassen Sie uns jetzt Express

144
00:07:36,280 --> 00:07:40,140
‫installieren, damit wir es danach löschen können.

145
00:07:40,140 --> 00:07:43,000
‫Ich bin sicher, Sie können sich vorstellen, wie wir das machen können.

146
00:07:43,000 --> 00:07:44,960
‫Das ist ganz einfach.

147
00:07:44,960 --> 00:07:49,620
‫Npm uninstall, also heißt es eigentlich nicht löschen.

148
00:07:49,620 --> 00:07:51,510
‫Es deinstalliert wirklich.

149
00:07:51,510 --> 00:07:56,303
‫Wir installieren und deinstallieren Express.

150
00:07:58,170 --> 00:08:00,460
‫Dadurch wird es dann aus unserem

151
00:08:00,460 --> 00:08:02,941
‫Knotenmodulordner und auch aus unseren Abhängigkeiten in

152
00:08:02,941 --> 00:08:05,960
‫einem Paket gelöscht. json-Datei.

153
00:08:06,920 --> 00:08:11,000
‫Jedes Mal, wenn wir uns entscheiden, ein Modul nicht

154
00:08:11,000 --> 00:08:14,140
‫mehr zu verwenden, sollten wir es immer

155
00:08:14,140 --> 00:08:15,983
‫entfernen oder deinstallieren.

156
00:08:16,900 --> 00:08:19,450
‫Als letztes möchte ich noch

157
00:08:19,450 --> 00:08:22,240
‫ein wenig über den Node-Module-Ordner sprechen.

158
00:08:22,240 --> 00:08:24,010
‫Dieser Ordner, der

159
00:08:24,010 --> 00:08:26,600
‫alle Abhängigkeiten unseres Projekts enthält.

160
00:08:26,600 --> 00:08:29,210
‫Angenommen, Sie möchten Ihren Code mit jemandem

161
00:08:29,210 --> 00:08:31,393
‫teilen oder möchten beispielsweise mit der

162
00:08:31,393 --> 00:08:33,550
‫Arbeit an einem Computer

163
00:08:33,550 --> 00:08:35,850
‫beginnen und dann zum nächsten wechseln.

164
00:08:35,850 --> 00:08:39,140
‫Sie werden diesen Knotenmodulordner niemals freigeben, da Sie

165
00:08:39,140 --> 00:08:42,330
‫diesen Code problemlos von npm abrufen können.

166
00:08:42,330 --> 00:08:44,570
‫Sie müssen nicht den gesamten

167
00:08:44,570 --> 00:08:46,760
‫Code hierher kopieren, zum Beispiel

168
00:08:46,760 --> 00:08:50,730
‫in ein GitHub-Repository oder in einen Dropbox-Ordner oder wirklich irgendwo,

169
00:08:50,730 --> 00:08:54,040
‫wo Sie Ihren Code teilen möchten, denn dieser

170
00:08:54,040 --> 00:08:56,000
‫Ordner hier hat, wie

171
00:08:56,000 --> 00:08:58,616
‫Sie sehen, Tonnen von Ordnern und

172
00:08:58,616 --> 00:09:01,670
‫jeder von ihnen kann Tonnen von Dateien haben.

173
00:09:01,670 --> 00:09:03,670
‫Plötzlich können Sie

174
00:09:03,670 --> 00:09:06,313
‫Zehntausende oder Hunderttausende von Dateien haben.

175
00:09:07,718 --> 00:09:09,860
‫Sie sollten diesen Ordner

176
00:09:09,860 --> 00:09:13,173
‫niemals freigeben und niemals in Ihr GitHub-Repository auschecken.

177
00:09:14,680 --> 00:09:17,620
‫Nehmen wir an, Sie haben diesen Code ohne

178
00:09:17,620 --> 00:09:21,173
‫diese Node-Module in Ihr GitHub-Konto hochgeladen oder Sie legen ihn

179
00:09:22,580 --> 00:09:25,020
‫auf einem Computer in eine Dropbox

180
00:09:25,020 --> 00:09:27,660
‫und laden ihn auf dem anderen herunter.

181
00:09:27,660 --> 00:09:30,464
‫Nehmen wir an, wir haben diesen Code jetzt

182
00:09:30,464 --> 00:09:32,780
‫hier heruntergeladen, also ohne Knotenmodule.

183
00:09:32,780 --> 00:09:34,540
‫Also löschen wir diesen

184
00:09:36,050 --> 00:09:38,523
‫jetzt und erhalten nur noch einen normalen Projektordner.

185
00:09:39,720 --> 00:09:42,092
‫Wie bekommen wir jetzt unsere Abhängigkeiten

186
00:09:42,092 --> 00:09:44,180
‫oder unseren Knotenmodulordner zurück?

187
00:09:44,180 --> 00:09:46,120
‫Nun, es ist ganz einfach.

188
00:09:46,120 --> 00:09:48,503
‫Alles, was wir tun müssen, ist npm install.

189
00:09:55,490 --> 00:09:58,950
‫Was es tat, war unser Paket zu lesen. json-Datei, lesen

190
00:09:58,950 --> 00:10:02,030
‫Sie unsere Abhängigkeiten und laden Sie

191
00:10:02,030 --> 00:10:05,860
‫dann alles zurück in diesen Ordner, in Ordnung.

192
00:10:05,860 --> 00:10:07,940
‫Ein wichtiger Teil dieses Puzzles ist

193
00:10:07,940 --> 00:10:10,503
‫nun das Paketschloss. json-Datei.

194
00:10:12,290 --> 00:10:15,070
‫Wenn wir das öffnen, erhalten wir eine

195
00:10:15,070 --> 00:10:17,710
‫Liste aller Versionen aller Pakete, die

196
00:10:17,710 --> 00:10:19,210
‫wir tatsächlich verwenden.

197
00:10:19,210 --> 00:10:22,093
‫Das schließt die Abhängigkeiten unserer Abhängigkeiten ein.

198
00:10:23,100 --> 00:10:25,373
‫Gehen wir zum Beispiel zu Slugify.

199
00:10:28,030 --> 00:10:29,910
‫Slugify, und hier sehen wir, dass wir Version

200
00:10:29,910 --> 00:10:31,413
‫1 verwenden. 3. 4.

201
00:10:33,270 --> 00:10:35,600
‫Das ist sehr wichtig, denn wenn

202
00:10:35,600 --> 00:10:38,420
‫Sie Ihren Code teilen, möchten Sie, dass der

203
00:10:38,420 --> 00:10:40,190
‫andere Entwickler oder sogar

204
00:10:40,190 --> 00:10:42,450
‫Sie genau die gleichen Paketversionen verwenden,

205
00:10:42,450 --> 00:10:45,760
‫damit Ihr Code für Sie und den anderen Entwickler

206
00:10:45,760 --> 00:10:47,300
‫genau gleich funktioniert.

207
00:10:47,300 --> 00:10:50,200
‫Dafür sind die genauen Versionsnummern in

208
00:10:50,200 --> 00:10:52,380
‫diesem Paketschloss grundsätzlich in

209
00:10:52,380 --> 00:10:54,833
‫Stein gemeißelt. json-Datei.

210
00:10:56,624 --> 00:10:58,850
‫Wenn Sie Ihren Code teilen, egal

211
00:10:58,850 --> 00:11:02,180
‫ob Sie GitHub oder Dropbox oder ähnliches verwenden, teilen Sie

212
00:11:02,180 --> 00:11:04,690
‫immer Ihr Paket. json-Datei

213
00:11:04,690 --> 00:11:07,660
‫und die Paketsperre. json-Datei, da

214
00:11:07,660 --> 00:11:09,690
‫diese beiden Dateien für den

215
00:11:09,690 --> 00:11:12,460
‫anderen Entwickler erforderlich sind, um dann

216
00:11:12,460 --> 00:11:15,143
‫im Wesentlichen den Knotenmodulordner zu rekonstruieren.

217
00:11:18,232 --> 00:11:20,860
‫Ja, ich denke, das ist

218
00:11:20,860 --> 00:11:23,600
‫alles, was Sie über Paketversionen, Aktualisieren,

219
00:11:23,600 --> 00:11:28,230
‫Deinstallieren und auch das Teilen von Code mit npm,

220
00:11:28,230 --> 00:11:31,710
‫package. json und Paketsperre. json.

221
00:11:31,710 --> 00:11:33,870
‫Wenn du noch etwas wissen möchtest, kannst

222
00:11:33,870 --> 00:11:37,320
‫du immer wieder im Kurs Q und A nachfragen und

223
00:11:37,320 --> 00:11:39,323
‫dann bekommst du dort Hilfe.

