00:00
大家好,这节课我们来了解一下NPM,那NPM呢有两层含义,一层含义是node的开放,是这个模块登记和管理系统啊,它的网址就是NPMJS啊,还有一层含义就是node的默认模块管理器是一个命令行工具啊,我们用它可以来安装和管理弄的模块,那NPM不需要单独安装,在我们安装note的时候会连在一起安装NPM,但是。No的附带的NPM,哎,它的版本可能比较低啊,所以我可以使用下面这个命令升级到最新的一个版本啊,这个at这个啊,Latest表示最新的一个版本杠G表示全局安装啊,所以这个实际执行的命令就是n PM in n PM就自己安装自己啊那。之所以这样呢?其实是因为NPM它本身也只是noe的一个模块而已啊。恰巧这个模块呢,它又能管理其他的模块啊,所以它本身也是noe的一个模块,来我们来查看一下。现在的一个啊,NPM的一个版本啊,那这个呢,我就先全部关掉,我们来新建一个零八。
01:04
目录。好,那现在我们的目录是处在这个零七这里,对吧,先把这个停掉,然后CD到上一级目录,然后零八。嗯,这时候使用NPM啊杠V查看一下NPM的版本啊,我这个版本还是比较高的啊,是7.5,如果大家版本比较低,可以使用这里提供的命令进行一下升级,那我这里就不做尝试了啊呃,再然后呢,我们还可以使用NPM命令去查看一些哎相关的一些信息,比如说来帮助命令,然后是呃,查看各个命令的用法,查看这个版本以及查看这个配置啊,我们来执行一下这个看一下就可以了啊。哎,这个可以查看NPM相关的一个配置的一个情况啊,因为在之前我们呃已经对NPM有了了解,所以这节课呢,我们主要是快速去过一下。来接着看我们第一个比较常用的命令啊NPM啊T,它用来初始化一个新的啊,配点Jason文件会向我们提问一系列的一个问题啊,让我们输入这个用户名啊啥啥啥的啊,如果我们不想嗯输入想全部直接用默认,那怎么跳过这个提问提问阶段呢?直接就杠Y就可以了啊,那比如说我们现在来把。
02:21
这个零八这个目录给初始化成一个啊NPM的这个就是node的一个工程化的一个目录使用。啊,这个命令。等一下啊,我直接手动打到NTMT-Y。这个时候可以告诉我们啊,在这个零八这个木下给我们生成了一个派点,然后这里是里面的这个啊。这个文件的一个内容好编辑器还没有对吧,我们折叠再打开就有了啊,有时候编辑器需要刷新一下啊,这里面就是拍点接这里面内容我们在下一小节课再来介绍这个文件好吧。
03:00
啊,那我输入杠Y呢,就是跳过很多选项,要不然它会让你去输入你的这个版本号啊描述啊等等等等啊,那我就直接啊跳过了就是啊get就是这个NPM啊NT这个命令,然后还有一个n PM site,它用来设置这个环境变量啊。那主要用来设置什么呢?设置这个我们的这个名字啊,我们的邮箱,以及我们的这个,呃,自己的一个个人的域名,还有我们的这个协议啊,然后上使用上面这些命令设设置之后呢,就相当于为这个NPMT设了一个默认值,以后在初始化项目的时候,这里面的作者的姓名,邮件主页啊,许可字段都会填入这个预设的字,可以看到刚才我们创建的这个,哎,都是空的,你看描述啊,是空的,作者也没有啊,作者也是空的,对吧?协议呢是is sc啊,那一旦我们使用这个命令进行了设置之后呢,以后我们再使用NPMIT的时候,就会自动给我们填充。哎,我们设置了一个内容啊,那这些内容被设置到哪里呢?设置到这个加目录用户的加目录的这个文件里面啊,啊这样的话我们在创建啊,以后在初始化项目的时候就不用每次都输入啊好先来看一下,我现在应该是没有这个文件的,Vim是一个编辑器啊,加目录下面的点NPM。
04:18
呃,没有啊,那现在是。没有这个文件啊,没有这个文件呢,我现在来设置一下我的这个名字,来现在来设置一下这个名字。呃,我的名字啊,我就直接设置的是这个1NAME,接下来我再来编辑加目录啊,拨号斜杠,然后点NPM,然后有个RC啊,现在就有这个文件对吧?在这里面就会有一个配置啊,我初始化的这个默认的这个名字啊,那以后我再去使用啊,NP MIIT去,呃,初始化这个项目的时候呢,这些字段啊,就这个作者这个姓名就会给我填上,我现在先把这个删了啊,然后再来执行nt MIT,然后杠Y跳过这个训练项,好,这时候可以发现这个also啊这个。
05:03
作者,这个选项是不是就填上我们预测的这个值啊,所以呢,呃,一般的话,我们自己都是个人电脑,我们自己就是设置一下就可以了,就设置一遍就可以了,以后再初始化项目的时候,就不用每个项目的输入啊,那这是这个。在后还有一个常用的,比较常用的是NPM卡,那NPM是用来修改NPM的一个配置啊,比如说修改呃,这个默认的这个用户名,以及啊,修改这个作者的这个名字以及这个邮箱啊。呃,我们用这个比较多的是修改这个。呃,NPM的它的这个镜像源啊,我们在讲就是说在使用第三方包的时候啊,要从某个地址去拉取第三方包这个资源,对吧,那有时候NM默认的用的是国外的这个源,所以比较慢,那我们使用,嗯,有个命令没给大家写,是查看当前的源是NPM。啊get啊re,所以我们现在使用的这个镜像源,大家可以看到是NPMGS点啊RG是国外的一个地址对吧?所以我们在使用下载第三方包的时候会可能会比较慢,那使用这个命令我们就可以把这个NPM的这个镜像源给设置成淘宝的这个镜像源,来我们来执行一下。
06:13
好,执行完之后再使用n PM get啊register可以发现,哎,这是我们的镜像源就已经换成了淘宝的啊,所以这个呃con菲命令啊,我们一般用来设置这个这个这个镜像源比较设置就是比较多啊,用这个方法。好,那我还把它给设置回来MPM。嗯,扛。Site register,然后我还给设置成默认的啊。好,接着我们再来看啊。使用国内的源呃,下载模块会速度会快一些啊,还有一个命令是NPM啊O,它可以查看模块的一个具体的信息,比如说我们查看这个SX的这个啊信息啊来执行一下。复制,然后粘贴来执行一下。
07:02
好,这里他就会告诉我们这个模块啊,相关的一个信息,然后它的啊一个版本协议啊,以及它的这个啊,其他的一个信息啊,它的描述等等等等啊啊虽然我们没有装这个模块,它也可以给我们显示这个模块的信息的啊。他会从这个远程仓库去读取这个啊。好啊,这里可以看到它这个远程仓库的一个源码的一个地址啊。来,打开我们的笔记啊,继续往下看啊。好啊,当然啊,也可以查看啊,这个某个模块的某一课某一个信息啊,比如说查看它这个版本啊,我来复制一下。来给他执行一下。好,它最新的版本一个0.21.1啊,那是这个。然后是一个NPM4,可以用来搜索NPM的一个仓库啊,后面可以跟这个字符串,也可以跟正常表达式,比如说我们搜索这个啊,X这个包的一个情况啊。它会显示啊,这个资源包啊,我们有哪些可以用的一些资源包啊,可以看到有这么多啊。
08:01
嗯,这边呢,是一个资源包的名字,这边是资源包的一个描述啊。这边是啊,这个日期啊,版本啊等等其他的信息,还有一些关键字啊。可以看到我们之前用的这个就在这里啊,当然还有一些他的其他的一些工具啊。就它这是一个模糊搜索,只要你的这个包含这个名字,它就给你搜索到啊。嗯,接着来看啊n PM list。N PM list呢,它会以这个呃树形结构列出当前项目安装的所有模块,注意是当前项目啊,以及他们的这个依赖,那我们当前现在这个项目是没有去安装这些模块的,是空的对吧?所以呢,我们如果执行这个n PM list的,你是看不到东西的,没有东西啊,是空的啊NPC诶然后呢,我给大家怎么演示呢啊加一个杠杠格global卜可以看全局安装模块的啊,这个树状的一个啊结构,哎,回去看一下。好,这是我这个电脑上全局安装的这些模块,它会以树状的形式啊,给我做一个展开,可以看到我全局安装的模块有这个CNPM,还有这个样,这两个都是为了呃去安装这个包的时候速度会快一些啊,然后还有这个呃,Call啊,以及这个。
09:15
啊,Not德曼用来守护这个进程的,以及呃NPM啊,可以看到NPM其实也是也是一个模块对吧,还有PM2 PM2啊,做这个自动部署,还有这个view的,以及这个webpack啊等等,这些是我们做前端中比较常用的一些东西啊。啊,嗯,接着再来看一下。啊,也可以使用这个命令去查看单个模块的一个情况啊,那这个就不说了,接下来是这个NPM因install,这个可能是我们用的最多的啊,我们要安装其他第三方的模块,就会使用这个啊命令n PM in install啊,然后呃安装呢,可以全局安装,也可以本地安装,全局安装是指将这个模块安装到了我们的这个系统的木录中,这样在所有项目都可以去用到啊,一般来说全局安装只适合去装一些工具,比如说这个啊e link以及这个group webpa等等啊,本地安装呢,是将这个模块安装到你当前项目的啊这个目录下。
10:10
啊,然后呃,它会随着我们的这个项目的这个部署啊,会根据我们的这个安装的模块啊,然后去下载我们项目所需要的一个模块。呃,但是如果我们使用了本地验证,只有在这个当前项目中才能去调用到这个模块啊,那。全局安装和本地安装只是一个参数的一个区别,就是一个杠杠格萝卜一个参数啊,这个in install呢,也可以缩写成I,那我们来简单的来装一个这个呢,呃,使用in命令后面跟啊这个名字啊。好,这个。是吧?啊,可以看到这个啊,字段里面多了一个这个啊,并且有一个版本。
11:02
好,然后node model里面多了一个X对吧。嗯,接着啊,再来看一看这个n PM Miss等等,其实也支持get的一个地址啊,我们可以直接跟get口一个地址来进行安装。啊,在安装之前会先检查啊,如果我们的no models模块已经存在了,就不再会重新安装啊,不会重新安装啊,比如我们再安装一下,他会发现啊,这里面已经有了,就是发现了零个需要呃,更新的一个啊内容。好。如果啊,想要强制安装啊,全部强制安装我们是可以呃,把这个目录删掉啊,重新执行一下,重新执行下一次刀就可以了啊。嗯,如果想重新就是强制安装某一个模块呢,可以加一个杠杠false啊,这个大家自己试一下,那如果想全部重新安装,我们把这个目录删掉,然后n PM in install,在执行n PM install的时候,因为后面我们没有根据包没有没有跟这个包名,它就会按照我们这个字段里面的这个啊已有的啊这个模块去安装啊。
12:06
嗯,然后呢,还可以去安装不同的版版本,使用这个艾啊艾服啊let最新的一个稳定版本,或者直接指定版本号,或者说使用这个啊,大于等于啊或者小于啊,加一些这个限定啊。哎,可以,就是使用这个艾特服加这个版本号。好,然后呢,如果我们在安装的时候呢,加了一个杠杠啊save杠杠啊EXX这个参数的话,它会直接啊安装确切的一个版本号,那这个怎么说呢?嗯,我们可以看一下,刚才我们安装这个ix是什么命令都没有指定,对不对,哎,所以呢,它这里有一个波浪号,就是说这个版本就必须是这个版,最小是这个版本啊,你安装的这个呢,后面安装的都可能是这个这个版本以上的一些版本,那如果我们加了这个参数,我先把这个删掉啊,它就会没有这个,哎。没有这个往上的这个箭头,就是确切的一个版本号,好,现在呢,我先把这个给删掉啊,把这个逗号也删掉,接着呢把这个也给删掉。
13:04
Delete。这时候我在安装这个SX的时候呢,我加杠杠C,然后再加上一个杠杠啊,啊杠杠C呢,会给我们啊把这个这个包存到啊这个字段里面。好,现在来执行。好,安装完成大家对比一下,刚才会发现是不是这边少了一个,诶这个这个符号对不对啊,这就是啊杠杠啊C5杠这个啊确切的一个版本。好。嗯,这里给大家提示了,就是拍点这中的这个是这个这这个符号会消失啊,然后in命令可以使用不同的参数啊。去安装啊,这个属于就是说安装到哪一个啊依赖关系,哎,主要的使用的有一个杠杠C,它会将模块名称添加到啊这个里面啊,可以简化成大写杠S,好还有一个杠杠save,杠杠div,然后。
14:02
它这个会被添加到那个啊deal啊depends里面可以简化成杠D啊,一般我们呃生产环境必须的啊,这些模块我们会啊,加这个杠杠C,装到放到这个字段里面,如果不是生产环境必须的,只是本地开发可能用到了,哎,可能会就装到这个啊,加上这个杠杠C杠带参数啊,让他去添加到这个里面啊,这也是我们经常用的比较多的一个杠S和一杠D啊。啊。嗯,接着还是安装这个其他的版本啊,就是安装这个better版本啊,就是艾特这个better吗。这个就不说了啊,这个安装大家试一下,然后呃,升级这个啊,升级这个版本也不说了啊。啊,这个大家看文档自己看就可以了,然后去卸载的话,使用这个an啊,前面加个an就可以,然后加模块名字。嗯,接下来呢,为大家介绍一下n PM run。NPM啊,不仅可以用于模块管理,还可以用来执行脚本啊,那在这个PA文件里面有一个script字段。
15:02
可以用来指定脚本命令,然后让NPM来直接调用。在这个代码里面啊,就指定了两个命令,一个lit,一个test,那我们使用n PM run lit,或者使用n PM run test就会执行这个命令啊。啊,然后。呃,我们这个完整的命令呢,是n PM run-script啊,那一般呢,我们直接就使用n PM run n PM run呢,是n PM run所谓的缩写,一般我们使用前者。啊,就是说一般是使用这个啊。这个比较比较省事对吧,但实际上后者这个完整的命令可以更好的反映这个命令的本质啊,就是在运行一个脚本啊好呃,下面呢,有它的几个呃,一些介绍啊,有的一些区别,简单跟大家说一下,就是NPM专命令会自动去这个环境变量啊,这个B目录里面去去找啊,所以不用去加这个路径啊。再然后n PM runno,如果不加任何参数直接运行,会列出这里面所有的可执行的一个脚本。
16:02
啊,这个我们来看一下啊,那现在我们这个脚本里面呢,有一个test,那我现在什么都不加,直接就是ndm是啊,它会把我这个所有可执行的一个脚本啊给我列出来看到现在有一个啊。呃,接着NPM呢,内置了两个命令的简写,呃,就是一个是n PM test等同于n PM test,还有一个就是NPM等同于NPM,就这两个命令,当我们在呃使用这个test和这个start这个命令的时候,是可以省略这个run啊,那给大家做一个测试啊,比如我现在是有一个test这个命令,那我使用n PM run test啊,可以执行啊这个test啊。嗯。这个呢,它是输出了啊,它是输出了,这不是,哎,这是我们输出的内容啊,只不过后面是这里出现的错误,那我们简单的啊。就写一写啊I test好,可以看到执行这个命令输出了这个test对吧?啊,那我现一个命令呢,是执行的n PM run test,哎,Node啊,就是说NPM提供了两个命令缩写就是test和一个start,那这个我就可以直接NPM啊test啊,就是这两个命令的一个一个简写啊。
17:15
在接下来的啊这些哎文字这个段落是呃给大家描述了一下,我们在执行这个NPMRA,它是怎么一个过程啊,首先呢是呃会创建一个self用来执行指定命令啊,并将并临时将这个B里面的啊这个B啊no。Models这个model下的B加入pass变量啊,意味着我们本地就可以直接运行啊啊这个下面呢,举了一个呃,E link的一个呃,一个例子啊啊这个大家自己看一看就可以了。嗯,我们接着往下看。嗯,这是我们比较常见的一个PA先生的一个script的一个命令啊,一个watch,一个build,一个start,一个test啊。然后其中的start和test是特殊命令啊,可以省略这个run,呃,然后我们在写这个命令的时候呢,是可以使用一些Linux的管道符啊进行这个啊。
18:12
就是说多个命令的连接的一个使用,然后还可以使用一些and符啊。好。嗯,就是这个里面是,呃可以去写啊,这个Linux我们常啊常用的一些命令都是可以的,但你要注意这个命令执行的一些啊,结果是不是符合你的这个预期,嗯,在下面为大家一一介绍了我们常见的一些脚本啊,你看这里呢,哎,已经给大家列了一些啊我们常见的些脚本,然后在下面呃一给大家详细介绍一下我们常见的一些脚本,首先是一个呃start,那start呃这个命令呢,一般用来启动这个应用程序啊,一般用来啊启动我们的这个核心文件,启动我们这个应用程序啊。呃,再然后是这个第五脚本,第五脚本一一般是用来规定开发阶段所要做的一个处理啊,比如说构建一些网络资源呀,或者说我们呃在写这个页面,或者说开发这个,呃,其他的这个项目的时候,哎,使用这个地啊,这个命令啊,它会为我们加载一些开发阶段所需要的一些处理啊,比如说热加载等等啊。
19:18
哎,热冲载什么的啊。呃,接着大家看一下啊。啊,这下面就是举了一些例子啊,啊,一个server命令,Server命令呢,呃,一般用来启动一个服务啊,大家想想我们在做这个,比如说view开发的时候,生态脚组架是不是就使用这个serve来开启一个啊服务器监听某一个端口,这样的话,我们写完页面之后还能自动的帮我们,哎热重载哎能实时的预览的效果啊,就是使用的这个serve命令啊,这只是一个,呃,这些命令呢,只是一个规范啊,只是一个规范,只是大家都在遵守这个规范啊,所以你一看到这些命令名字,你就会知道做什么。好,呃,这个命令呢,就是启动了一个呃level server模块,因为这里启动一个level serve模块啊,它有三个功能,一个是开启了一个服务器,再一个是有一个自动刷新,再一个就会自动打开浏览器啊,大家可以想一想,我们在使用VI这个脚试架的时候啊,是不是就使用了这个命令啊。
20:11
嗯,还有就是test的脚本命令,一般用于执行这个测试啊,执行测试相关的还有这个。啊,Prod这个命令是一般进入生长环境啊,做这些处理啊。还有汉服命令,能展示一些帮助信息啊。嗯,DOS命令呢,呃,一般用来这个,呃,生成这个文档啊,那接着再给大家介绍一个P和POS的这个脚本,那这个是什么意思呢?就是我们,呃,就是n PM run,它为每条命令提供了P啊和这个post杠两个钩子啊,就说我们的命令如果以这两个为前缀的话,它会触发这个钩子啊,那这个钩子有什么意义呢?啊,就是。会先执行带P的这个钩子,就当我们在执行一个命令的时候,会先执行带P的钩子,然后再执行命令,然后再执行post的这个钩子啊,这里呢,以这个link啊,Link举了一个例子啊,如果我们这里定义了一个。
21:06
啊,Lit的一个命令,那在我们呃,执行这个。N PM run lit的时候,会先执行谁,先执行n PM run啊p lit,然后再执行n PM run lit,再执行n PM run啊post lit啊好,嗯。这里是给大家写的一个例子啊,我们把这个脚本给复制一下,这里是候拿test举的这个例子啊,然后直接复制下面这两个就行了,因为我们现在已经有了一个test,对不对?好test呢?我输出了这个test,然后又定了一个定义了一个p test和一个post test啊,按照我们刚才的介绍,如果我执行这个test的命令,会先执行pre台词啊,会执行它啊,会先输出它啊。把这个给删掉啊。可以删掉啊。啊。然后。那个再会执行它对吧?啊,就是说先执行它,再然后执行它,再然后执行它,我们来试一下m run test啊。
22:06
可以看到啊,在我们执行这个n PM run test的时候,是不是先输出的比分,然后输出了test啊,最后执行了这个塔。对不对,那就是这个P和POS的这两个钩子啊,啊,有时候在做一些呃,对这个命令做一些前置处理啊,或者说一些后置处理的时候啊,就比较好用啊。呃,下面呢,给大家列举了一些常见的一些pre和post的一些脚本啊,大家看一下就可以了,比如说嗯,发布一个模块前执行,发布一个模块后执行啊,自己看一看啊。呃,还一点要注意的是,你不能在pre脚本之前再加p re,就比如说pre pre test啊,是不起作用的。只能加一个啊。好。呃,当然这个NPM也可以,哎,直接也就是说可以自动去运营他们,我们也可以手动去执行他们啊,只要对应的使用啊,执行它这个名字就可以了啊,比如说我们现在啊,就只想执行它啊,那我就NPM啊这个命令就可以了,是不是。
23:05
啊。嗯,接着再往下看啊。呃,就是在这个script字段的时候,定这个字段的时候呢,可以使用一些内部的一个,呃,一个变量啊。嗯。比如说啊这个。来,我把这个写一下啊。再写一个逗号,看看我们内部有什么变量。有一个窝形啊,那就是dota n PM p下划线,加上这个窝形,就是我们的这个内部变量,就可以来用上这个内部的一个变量,我们来执行一下n PM run啊。哎,可以看到啊。现在呢,我们这个命令是干什么呢?是创建了一个啊目录啊,然后是build下面的,然后NPM的这个版本啊,以版本版本这个版本名字创建目录,我们来看一看这里是不是多了一个build目录,然后这里是多了一个版本号。
24:05
啊,以这个版本号为名字创建的这个目录,哎,那我举个例子就是告诉大家,我们可以使用这个do啊,N PM pack,然后后面加上我们这个名字啊,可以拿到我们这个脚本里面的这个变量啊,啊,这是这个例子啊。我们接着再往下看一看啊,下面还有啊一些啊。大家稍微过一下啊,一个是n PM link啊就是。呃,在开发啊这个NPM模块的时候,有时候呃希望边开发边试用啊,那这时候呢,就就这是在涉及到这个开发这个NPM模块的时候啊,比如说啊,想边开发边试用啊,要做这个本地调试的时候,使用这个它会自动加载本机啊开发中的这个模块,但是要使用的模块呢,我们得先把它安装到全局的项目啊,或者安装到全局或者项目的这个nod啊,Models中啊,对于开发中的模块,那我们解决办法就是在全局的这个nots models中来生成一个符号链接,指向我们模块的一个本地的目录啊,相当于建立一个快捷方式,就是个软链接,那n PM link就是起这个作用,它会自动去建立这个。
25:08
啊,符号链接啊,就大家了解一下就可以了,在我们以后做这个就是开发自己的这个模块的时候,可以会呃,可能会用的啊。接着是这个NPMB,它会显示相对于当前目录,Node模块可执行脚本所在的目录啊,实际上就是这个啊,点B这个目录啊,那我们来执行看看啊,当前目录啊,Node所执行的目录就是node models这个目录下的这个点B啊,就是我们执行这个no这些命令,它所在的这个目录,呃,还有这些命令啊,就不给大家演示了啊,主要也是用于在。开发NPM包的时候会用到这些,比如说呃,注册一个用户啊。就是啊,在这个npms com这个网站去注册一个用户啊。执行完这个命令之后啊,会让我们输入自己的用户名,密码以及邮箱啊,嗯,然后是一个n PM po,诶,当我们。
26:00
就是这个push,这个命令是用于将当前的模块,如开发的这个模块发布到这个n PM g com啊。在执行之前,我们需要先去申请这个用户名,你只有呃有账号你才能去发布你的这个包。如果已经哎有这个用户名了,就执行一下登录,诶登录之后呢,就可以使用这个M去发布啊,如果一个模块呢,是better版的话,我们可以去加上一些标签啊,指定它是这个呃,Better版,否则的话,默认发布的标签就是latest啊,就是最新的这个稳定版,哎,如果你要发布私有的啊,就是呃,不想让别人去看到,你可以加上那个杠C啊这个参数。然后这边一个提示啊,说只有这个付费用户才能发布私有模块,那我们呃,一般的话,其实作为开源来讲的话,我们就会呃去呃开源免费开源,我们自己的这个模块也很少去发布些私有的,那私有的话你在你自己的这个呃本地你你保存好也行啊,如果你的这个模块是ES6写的,还要转成啊,最好转成这个ES5啊,在转的时候呢,就要使用这个Bible啊,这个都是发布模块相关的,那这里呢,呃也为大家做演示了,我们这节课主要目的是对这个NPM有一个简单的认识啊,对它的这个概念啊,以及常用的一些命令有一个了解啊,那这小节先到这里。
我来说两句