00:00
大家好,我是学习园地的特约讲师高洛峰,上节课呢,咱们简单用了一下NPM,其实NTM呢,呃,常用的命令就这么几个。那你说这就会用NPM了吗?学到这就为止了吗?没有,学习NPM最主要的是你得会配置它对不对,所以呢,得学会生成配置文件,咱这镜像的咱们看过了啊,这个呃,Package这个就是杰森这个文件对吧?那我们看一下这个文件是什么样的。看看这个文件是什么样的啊,你比如说我们现在,呃,在这个目录里边,我把这两个都删掉啊,这块有package lock,点杰森,咱先不管这个,我把这两个嗯,所有的包都清掉,现在相当于一个包没有对吧,你看里边的一个包没有对不对,我打开这个终端。GS看一下,你看我们在装包的时候,我们要生成的配置文件怎么生成啊npinit。看这么去生明这么去生成。那生成的时候呢,比如说我加一个杠杠,Yes。
01:01
你看直接就生成这个,我们打开一下。你看拍点阶层文件,你打开一下这个阶层文件。你看默认给我们。嗯。加载了这么多东西,你看啊,这是默认加载的。这么多看到了吧,都是空的,因为我杠杆yes是什么?是把所有的或者一个杠Y的选项都行啊,都加了,你比如说我们现在我删除它。我还可以怎么生成呢?你看啊,我还可怎么生成。好了,NPM。Init初始化的配置文件,我直接回车。咱们一项一项来这块呢,需要指定什么包的名字。那你可以去用这个命令行去生成这个,因为刚才咱们杠yes,直接这些全忽略了,现在咱们may加杠杠yes对不对,或者may加杠Y,那直接相当于一个一个去始化,当然这些你都可以回车,直接什么都不写,或者直接什么CTRLC对不对,任何时间都可以CTRLC去推出,那比如说我一个一写上,比如说包名,就是我自己开发这东西想做成一个包对吧,那我想起的一个包名,或者我项目名,比如说edu work对吧,随便写一个版本号,默认是1.0.0对不对,那我就是一点,呃,0.1。
02:12
起个这个对不对,描述这是什么?呃,Edo work对吧。像等等,你可以随便描述让别人查看的时候。看到你看到描述就知道这什么项目对吧。然后。主文件是什么?主入口文件是什么?就运行的主文件对吧,那默认就是音带一点行吧,呃,咱默认就让它是这个,呃,音带1.js就行了。然后测试命令,你测试命令呢,就是呃,这边后边重点讲,我这块就是先回车吧,什么也不写。然后这块呢,是什么get或者是呃S,呃SVN就是包这个代码存放的地方的一个类型,对不对,比如说咱们是呃get对不对,使用这个。
03:03
然后呢,嗯,关键字,也就是搜索的关键字,Edu worker VE react,就随便写几个对不对,作者比如高落这个包是比如说是我写的,那我就叫高落峰就可以了。这会儿加这些就行了,别的什么呢,呃,都不用动。然后呢,这个license license呢,基本上有,嗯,大概有七种规范吧,比如说IG啊,MIT啊,就是什么麻省理工啊,对吧,那个大学啊之类的那些规范,都开源的协议的一些规范,比如说改成MIT。对吧,然后是否生成了YS yes生成了,那同样这个现在生成的一个文件,你看package点就会在哪呢,你看就会在这里边,而我们刚才录入的那些。看都在这块这个版本描述对吧,主入口文件。输入文件。指定了程序的一个什么入口文件这块。
04:00
也就是我们后期模块开发的时候,使用铝块包含的时候,对不对,就会下载这个,呃,这个文件。就带的这种啊。然后呢,呃,当然这个文件我们也可以去创建啊,去创建这个文件,等后边咱们做例的时候再说。然后我们这块使用的啊。呃,版本控制器对吧,类型用它关键字。作者,这些。那这里边儿有几个你不太了解的,比如说这个脚本,这个脚本什么意思呢?就是我想运行这里边儿的命令。这个呢是命令的一个名称,我怎么调用这个命令呢?使用NP run运行谁呢?运行test,但是这里边有很多对吧,比如说你渲染build对不对,开发的时候DV等等,这T只是测试到后边使用脚手架或什么,里边会有好多命令,你nm re test,那就相当于用NPM运行这个脚本,Test脚本T脚本对应的就是在执行里边的命令。运用在执行里边,命令咱们练习的时候,呃后边有个练习咱们会用这个啊,现在你看执行的时候都是错误,因为什么呢?因为这个IO啊,这些东西都是呃note的一些语法,现在在这块运行不了对吧?那比如说如果想运行的话,当然在配文键,你除了那么生成之外,你建空的,你不用那么一个数在这里边你是可以改的,你比如说我这块呃命令行的命令,命令行我们用什么呢?比如说呃D吧。
05:20
呃,看一下呃,目录的结构保存一下,然后我再test一下。就执行了命令函命令,你想执行什么命令在这里边,那怎么调用它呢?就这样对吧,当然把命令很复杂的,你把命令格式写在这里边,通过这种方式就会调用这里边命令执行,那当然这里边是接线格式,你看这里边可以写多个,比如这里边写个hello,六个命令对不对,然后冒号你这里边,呃,比如说我写个呃,什么命令呢?No no-V吧。看一下他这个版本,那我想运行这个脚本的时候,那我就直接哈。版本就出来了,对吧,就是这个意思,主入文件的后边咱们也会用的描述,其他的都是描述信息,这些东西都呃,都无所谓了啊。
06:04
所以这里边看好这几个字段,认识一下,了解一下,这样的话,因为它是配置文件,我们会经常改的,当然我们有的时候经常改的,并不是说改这些,你看我装一个软件,它会在这里边多出什么来。你看啊呃,我使用n PM install装一个什么呢?装一个j query。比如杠。Nothing。你看结块是3.5这里边。就装了一个,你看我这么装的时候,它会多了一个这个锁文件,这锁文件是针对这个来的,一会儿我再说它什么作用啊,你看它打开它这个文件里面内容你看。里边解块这个东西对不对,那我们这个文件你装完之后。你看一下。在这里边是不是多了一个开发的依赖?就是运行时的依赖对吧。解宽3.5.13.5.1这样的一个呃版本,那如果我在这块装一个。呃,比如说query组装装RY了。
07:02
Boot rap或然后杠第一位。我再装一个预警式依赖。就是开发1万。这文件分析你看下边你看多了一个什么dev开发嘛,对吧,开发的时候依赖这个版本,那这个时候上线项目上线打包上线之后就不带着它里边的所有的软件,而会带着它里边软件上线运行是运行时的会带着它会多这两个。听懂吧,一个开发的时候依赖,一个运行的时候依赖。大家知道了吧,要清楚这个概念啊,开发式医改,必心医改,那么这里边呢,还有什么,还有这个版本,我们直接在这里边是可以改的,你看有的时候这个版本这个符号是干嘛的,这个符号是干嘛的,对不对,那有这个配置文件有什么作用呢?什么作用好你看一下我现在是不是装两个对吧,在这里边儿是不是有两个,我现在。把这个目录。里边内容去删掉。那为什么要删掉呢?因为这都是包的依赖,在这里边已经记住这个了,对吧。
08:02
已经记住这个了,那想象一下,我把项目传给你的时候,我只传给你我写的代码是不是就可以了,咱们两个共用这个对吧?这里边儿如果装脚手架或什么,里边东西是很多的。那比如说几十张,你就算有几十K,它是不是很大也没有必要啊,对吧,那怎么办,我项目拷给你。之后我不拷给你这些扩展包,对吧,那你拿到我这个项目之后,你怎么运行呢?如果你现在直接运行的项目,你运行不了,因为扩展包都没有一会开发依赖运行依赖对不对,那你拿过来也是开发嘛,对吧,开发是依赖也都没有啊,跑哪去啊。对吧,那你也不知道我装了哪些,因为在这个文件里边都记录了,看到了吧,既然都记录这个文件了怎么办。看好了,我直接使用n PM install。那他就会把我所有这个文件里面记录了,按照这个文件内容记录了都跟什么。NPM。NP。嗯,我看一下。
09:00
你看这两个回来了对吧,啊,没有运行错误。看到了吧,都回来了。看到了吧。仓库。所以删掉之后,直接哪怕里边有几十个几百个拿过来之后,拿到别人项目之后,都先n PM install一下,N PM install就会找这个配置文件,按照这个配置文件里边写这些东西,然后去更新我这些软件包就可以了。那这里边有了这批文件了,你看啊。当然了,这个配置文件它是呃,NPM5以后加的一个,你看它是依据这个生成的,但默认生成一个锁文件,也是为了锁定什么版本,锁定固定版本,看到了吧,锁定固定版本也是下载的时候就下载这个版本。那如果我在这文件里边,你看有这个符号是干嘛用的呢。如果直接写这个版本,那么永远。是下载的是这个版本。如果不加这个上导符号,那如果加这个符号,当然这里面都可以改,对不对,加这个符号表示什么呢?表示它会找,你看加这符号会找,比如说。
10:04
这个是一个位置,这个是一个位置,它就会更新这两个后边的就是头一个版本是固定的,对不对,那会把后边这个两个版本按照最新的最大的标号去更新。去更新,你比如说现在我写这个加这个符号了,那下次我更新的时候呢,它就会把。5.1假如说有3.9.2,那它就会3.9.2,假如出了3.9.2,那我再重新安装的时候呢,就会大的版本,最外层大的版本不变,里边两层版本会更新到最新。因为大的版本之间差距很大,但是呢,里边这块呢,差距最外层这个是变化版本之间的代码,那个变化量是最小的这个,然后这个最大的这个不变,但是呢,会在后边这两个会更新到最新的版本,那如果这块。是这个。波浪线的,那表示什么呢?表示是这个,比如说是X是未知的。
11:01
只更新这个到最大的版本。所以有的时候看这文件的时候,你就看到你写的是哪个文件。是这个符号还是波浪线,波浪线是只更新最后一位,而这个。它就有这几种符号,呃,右上边这个符号啊。是后边两个,如果什么都不写,那就固定的这个符号就可以了。要知道这几个版本的这样的一个,呃,一个区别就是这个文件。啊,那这文件其实大概就有这么多内容,比较简单啊,那后边能做练习的应用一下就可以了,重点要知道什么呢?什么是运行式依赖,开发式依赖,写到哪个节点里边去,对吧,通过什么命令进来。然后呢,知道版本的这个作用,那这俩之间关系呢,就是它是锁定固定哪个版本的,它是相当于你可以设置变化版本了。对吧,这是默认生成的NPM5以后才生成的,那呃先去查找它,查找完之后呢,怎么的,如果它这里边有变化,它会根据这个变化来写入这个变化,我们新的安装的软件都会重写,这里边的文件都会自动写的。
12:06
听懂吗?都会去自动写的。那有一些其他语言的,包括管理呢,这个文件你也不用初始化,直接因此到安装的时候都会自动生成这样的文件,咱们得因此到刚页生成,然后你手动改变好,或者按命令行一步一步去写这个文件内容都行。来看一下,这里边介绍了它的属性的说明,这里边儿每一个都给你详细的标注好了,都表示什么呢。每一个都给你详细的说明了,你看这个符号是它两个了,对吧,这一个中的最新版本。是这样的,所以呢,不光是这个NPM,你看到别人包管理器的时候,你看到这些符号的时候,它也是这个作用。那为什么我总强调这个版本呢?因为开发的时候不同版本这个包应用是有差异的,你拿别人项目接着开发,你就要用到他的那个版本,最好你别突然给他更新了,对不对?原来的运行好好的程序都运行不了了,你再一个一个去调整,多麻烦呢,对吧?所以接着开发的时候,就接着他那版本往下写就行了。就这意思。
13:01
然后呢,有的时候你想升级的某一个,比如说有些漏洞或什么是升级小版本还是二层二级版本,对吧,还是顶层版本。这要看情况,那新开发项目咱们肯定都找最新的去玩了,对不对,嗯,好,谢谢大家,这节课我们就讲到这里。
我来说两句