00:00
好,上节呢,我们已经给大家定义好的这个插件了,那么这一章节呢,我们就要开始去写里面的一些核心代码,好,首先我们来看到第一步啊,我们要读取from中的所有资源,那么必然要获取到这个from,我们把这个内容呢给拿拿到手啊。我们的this the options上面呢,会有我们想要的所有东西,第一是from,第二是to啊第二第一是from,第二是to,第三个呢是ignore,是忽略文件嘛,对吧?好,这里面要特别注意就是from啊,From呢我们是写的,To呢是可以不写的,所以这个to呢,我们是可选参数啊,所以我们这里呢,要去考虑到这一点啊,所以我们的这个to属性啊,它应该它呢应该是等于this options.to啊如果有值,那自然就是你这个值啊,This options.to那没有值的话呢,那么我们就给个点啊,给个默认值,代表是当前目录嘛,对吧?所以呢,我们对这个to呢进行初始化啊,初始化它的值给to的默认值,OK,那么下面呢,我们就要去去做了,我们呢要读取它的资源,并且要过滤掉个ignore的一些文件,这一步呢,其实挺麻烦的,这里啊,我们就介绍给大家一个库,叫做glolobe啊lobe。
01:24
好啊,比。那么这个库呢,就是专门用来匹配一些文件列表的,并且呢,可以根据你自己的规则来去忽略掉一些文件,所以它专门用来匹配文件列表,所以用它呢是非常方便的,那么它的用法呢,它返回值呢是个promise对象啊,所以咱们这里改成think啊,它直接调用的返回值这个promise,所以我们就wa一下就好了,返回值呢,就是我们想要的这个所有的文件列表路径啊,Pass,它用呢接受两个参数,第一个就是你要对哪个文件啊,我们来写下文档吧,包比掉。
02:05
第一个参数呢,就是要要处理的文件夹对吧,以及一些其他条件。第二个参数呢,就是小条件,就是options类,Options里面呢,就可以写那些忽略忽略列表了,那么我们要处理问题的呢,那写成是那个from对吧,那么第二个呢,要处理的是那个,那叫一个nor,那然呢,它第二个得是个对象啊,对象里面写成个一个nor好吧,那你这样写的话呢,实际上它是匹配不到的啊,因为它要求from得是个绝缘路径,它他说的要求from是绝路径,所以我们在这里呢,要对from进行处理,要变成一个绝缘路径啊,所以我们这里要处理一下将啊输入路径变成绝路径,那么因为用户的传入的路径有可能是绝路径,有可能不是不是我们要变成绝路径,所以我们这里要判断它是不是这里就得用上一个模块呢,叫pass。
03:15
OK,要是这个模块pass,那么pass呢,它就有一个方法叫is absolute对,判断一个路径呢,是否是觉路径,如果它视觉路径,那自然就返回它,对吧?如果不是我们这里用pass的一个方法,So方法将我们的这个from的变成和绝路径啊好,那变成绝路径这里就是问题了呢,它是以什么路径为基准呢?如果我这写干杆电压内呢,显然不是干电内呢,写的是我的插件的地址,所以显然不是,所以我需要一个上下文地址啊,需要执行目录的一个地址啊,那么这执行目录的地址呢,我们呢,可以直接contact。这个执行上下文地址呢,我们可以去comp里面去取啊,Comp里面取comp呢,Comp对象呢,可以通过它的也是个对象啊,它有对象,它上面呢,有我们定义外派配置上面的所有属性,其中呢,所有属性呢都会挂载到这个options里面,Options上面这个con这个东西,其实这个con注意啊,这个con就是wi派配置中的con,当然有的人说我们没有配置过WiFi配置,对吧,没有配置过这个ne啊,那ne是它默认值,我们PA呢,比方说我在写那个wipa和S的时候,我没有写入口,没有写输出,它不照样有入口和输出吗?这是它默认值,我们没有写那的默认值呢,其实其实这样写呢,其实等价于我写那个process模块点写到D啊,它的值呢,其实默程值就等于这个值啊。
04:51
就是我运行代码的那个目录啊,目录其实你等于它也可以等于这个process cw其实也行啊都行,因为就代表我运行代码的目嘛,啊,所以这个呢,其实就是这个路径呢,就是运行代码的运行指令的目录,我络呢最终会在项目根目运行,所以这个connect对应这个目录,所以我们就以这个目录加上我们的from作为我的决路径啊,作为决路径。
05:19
那么返回值呢?我们叫absolute from。好了,那么我们这样叫A放个绝路径在这里是不是就靠谱了,对吧?好,那么这样写呢,其实还是得不到这个路径啊,我们还是给他打印一下这pass好我们可以运行一下代码,那么要运行的话呢,我们这里要下载这些我们上面的这些插件啊,Lob要下载。那么这个STEM us也下下一下啊,我下载一下这D。OK,下载完成之后呢,我们就可以试一下了啊,我们来运行一下它,看看打赢的结果,NPS派。
06:03
好了,他这里报错了,他说是非法的配置对象啊。好。还有ignore呢,必须是个string啊,这里我们注意我们写错了,我们这个ignore应该是数组啊lay好,这里呢,报了我们这个错误啊,我们再运行应该就可以了,OK啊,它这里呢,诶,我们这样写呢,其实它,诶对这样写,它其实已经得到了,得到了我们想要匹配的这些数组,你看在这里面呢,它就得到一个数组,数里面呢,就有我们想要的index和reset.s诶,其实这里已经得到了我们想要的内容啊,OK,那么所以呢,通过这样呢,我们就可以返回一个数组呗,数组里面有我们写的资源。啊,大家注意这里。啊对啊,有有点问题啊,就是它呢,这个忽略呢,并没有生效,对吧,这个indexm呢,并没有生效,是不是没有生效呢?为什么呢?是因为啊,我们这样写这个inex呢,它是不会被忽略的,它要忽略的话呢,前面比方说我们来举个例子啊,前面加个星星。
07:07
行啊,行星呢,代表就是我任意目录下面的in秒都会不都会被忽略掉啊,所以这样写呢,我们才能忽略啊再运行,诶你看这样输出的结果呢,这个数组里面就没有这个inex HL了L了,好,所以呢,我们呢,这个赢诺呢,就是这块呢,就是我们需要用户呢,到时候自己这样写就OK了,所以我们这块呢,就能成功的忽略掉,成功忽略掉好了,那么到这一步呢,其实我们已经完成了两步啊来这一步呢,就是过滤掉这个ignore的一些文件啊,一些文件,所以这个这里应该是第一步啊,我们再来做第二步,过滤掉文件之后呢,我会读取到这个,呃,Pass。Pass就是所有的文件路径,这个pass呢,就是所有的文件路径,所有要加载要引入的文件路径。
08:01
对吧,到这里呢,就得到所有的要引入要加载的文件路径数组了,好了,那么后面呢,我们只要根据这个pass去读取文件,那么我们就可以了。
我来说两句