Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:01,350 --> 00:00:03,440
In this video, let's take a look
2
00:00:03,440 --> 00:00:07,200
at the two types of packages that we can install
3
00:00:07,200 --> 00:00:12,193
with npm, and also the two type of installs that there are.
4
00:00:14,070 --> 00:00:17,070
So the two types of packages that we can install
5
00:00:17,070 --> 00:00:21,419
are simple dependencies or development dependencies.
6
00:00:21,419 --> 00:00:26,419
Now simple, or regular dependencies, are simply packages
7
00:00:26,600 --> 00:00:30,880
that contain some code that we will include in our own code.
8
00:00:30,880 --> 00:00:34,598
So code upon which we built our own application,
9
00:00:34,598 --> 00:00:37,390
and that's why we actually call them dependencies,
10
00:00:37,390 --> 00:00:40,580
because our project and our code depend on them
11
00:00:40,580 --> 00:00:42,130
to work correctly.
12
00:00:42,130 --> 00:00:44,920
For example, Express, which is, again,
13
00:00:44,920 --> 00:00:47,050
the Node framework that we're gonna be using
14
00:00:47,050 --> 00:00:47,943
later in the course,
15
00:00:47,943 --> 00:00:50,478
that'll be a dependency.
16
00:00:50,478 --> 00:00:54,637
So let's now install our very first dependency
17
00:00:54,637 --> 00:00:57,580
just to show you how it works.
18
00:00:57,580 --> 00:01:01,410
And the package that we're gonna install is called Slugify,
19
00:01:01,410 --> 00:01:03,780
which is a small tool that we can use
20
00:01:03,780 --> 00:01:07,490
to make more readable URLs out of names.
21
00:01:07,490 --> 00:01:10,410
For example, like product names in the case
22
00:01:10,410 --> 00:01:12,698
of our node form example.
23
00:01:12,698 --> 00:01:16,579
So in order to install a simple dependency in npm,
24
00:01:16,579 --> 00:01:21,579
all we have to do is say npm install,
25
00:01:23,008 --> 00:01:25,760
and then the name of the package,
26
00:01:25,760 --> 00:01:28,187
which is simply Slugify.
27
00:01:28,187 --> 00:01:31,629
In previous versions, you would also have to say
28
00:01:31,629 --> 00:01:35,660
dash dash save, like this,
29
00:01:35,660 --> 00:01:38,196
but right now that's no longer necessary.
30
00:01:38,196 --> 00:01:42,440
So if you just specify npm install slugify,
31
00:01:42,440 --> 00:01:47,250
it'll then install this package as a regular dependency.
32
00:01:47,250 --> 00:01:51,020
And watch what happens to our package.json file
33
00:01:51,020 --> 00:01:52,803
once that installation is done.
34
00:01:53,950 --> 00:01:58,060
So we'll hit return now, and let's see what happens.
35
00:01:58,060 --> 00:02:00,340
And actually, that was really fast
36
00:02:00,340 --> 00:02:02,690
and it installed our package right away,
37
00:02:02,690 --> 00:02:06,650
and then created this new field here called dependencies,
38
00:02:06,650 --> 00:02:10,163
and put our first dependency, Slugify, right in there.
39
00:02:12,200 --> 00:02:15,240
It also then has the version of the package,
40
00:02:15,240 --> 00:02:18,480
but we're gonna talk a bit more about that later
41
00:02:18,480 --> 00:02:19,353
in this section.
42
00:02:20,632 --> 00:02:23,410
This is our first dependency,
43
00:02:23,410 --> 00:02:26,960
and again, this is just a regular dependency.
44
00:02:26,960 --> 00:02:29,973
And we will use Slugify right in the next video,
45
00:02:30,863 --> 00:02:35,863
so just to get a sense of how we use these
46
00:02:36,060 --> 00:02:38,910
third party dependencies in our code.
47
00:02:38,910 --> 00:02:40,720
But right now, what I want to show you
48
00:02:40,720 --> 00:02:43,650
is that besides these regular dependencies,
49
00:02:43,650 --> 00:02:46,390
we also have development dependencies.
50
00:02:46,390 --> 00:02:50,140
And these are usually just tools for development,
51
00:02:50,140 --> 00:02:53,540
for example like a code bundler like Webpack,
52
00:02:53,540 --> 00:02:57,310
or a debugger tool or a testing library.
53
00:02:57,310 --> 00:03:00,200
So these are development dependencies.
54
00:03:00,200 --> 00:03:02,330
They are not needed for production,
55
00:03:02,330 --> 00:03:05,290
so our code does not really depend on them,
56
00:03:05,290 --> 00:03:08,910
we simply use them to develop our applications.
57
00:03:08,910 --> 00:03:11,640
So let's now install a dev dependency,
58
00:03:11,640 --> 00:03:15,350
which is just a short name for development dependency,
59
00:03:15,350 --> 00:03:17,090
and the tool that we're gonna install
60
00:03:17,090 --> 00:03:19,160
is called nodemon.
61
00:03:19,160 --> 00:03:24,160
So npm install nodemon, like this,
62
00:03:24,900 --> 00:03:27,030
and then what we have to do to specify
63
00:03:27,030 --> 00:03:31,473
that this is a development dependency is to say save dev,
64
00:03:33,500 --> 00:03:37,390
and so this will then add an entry to this package.json
65
00:03:37,390 --> 00:03:40,160
in the dev dependencies.
66
00:03:40,160 --> 00:03:42,661
So let's actually take a look at that
67
00:03:42,661 --> 00:03:46,360
once this is done installing.
68
00:03:46,360 --> 00:03:50,330
Now nodemon is a very nice tool that helps us develop
69
00:03:50,330 --> 00:03:53,749
Node JS applications by automatically restarting
70
00:03:53,749 --> 00:03:58,250
the Node application whenever we change some files
71
00:03:58,250 --> 00:03:59,870
in our working directory.
72
00:03:59,870 --> 00:04:02,850
So remember that in the project,
73
00:04:02,850 --> 00:04:06,300
I was actually closing down the server all the time
74
00:04:06,300 --> 00:04:08,530
and then restarting it each time
75
00:04:08,530 --> 00:04:10,240
that I was changing the code.
76
00:04:10,240 --> 00:04:12,810
But with this tool, that's no longer necessary.
77
00:04:12,810 --> 00:04:16,200
So it will automatically restart the server each time
78
00:04:16,200 --> 00:04:17,283
that we do a change.
79
00:04:18,661 --> 00:04:21,290
So it's now done installing,
80
00:04:21,290 --> 00:04:24,850
and it created a new field called dev dependencies,
81
00:04:24,850 --> 00:04:27,720
and then of course added nodemon in there.
82
00:04:27,720 --> 00:04:30,473
And so our project now basically knows
83
00:04:30,473 --> 00:04:34,805
that we depend on this tool here to develop our application,
84
00:04:34,805 --> 00:04:38,853
and this package here to actually build our code base.
85
00:04:40,660 --> 00:04:44,470
So these are the two types of packages.
86
00:04:44,470 --> 00:04:48,050
Now let's also talk about the two types of installs
87
00:04:48,050 --> 00:04:49,330
of these packages,
88
00:04:49,330 --> 00:04:52,250
because right now all we did was to install
89
00:04:52,250 --> 00:04:55,010
these packages locally,
90
00:04:55,010 --> 00:04:57,658
so they only work in this project
91
00:04:57,658 --> 00:05:00,010
and we can actually see that right here
92
00:05:00,010 --> 00:05:01,390
in our project folder
93
00:05:01,390 --> 00:05:03,800
because npm created this new folder
94
00:05:03,800 --> 00:05:05,963
called node modules for us.
95
00:05:06,810 --> 00:05:10,329
It has all the dependencies of our project.
96
00:05:10,329 --> 00:05:13,501
But now you might ask, well we only specified
97
00:05:13,501 --> 00:05:16,214
Slugify and nodemon,
98
00:05:16,214 --> 00:05:20,658
so what are all of these packages doing here?
99
00:05:20,658 --> 00:05:23,490
Well, that's simply because they in turn
100
00:05:23,490 --> 00:05:26,573
are dependencies of our dependencies.
101
00:05:26,573 --> 00:05:31,400
If, for example, Slugify needs one of these packages,
102
00:05:31,400 --> 00:05:36,130
well, then npm will install these dependencies as well.
103
00:05:36,130 --> 00:05:39,090
And so we end up with all of these dependencies here
104
00:05:39,090 --> 00:05:40,443
in our project.
105
00:05:44,770 --> 00:05:48,600
So these are for local modules,
106
00:05:48,600 --> 00:05:50,720
so Slugify and nodemon, again,
107
00:05:50,720 --> 00:05:54,360
we just installed them locally in our project folder
108
00:05:54,360 --> 00:05:56,790
and they're not gonna work anywhere else.
109
00:05:56,790 --> 00:06:01,170
But with npm, we can also have global installs,
110
00:06:01,170 --> 00:06:04,460
and global installs will then be available anywhere,
111
00:06:04,460 --> 00:06:06,980
not just our project folder,
112
00:06:06,980 --> 00:06:10,490
but in every folder across your entire machine.
113
00:06:10,490 --> 00:06:13,360
So a package should be installed globally
114
00:06:13,360 --> 00:06:17,530
when it provides an executable command that you can run
115
00:06:17,530 --> 00:06:20,000
from the command line interface.
116
00:06:20,000 --> 00:06:24,260
And nodemon, for example, is one tool like that.
117
00:06:24,260 --> 00:06:28,000
So I use nodemon in all Node projects that I work on,
118
00:06:28,000 --> 00:06:31,530
and so I have nodemon installed as a global dependency
119
00:06:31,530 --> 00:06:34,710
because that way I don't have to install it each time
120
00:06:34,710 --> 00:06:36,830
that I'm creating a new project.
121
00:06:36,830 --> 00:06:38,880
I can simply use it in a new project
122
00:06:38,880 --> 00:06:41,083
because it's already installed globally.
123
00:06:41,950 --> 00:06:44,620
So let's now actually do that.
124
00:06:44,620 --> 00:06:46,560
Clear the console here,
125
00:06:46,560 --> 00:06:48,780
and then install it globally.
126
00:06:48,780 --> 00:06:52,480
So npm install,
127
00:06:52,480 --> 00:06:55,290
and there's actually a shorthand for install.
128
00:06:55,290 --> 00:06:58,963
It actually is enough to just write i, like this.
129
00:06:58,963 --> 00:07:02,990
That's actually usually how I do it.
130
00:07:02,990 --> 00:07:07,990
So npm i nodemon, and then flag global.
131
00:07:10,080 --> 00:07:11,283
Hit return now,
132
00:07:13,291 --> 00:07:18,010
and so now it is being installed globally.
133
00:07:18,010 --> 00:07:20,460
But it actually gives us this error,
134
00:07:20,460 --> 00:07:23,480
and if you're on a Mac and did it like this,
135
00:07:23,480 --> 00:07:25,370
then it will also give you an error
136
00:07:25,370 --> 00:07:27,635
simply because you don't have the permissions
137
00:07:27,635 --> 00:07:30,446
to install this package.
138
00:07:30,446 --> 00:07:34,190
If you're on a Mac, it doesn't work,
139
00:07:34,190 --> 00:07:37,090
and I believe on Windows it should work,
140
00:07:37,090 --> 00:07:39,770
at least that's the experience that I have,
141
00:07:39,770 --> 00:07:43,370
but if you're on a Mac, you have actually put sudo
142
00:07:43,370 --> 00:07:46,890
in front of it and then put in your password
143
00:07:46,890 --> 00:07:50,750
basically just to give it permission.
144
00:07:50,750 --> 00:07:52,704
Well in my case I have Touch ID,
145
00:07:52,704 --> 00:07:55,720
but if you don't have that,
146
00:07:55,720 --> 00:07:58,560
you can use your user account password.
147
00:07:58,560 --> 00:08:02,700
Anyway, now that works, and we can now start using nodemon
148
00:08:02,700 --> 00:08:04,470
on this project.
149
00:08:04,470 --> 00:08:07,380
So let me actually show you how it works.
150
00:08:07,380 --> 00:08:09,459
So before to run our app, we did it like this.
151
00:08:09,459 --> 00:08:14,459
We wrote node and then index.js.
152
00:08:14,480 --> 00:08:17,460
What I did here now was actually an autocomplete,
153
00:08:17,460 --> 00:08:19,900
and I think I hadn't talked to you about that
154
00:08:19,900 --> 00:08:21,170
at this point,
155
00:08:21,170 --> 00:08:24,030
so let me go ahead and delete this.
156
00:08:24,030 --> 00:08:26,680
So I started typing the i here,
157
00:08:26,680 --> 00:08:30,200
and since there is no other file which starts with an i,
158
00:08:30,200 --> 00:08:31,550
I can now hit tab,
159
00:08:31,550 --> 00:08:33,950
and so it will automatically complete
160
00:08:33,950 --> 00:08:35,613
the rest of the filename for me.
161
00:08:36,499 --> 00:08:40,279
We used to do it like this, then hit return,
162
00:08:40,279 --> 00:08:42,890
and then whenever we wanted to do some change,
163
00:08:42,890 --> 00:08:46,200
we would have to exit it like this,
164
00:08:46,200 --> 00:08:48,370
and restart everything again.
165
00:08:48,370 --> 00:08:51,963
But that's no longer the case because now we have nodemon.
166
00:08:51,963 --> 00:08:55,900
So all we have to do is to instead of writing node,
167
00:08:55,900 --> 00:08:59,293
we write nodemon and then index.js.
168
00:09:01,490 --> 00:09:04,910
Okay, and so now it's watching every file
169
00:09:04,910 --> 00:09:06,093
with every extension.
170
00:09:07,816 --> 00:09:10,892
If we go now back to our file here,
171
00:09:10,892 --> 00:09:13,100
we don't even need to change anything,
172
00:09:13,100 --> 00:09:15,160
all I have to do is to give it a save
173
00:09:15,160 --> 00:09:18,790
and take a look at what happens down here in the console.
174
00:09:18,790 --> 00:09:20,750
So I'll save it now,
175
00:09:20,750 --> 00:09:24,146
and you see restarting due to changes.
176
00:09:24,146 --> 00:09:28,340
Now it start again, node index.js.
177
00:09:28,340 --> 00:09:29,880
So you see that behind the scenes,
178
00:09:29,880 --> 00:09:32,860
it is actually still running the original command
179
00:09:32,860 --> 00:09:37,370
that we used to do, so node index.js,
180
00:09:37,370 --> 00:09:40,210
and so nodemon is basically just a wrapper
181
00:09:40,210 --> 00:09:42,320
around that node command
182
00:09:42,320 --> 00:09:44,642
simply to make our lives a bit easier.
183
00:09:44,642 --> 00:09:48,530
This is an extremely, extremely handy tool
184
00:09:48,530 --> 00:09:49,990
for us to work with Node,
185
00:09:49,990 --> 00:09:53,670
and for rest of the course, I will always be using nodemon
186
00:09:53,670 --> 00:09:55,083
instead of the node command.
187
00:09:55,970 --> 00:09:59,230
And now just to finish, there's one more small thing
188
00:09:59,230 --> 00:10:01,450
that I wanted to show you here.
189
00:10:01,450 --> 00:10:05,120
So let's say we didn't install nodemon globally.
190
00:10:05,120 --> 00:10:10,120
Well, how would we then use our dev dependency here locally?
191
00:10:10,410 --> 00:10:13,800
So the local nodemon that we have installed.
192
00:10:13,800 --> 00:10:16,730
Well, we couldn't simply run it from the command line
193
00:10:16,730 --> 00:10:20,200
because the local dependencies, they don't work like that.
194
00:10:20,200 --> 00:10:24,240
We cannot simply use them right away in the command line,
195
00:10:24,240 --> 00:10:27,990
but what we can do is to specify an npm script
196
00:10:31,210 --> 00:10:34,130
and we do that here in this script field.
197
00:10:34,130 --> 00:10:36,500
When we did npm in it,
198
00:10:36,500 --> 00:10:40,400
it actually put this one script here for us,
199
00:10:40,400 --> 00:10:41,960
which is for testing,
200
00:10:41,960 --> 00:10:46,760
and then simply said that we don't have any test specified.
201
00:10:46,760 --> 00:10:49,800
So that is just like a placeholder for us now,
202
00:10:49,800 --> 00:10:53,143
which we can replace now with start,
203
00:10:57,490 --> 00:11:02,420
and then nodemon index.js.
204
00:11:02,420 --> 00:11:04,680
And this nodemon that I'm using here
205
00:11:04,680 --> 00:11:06,690
will actually be the nodemon
206
00:11:06,690 --> 00:11:09,622
coming from the dev dependencies.
207
00:11:09,622 --> 00:11:14,110
Instead of writing the command down here in the command line
208
00:11:15,449 --> 00:11:17,100
like I did here,
209
00:11:17,100 --> 00:11:22,100
I will simply put the same thing into an npm script.
210
00:11:22,330 --> 00:11:25,464
The script is called start in this case,
211
00:11:25,464 --> 00:11:28,660
and now we will be able to run that.
212
00:11:28,660 --> 00:11:30,970
So let me finish this one here.
213
00:11:30,970 --> 00:11:33,880
So this is how we run an npm script,
214
00:11:33,880 --> 00:11:37,763
npm run and start,
215
00:11:39,640 --> 00:11:44,640
and indeed it gives us the command here nodemon index.js,
216
00:11:45,010 --> 00:11:48,858
and now everything works the exact same way as before.
217
00:11:48,858 --> 00:11:50,557
Right?
218
00:11:50,557 --> 00:11:52,580
And this has nothing to do with the fact
219
00:11:52,580 --> 00:11:54,733
that we installed nodemon globally before,
220
00:11:54,733 --> 00:11:58,270
it simply works like this because, again,
221
00:11:58,270 --> 00:12:03,210
nodemon is our dev dependency right here in the npm script.
222
00:12:03,210 --> 00:12:04,870
We can then write something
223
00:12:04,870 --> 00:12:07,785
like a command line interface instruction
224
00:12:07,785 --> 00:12:10,640
that it's gonna use that local dependency
225
00:12:10,640 --> 00:12:12,610
and not the global one.
226
00:12:12,610 --> 00:12:14,770
Again, this would've worked just fine
227
00:12:14,770 --> 00:12:17,203
without nodemon installed globally.
228
00:12:18,750 --> 00:12:21,780
This is how you specify npm script,
229
00:12:21,780 --> 00:12:24,666
and we will do a bunch more throughout this course
230
00:12:24,666 --> 00:12:27,750
and we can give them all sorts of names.
231
00:12:27,750 --> 00:12:31,849
Start is kind of a default one for development.
232
00:12:31,849 --> 00:12:33,870
So actually for start,
233
00:12:33,870 --> 00:12:37,973
we don't even have to write npm run start,
234
00:12:37,973 --> 00:12:41,680
but writing npm start is actually enough
235
00:12:41,680 --> 00:12:44,143
to trigger this special command.
236
00:12:46,010 --> 00:12:49,010
So you see again, it works just fine like this.
237
00:12:49,010 --> 00:12:49,843
Perfect.
238
00:12:49,843 --> 00:12:52,040
So in this video, you learned the difference
239
00:12:52,040 --> 00:12:55,990
between regular dependencies and development dependencies,
240
00:12:55,990 --> 00:12:58,680
and then you also learned that you can install them
241
00:12:58,680 --> 00:13:01,040
either locally or globally,
242
00:13:01,040 --> 00:13:04,950
or you can also install them in both places, right?
243
00:13:04,950 --> 00:13:07,850
But actually, usually the global dependencies
244
00:13:07,850 --> 00:13:11,370
that we install are usually always development tools
245
00:13:11,370 --> 00:13:14,500
because they are the ones who make more sense
246
00:13:14,500 --> 00:13:17,810
to install like that, again because they usually provide us
247
00:13:17,810 --> 00:13:21,240
like a nice command line interface program.
248
00:13:21,240 --> 00:13:26,070
In the next video, we will then use this dependency
249
00:13:26,070 --> 00:13:28,650
that we installed here actually in our code
250
00:13:28,650 --> 00:13:30,263
so that you learn actually how to include
251
00:13:30,263 --> 00:13:33,733
a third party module into your code.
19897
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.