00:00
OK,上一步呢,我们已经过滤掉我们想要过滤的这个ignore文件了,那么接下来呢,我们要做的就是将这个pass里面的文件呢读取出来,然后并且呢添加到comp中,然后输出去就OK了,所以呢,我们要读取这个所有资源啊,读取我们就读取pass中的所有资源吧,写清楚一点啊,好,那么我们来看怎么做啊,那么我们要读取它资源的话呢,我这里呢就得去便利这个pass,好,那么我们要便利它输出所有资源,我们呢就用map方法去编辑一下,那么map方法呢,我就能得到所有的pass了。对吧,Pass便利啊,到pass,然后呢,里面去操作,里面去return,里面去读取它的内容,那么得到每一个pass呢,我就要调用FS一个文件呢,去读取pass的一些内容了,所以呢,我要引入FS模块。FS,然后呢,同样的引入那个我们就简单写一下吧,引入那个U模块里面的一个方法promise法,然后我们呢,通过这个方法呢,再定义一个东西啊,再定义一个叫做read file方法promise法。
01:15
然后呢,对FS.read file进行分装,把它变成一个基于promise风格的一个read file方法,那么我在这里就可调用read方法读取这个pass。Pass,那就是那个资源的路径呗,然后呢,我们wait就能得到所有的data了。那么这里呢,就要把当前函数改成个C函数,那么好,如果你这样写的话呢,那就会出问题,因为map方法呢,遇到C函数并不会的,也就说你这几个函数呢,它并不会一个个的一个的,而是会直接往下执行,那这样就会出问题,我这个文件呢,都没读取完毕,我下面代码就执行完了,那下面代码就获取不到读取的这个文件内容,从而会出问题,对吧?那怎么办呢?很好吧,包一个promise。
02:02
Promise or这个方法呢,会会接受一个数组,数组里面三个promise项,好,Pass里面方法呢,返回知识个数组对吧?数组里面的返回值能看函数的return返回值,而这个函数呢,是一个函数,函数返回值一定是一个pro项,所以呢,我最终这个pass点面方法返回值是一个是一个数组,数组里面呢是think函数的每一个promise项,所以promise.off方法呢,就会等这个数组里面的每一个对象,每一个pro象都变为成功状态,才会接着往下执行,所以我只要在这里加个那么就OK了,当然我要保证上面我加到think函数OOK加到OK,那么只要wait,那么最终我就能得到里面读取的所有的access。啊,File资源好,那么这里面呢,就会去读取文件,这里就是读取文件啊。读取文件好,读取完文件之后呢,我只要把文件return出去就好了,Return出去return到一个一个对象,对象里面的data。
03:07
Data呢,就是那个相应的数据啊,所以最终呢,就是最终要注意就是pass.map方法返回就是一个数组,数组里面是pro项,每一个pro项呢,只要等执行完毕,它最终的返回值都是个对象,对象里面呢会有这个文件数据啊呢就是文件数据。Data呢,就是文件数据好,除了有文件数据以外呢,我还要一个文件名称啊,没有文件名称呢,我这里到后面呢,没办法去输入数据啊,没办法输出,所以我还需要个文件名称,那么我们叫target pass。好,那么文件名呢,其实是它它的一个原啊原路径吧,或者叫文件名吧,也可以啊,我们叫就叫found name,文件名呢,很很简单啊,就是我这个我通过一个一个模块啊,Pass这个模块,那么叫pass这个模块呢,我们这里就不太好去使用这个模块啊,那么这个名字呢,会冲突,OK,呃,这里面呢,实际上是我们absolute pass absolute。
04:21
OK,这就叫速pass,那么这样呢就不会冲突了,那么这样呢,我就会用上我的pass模块给base name方法。那么这个base name呢?就会得到这个absolute,这个pass的最后的一个文件名称,作为我的file name就是文件名称。文件数据呢,就是为了后面呢,我们去啊加载啊,生成一个wipa格式的一个文件,文件名称呢,就是最终我打包的生成的文件名字,总得取个名字吧,所以这个file name就是相应的文件名字啊,这里是获取文件名称。
05:01
啊BISTEM这个方法呢,就是得到最后的,得到最后的文件名称。OK,好,那么最终返回值呢,就是我们想要的files一个个文件了,对吧。要根据这个else这个这这个文件把它变成了we pack格式的,所以我们呢再处理一下。括和as set等于又是要对files进行遍历,点map。得到那么一个file文件,好在这里面呢,我们无非就是要去new那个,对吧,用那个PE那个把它变成那个资源,所以我们这里要引入PE。那么引入它上面的一个S方法啊,S属性我们定义一下。
06:05
pe.sources那么它上面呢,会有一个方法叫roll sourcece,好,我们用上这个roll sourcece,那么这里面呢,无非就是每次去new Rose s传这个file点点塔。对吧,那么生成的值呢,就是我们最终的那个要输出的资源。最终要输出资源,OK,所以呢,我最终呢,Return出去啊,这个资源点点点。好,Return呢,就是最终呢,我就需要一个,呃,点file吧,其实就是需要一个source source。和一个,还有一个file name。File name的职能就是file给file name。好,那么这个access呢,最终就生成了access呢就是最终我们要输出去的资源,那么最后呢,我们要添加到combination中去输出,那么我只要对access呢进行遍历就OK了,那么这里呢,我们就用for each进行遍历,编D呢得到了每个set。
07:08
每一个资源,每一个资源呢,最终啊,都可以调用我们想要的一个方法啊,想要一个方法。Combination。啊,说这么小写的一个方法叫emit aset,就是我们上上面呢,之前讲过的一这个方法aset,它就会把这个资源呢,添加到我们这个里面去,那么第一个呢,就是cesity for name它的文件,第二个呢,就cesity source,就是它的资源名啊。好了,那么这样呢,就会输出去了,OK,最后最后呢,我们要调用CB这个方法对吧,把它终结掉就OK了。好了,整体呢,我们看效果,先看效果,那么我们仔仔细看D怎么动呢?现在只有ATSBTS,那么我们看一下这个是sets,会不会打包过去,我们运行外派。
08:04
OK,打包成功,这时候呢,我们看到这个地层东相动的个资源叫S,点开看没问题啊,里面就是我们想的资源,OK,那么到这里呢,其实我们已经完成了啊,这里面所有功能,但是这里面还差最后一个就是我们这里还有个兔属性啊,要注意突属性呢,我希望就是默认的喜欢的是点就是输出到当前目录,但是如果如果哈,如果他呢,有啊。如果呢,它是呃,有值的,我希望输出到相应的那个路径去,所以这个突属性要在哪里生效呢,往下走。饿了。在这里面呢,我们都是得了文件扩展名啊,文件file name,那么我们对file name进行处理啊,就是如果。啊,如果to有值,那么我们的这个file name呢,应该是要根据这个to的值来去发生变化的,所以就是相当于是我们的比方说是那个S,那么to的值呢,比方是AA这个目录,那么它的名称呢,应该是AA斜杠S,这样的话呢,才能输出到A这个目录下,所以要加上这个to,所以我们判断这个to的值啊来去加,那么这里呢,我们就要对这个反向name呢进行处理一下。
09:14
OK,那么这里呢?我们得到一个相对relatively。Pass,对吧?Pass OK,那么我们最终定义的这个file name呢,应该是要根据这个应该是要根据这个to属性的值啊,那么我们就直接通过pass join方法就可以了,Join引呢,第一个方法传的是to,第二个方法呢,就传这个relative pass,最终呢,生成我们的pop这个name,这里呢得到文件名称啊,这里呢就是跟兔属性组合一下。结合啊,没有吐,没有吐的话呢,它的值呢,诶可能是这个值啊。Reset点,那么有to呢,对吧。
10:05
那么就是。A,比如说to的值是A啊,就是aes,比如说我们C目录吧,C目录es.c那么就是这样的,好,那么我们可以试试啊,我们在外pas,这加上这个突出性,那么这个目录呢,提成CSOK,那么在这里面呢,它最终啊就会去把这个数,这个to,这个CS目录呢和relative这个pass呢组合在一起,形成一个file name,所以最终输出的时候我们再看。打包好,打开这个目录呢,我们看到这里面呢,会多一个文件夹叫C里面有个ESCS这个文件啊,所以它输入到CS目录了,所以呢,这里突属性呢,其实就是去改变这个文件名file name就可以了啊,改变这个文件名生成我们想要的这个file name,那么最终呢,我们在打包输出的时候呢,就可以输出出去了,就可以了啊。好,那么以上呢,就是我们整个内容,所以再回顾一下,整体呢,就是做这个事,首先第一步呢,我们要获取到所有的这个符路径,然后把它变成个绝路径,因为比呢,最好是拿一个绝路径去处理,变成绝择路径之后呢,我们要去忽略文件,那么这里可以用这库叫做lo比,那么这个库呢,就是专门去匹配某一个文件夹下面的一些文件的,那么它第二个参数呢,就是可以忽略掉一些我们不想要匹配的文件啊,那么这样呢,就会得到一个数组,数组里面呢有我们匹配到的所有文件列表,所有文件列表呢,它并不能够直接去用啊,我们需要加载读取里面所有资源,所以呢,用上read file去读取,然后同时呢处理一下最终的这个文件名,看他要不要输出到指定目录还是不要,所以通过pass join方法去去做,如果join其第一个参数to是点的话呢,其实他啥也不会干,啥也不会干。
11:47
往下走,那么加载完资源,读取完资源之后呢,我又把它变成外pack格式的资源,所以通过另一个roll source把它变成外pack资源,然后最终呢,通过comp.am这个方法把它添加到comp中,然后最终wipa打包的时候就会输出去了。
12:04
好了,那么这里呢,就是一个我们给大家完成一个copypa plug的一个插件。
我来说两句