1.本公开涉及计算机技术领域,尤其涉及一种依赖库的安装方法、装置、服务器、电子设备及存储介质。
背景技术:2.依赖库的使用在代码开发环节十分重要,相关技术中有许多在线代码开发平台,通过在客户端或者服务器采用各种转换命令进行编译解析代码,最终生成浏览器支持识别的代码进行编译渲染,并且,在应用需要时,会新增依赖库。
3.相关技术中,不能够灵活地支持安装个性化的依赖库,并且在解决安装不同版本且同名的多个依赖库可能存在覆盖的技术问题时,所采用的处理方式较为复杂,依赖库的复用性不佳,影响依赖库的安装效率。
技术实现要素:4.本公开旨在至少在一定程度上解决相关技术中的技术问题之一。
5.为此,本公开的目的在于提出一种依赖库的安装方法、装置、服务器、电子设备、存储介质及计算机程序产品,实现灵活地支持安装个性化的依赖库,实现动态地对依赖库文件进行编译处理,能够便捷地、有效地避免编译不同版本且同名的依赖库时可能存在的覆盖问题,有效提升依赖库的复用性,有效提升依赖库的安装效率。
6.本公开第一方面实施例提出的依赖库的安装方法,包括:获取安装依赖请求,其中,安装依赖请求包括:依赖库信息;在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,其中,依赖库文件夹是当前运行项目已有的编译文件夹;对所安装程序代码文件进行编译处理,以得到编译后依赖文件;以及将编译后依赖文件写入前端依赖文件夹中。
7.本公开第一方面实施例提出的依赖库的安装方法,通过获取安装依赖请求,在依赖库文件夹中,安装该安装依赖请求所携带的依赖库信息所属依赖库的程序代码文件,其中,依赖库文件夹是当前运行项目已有的编译文件夹,对所安装程序代码文件进行编译处理,以得到编译后依赖文件,以及将编译后依赖文件写入前端依赖文件夹中,由于是在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,且依赖库文件夹是当前运行项目已有的编译文件夹,以及对所安装程序代码文件进行编译处理,实现灵活地支持安装个性化的依赖库,实现动态地对依赖库文件进行编译处理,能够便捷地、有效地避免编译不同版本且同名的依赖库时可能存在的覆盖问题,有效提升依赖库的复用性,有效提升依赖库的安装效率。
8.本公开第二方面实施例提出的依赖库的安装装置,包括:获取模块,用于获取安装依赖请求,其中,安装依赖请求包括:依赖库信息;安装模块,用于在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,其中,依赖库文件夹是当前运行项目已有的编译文件夹;处理模块,用于对所安装程序代码文件进行编译处理,以得到编译后依赖文件;以及第一写入模块,用于将编译后依赖文件写入前端依赖文件夹中。
9.本公开第二方面实施例提出的依赖库的安装装置,通过获取安装依赖请求,在依赖库文件夹中,安装该安装依赖请求所携带的依赖库信息所属依赖库的程序代码文件,其中,依赖库文件夹是当前运行项目已有的编译文件夹,对所安装程序代码文件进行编译处理,以得到编译后依赖文件,以及将编译后依赖文件写入前端依赖文件夹中,由于是在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,且依赖库文件夹是当前运行项目已有的编译文件夹,以及对所安装程序代码文件进行编译处理,实现灵活地支持安装个性化的依赖库,实现动态地对依赖库文件进行编译处理,能够便捷地、有效地避免编译不同版本且同名的依赖库时可能存在的覆盖问题,有效提升依赖库的复用性,有效提升依赖库的安装效率。
10.本公开第三方面实施例提出一种服务器,包括如本公开第二方面实施例的依赖库的安装装置。
11.本公开第四方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开第一方面实施例的依赖库的安装方法。
12.本公开第五方面,提出了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本公开第一方面实施例的依赖库的安装方法。
13.本公开第六方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本公开第一方面实施例的依赖库的安装方法。
14.本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
15.本公开上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
16.图1是本公开一实施例提出的依赖库的安装方法的流程示意图;
17.图2是本公开另一实施例提出的依赖库的安装方法的流程示意图;
18.图3是本公开另一实施例提出的依赖库的安装方法的流程示意图;
19.图4是本公开另一实施例提出的依赖库的安装方法的流程示意图;
20.图5是本公开一实施例提出的依赖库的安装装置的结构示意图;
21.图6是本公开另一实施例提出的依赖库的安装装置的结构示意图;
22.图7是本公开一实施例提出的服务器的结构示意图;
23.图8示出了适于用来实现本公开实施方式的示例性电子设备的框图。
具体实施方式
24.下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本公开,而不能理解为对本公开的限制。相反,本公开的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同
物。
25.图1是本公开一实施例提出的依赖库的安装方法的流程示意图。
26.其中,需要说明的是,本实施例的依赖库的安装方法的执行主体为依赖库的安装装置,该装置可以由软件和/或硬件的方式实现,该装置可以配置在电子设备中,电子设备可以包括但不限于终端、服务器等。
27.如图1所示,该依赖库的安装方法,包括:
28.s101:获取安装依赖请求,其中,安装依赖请求包括:依赖库信息。
29.其中,用于触发服务器执行依赖库安装的请求,可以被称为安装依赖请求,安装依赖请求中可以包含需要安装的依赖库对应的依赖库信息,该安装依赖请求可以是由客户端生成并发出。
30.一些实施例中,客户端可以向项目开发人员提供安装依赖请求接口,基于该安装依赖请求接口接收项目开发人员输入的安装依赖及版本号,而后对安装依赖及版本号进行封装,并生成相应的安装依赖请求,使得该安装依赖请求中可包括依赖库信息,而后,客户端将该安装依赖请求传输至服务器,以触发服务器进行相应依赖库的安装,对此不做限制。
31.其中,用于描述依赖库的信息,可以被称为依赖库信息,该依赖库信息可以用于唯一标识该依赖库相关的特征、参数、名称、版本等,也即是说,通过配置依赖库信息,基于该依赖库信息指导后续依赖库的动态安装过程。
32.其中,依赖库信息可以例如,需要安装的依赖库名字和版本号等信息。
33.本公开实施例中,在服务器响应安装依赖请求时,可以解析依赖库信息,获取需要安装的依赖库名字和版本号,以触发后续动态安装过程,具体可以参见后续实施例。
34.举例而言,安装依赖请求可以例如为:
[0035]“npm install libname-3.0.0:libname@3.0.0”;
[0036]“npm install libname-4.0.0:libname@4.0.0”等;
[0037]
其中,“npm”为包管理器指令(node package manager,npm),“install”为命令要求指定要安装内容的具体字符串,“libname”为需要安装的依赖库的名字,“3.0.0”与“4.0.0”为依赖库版本号,由此,本公开实施例中支持基于依赖库信息对不同版本且同名的依赖库进行区分,有效避免编译不同版本且同名的依赖库时可能存在的覆盖问题。
[0038]
s102:在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,其中,依赖库文件夹是当前运行项目已有的编译文件夹。
[0039]
其中,用于保存依赖库的程序代码文件的文件夹,可以被称为依赖库文件夹。
[0040]
本公开实施例中,可以将依赖库文件夹配置为当前运行项目已有的编译文件夹,也即是说,在实际动态安装依赖库的过程中,不需要重复地创建和删除依赖库文件夹,并且将依赖库文件夹配置为当前运行项目对应的编译文件夹,由此,可以支持在当前运行项目动态运行的过程中,动态地安装保存依赖库的程序代码文件,无需动态创建和删除编译文件夹,从而实现灵活地支持安装个性化的依赖库,实现动态地对依赖库文件进行编译处理,且有效提升依赖库的安装效率。
[0041]
本公开实施例中,当在服务器部署当前运行项目对应的项目运行程序代码文件时,可以一并配置当前运行项目的编译文件夹,则当当前运行项目处于运行状态时,会相应地产生一些项目运行文件,并将该项目运行文件写入至项目文件夹中,相应地,配置编译文
件夹与该编译文件夹相互独立设置,从而在安装依赖库时,不会对当前运行项目产生影响。
[0042]
本公开实施例在获取安装依赖请求之后,可以在服务器解析安装依赖请求,确定需要安装的依赖库信息,并根据依赖库信息,确定依赖库信息所属依赖库的程序代码文件。
[0043]
本公开实施例中,服务器可以开启子进程,由该子进程响应该安装依赖请求,从存储空间中获取该依赖库信息所属依赖库的程序代码文件,而后实时地将该程序代码文件写入至当前运行项目已有的依赖库文件夹之中,以辅助后续依赖库的安装,在将该程序代码文件写入至当前运行项目已有的依赖库文件夹的过程中,服务器也可以监听依赖库文件夹中依赖库的安装进度,当确定依赖库安装成功时,触发后续步骤,从而实现在依赖库文件夹中灵活安装依赖库的程序代码文件。
[0044]
本公开实施例中,服务器持续可以监听依赖库文件夹中程序代码文件的变化情况,可以设置依赖库安装暂停时间的门限值,配置计时装置,使用计时装置检测依赖库安装过程中的安装暂停时间,根据检测结果与门限值的对比确定依赖库安装完成,当确定一定时间内程序代码文件未发生变化,可以确定依赖库安装完成,或者,也可以设置对应的安装进度查询程序,确定依赖库安装完成,或者,还可以是使用指示安装完成的程序代码等其他任意可能的实现方式确定依赖库安装完成,对此不做限制。
[0045]
举例而言,服务器可以使用监控文件系统文件变化的“chokidar”库,监听“依赖库文件夹(例如,node_modules)”中新增依赖文件夹中程序代码文件的变化情况,当监听到程序代码文件的变化结束时,则确定依赖库信息所属依赖库的程序代码文件安装完成,其中,“node_modules”文件夹,是用于存放使用包管理工具下载安装的依赖库的程序代码文件的文件夹,也即依赖库文件夹。
[0046]
s103:对所安装程序代码文件进行编译处理,以得到编译后依赖文件。
[0047]
其中,依赖库的程序代码文件经过编译处理,得到的编译后的代码文件可以被称为编译后依赖文件,编译后依赖文件与依赖库的程序代码文件可以具有相同或不同的文件格式,对此不做限制。
[0048]
本公开实施例中,可以使用模块打包工具esbuild工具,对安装好的依赖库文件进行编译,生成浏览器可识别的esmodule格式文件,并将该esmodule格式文件作为编译后依赖文件,或者,还可以是使用其他任意可能的编译方式对所安装程序代码文件进行编译处理,以得到编译后依赖文件,对此不做限制。
[0049]
本公开实施例中,在编译处理过程中,服务器可以持续监听依赖库文件夹的变化,在变化结束时,确定完成对所安装程序代码文件的编译,否则,则表示正在编译,则可以持续地监听依赖库文件夹的变化。其中,确定变化结束,可以是预先在所安装程序代码文件的末尾添加编译结束的指令代码,当编译进行至该指令代码,识别并停止编译,确定编译完成,或者,也可以配置对应的计时装置,设置编译暂停时间的门限值,使用计时装置检测编译处理过程中的编译暂停时间,根据检测结果与门限值的对比确定编译完成,对此不做限制。
[0050]
s104:将编译后依赖文件写入前端依赖文件夹中。
[0051]
其中,用于存放编译后依赖文件的文件夹,可以被称为前端依赖文件夹,该前端依赖文件夹可以具体存储于服务器,该前端依赖文件夹可以是与当前运行项目已有的编译文件夹相互独立设置,对此不做限制。
[0052]
本公开实施例中,可以将编译后依赖文件复制至前端依赖文件夹中,以支持客户端发送新的安装依赖请求,安装新的依赖库,服务器在将编译后依赖文件复制写入至前端依赖文件夹的过程中,可以检测前端依赖文件夹是否已存在该编译后依赖文件,若该前端依赖文件夹已存在该编译后依赖文件,则可以不触发复制该编译后依赖文件,以免带入过多的复制资源消耗,而若该前端依赖文件夹中不存在该编译后依赖文件,则可将该编译后依赖文件复制至该前端依赖文件夹,以供当前运行项目的调用,对此不做限制。
[0053]
本公开实施例在将编译后依赖文件写入前端依赖文件夹时,也可以持续监听前端依赖文件夹中所写入编译后依赖文件的变化,在变化结束后,确定编译后依赖文件写入完成,对此不做限制。
[0054]
本实施例中,通过获取安装依赖请求,在依赖库文件夹中,安装该安装依赖请求所携带的依赖库信息所属依赖库的程序代码文件,其中,依赖库文件夹是当前运行项目已有的编译文件夹,对所安装程序代码文件进行编译处理,以得到编译后依赖文件,以及将编译后依赖文件写入前端依赖文件夹中,由于是在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,且依赖库文件夹是当前运行项目已有的编译文件夹,以及对所安装程序代码文件进行编译处理,实现灵活地支持安装个性化的依赖库,实现动态地对依赖库文件进行编译处理,能够便捷地、有效地避免编译不同版本且同名的依赖库时可能存在的覆盖问题,有效提升依赖库的复用性,有效提升依赖库的安装效率。
[0055]
图2是本公开另一实施例提出的依赖库的安装方法的流程示意图。
[0056]
如图2所示,该依赖库的安装方法,包括:
[0057]
s201:运行当前运行项目,以得到项目编译文件。
[0058]
其中,服务器运行的项目可以被称为当前运行项目,在对依赖库进行安装时需要切换当前运行项目。
[0059]
本公开实施例中,可以通过添加一个子进程以支持切换的过程,将依赖库的相关操作放在子进程中执行,在此过程中,当前运行项目能够一直运行,实现在线安装依赖库。
[0060]
其中,当前运行项目运行过程中产生的编译文件,可以被称为项目编译文件,项目编译文件可以储存当前运行项目的运行情况等信息,对此不做限制。
[0061]
本公开实施例中,在服务器运行当前运行项目的过程中,可以记录当前运行项目的运行信息,并实时将运行进度、运行状况、运行结果等数据信息保存至项目编译文件中,或者,也可以持续运行当前运行项目,将运行结果保存至项目编译文件中,对此不做限制。
[0062]
s202:将项目编译文件写入项目文件夹中,其中,项目文件夹和编译文件夹不相同。
[0063]
其中,用于存储项目编译文件的文件夹,可以被称为项目文件夹。
[0064]
本公开实施例中,可以手动在当前运行项目运行前创建对应该项目的项目文件夹,或者,也可以在当前运行项目运行时,自动地生成与当前运行项目对应的项目文件夹,以基于该项目文件夹存储项目编译文件,对此不做限制。
[0065]
本公开实施例中,将项目编译文件写入项目文件夹中,可以是实时将运行当前运行项目生成的项目编译文件写入至项目文件夹中,或者,也可以预先设置写入的时间周期,每隔规定的时间周期,触发将项目编译文件写入项目文件夹中的步骤,或者,还可以是其他任意可能的实现方式将项目编译文件写入项目文件夹中,对此不做限制。
[0066]
本公开实施例中,将项目编译文件写入项目文件夹,能够在安装依赖库文件的过程中,减少对当前运行项目运行的进度的影响,有效提升依赖库的安装效果。
[0067]
s203:获取安装依赖请求,其中,安装依赖请求包括:依赖库信息。
[0068]
s203的描述说明可以具体参见上述实施例,在此不再赘述。
[0069]
s204:响应于文件夹切换指令,由项目文件夹切换至依赖库文件夹中。
[0070]
其中,用于切换服务器运行文件夹的指令信息,可以被称为文件夹切换指令。
[0071]
本公开实施例中,可以预先在服务器初始化文件夹切换指令,当检测接收到安装依赖请求时,配置该初始化文件夹切换指令,以得到并响应于文件夹切换指令,由项目文件夹切换至依赖库文件夹中,或者,也可以在安装依赖请求中添加文件夹切换指令,当接收到安装依赖请求时,从安装依赖请求中解析得到文件夹切换指令和依赖库信息,而后响应于文件夹切换指令,由项目文件夹切换至依赖库文件夹中,对此不做限制。
[0072]
本公开实施例中,可以通过在服务器设置子进程的方式,实现项目文件夹至依赖库文件夹的切换,对此不做限制。
[0073]
举例而言,开启子进程的命令可以例如为:
[0074]“childprocess.spawnsync”;
[0075]
其中,“childprocess”为子进程,“spawnsync”为子进程的产生指令,产生一个子进程,并使用该子进程执行由项目文件夹切换至依赖库文件夹的步骤。
[0076]
本公开实施例在获取安装依赖请求时,可以运行文件夹切换指令,将服务器当前运行的项目文件夹切换至依赖库文件夹中,便于依赖库的安装,从而能够实现文件夹的在线切换,实现在线安装依赖库。
[0077]
s205:在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,其中,依赖库文件夹是当前运行项目已有的编译文件夹。
[0078]
s206:对所安装程序代码文件进行编译处理,以得到编译后依赖文件。
[0079]
s205-s206的描述说明可以具体参见上述实施例,在此不再赘述。
[0080]
s207:将编译后依赖文件写入指定编译目录中。
[0081]
其中,指定编译目录,是用于存储编译后依赖文件的编译目录,通过将编译后依赖文件写入指定编译目录中,可以便于对编译后依赖文件进行查询与监听,对此不做限制。
[0082]
本公开实施例中,可以预先设置指定编译目录,在检测到对所安装程序代码文件进行编译处理时,将编译后依赖文件写入指定编译目录中,对此不做限制。
[0083]
s208:将指定编译目录中的编译后依赖文件写入前端依赖文件夹中。
[0084]
本公开实施例中,服务器可以持续监听指定编译目录中编译后依赖文件的写入进度,当检测到写入完成后,将指定编译目录中的编译后依赖文件写入前端依赖文件夹中。
[0085]
可选地,本公开实施例中,可以判断前端依赖文件夹中是否已存在编译后依赖文件,如果不存在,则将指定编译目录中的编译后依赖文件写入前端依赖文件夹中,由于是通过判断前端依赖文件夹中是否已存在编译后依赖文件,并在不存在时,将指定编译目录中的编译后依赖文件写入前端依赖文件夹中,能够有效避免编译后依赖文件重复写入,提升代码复用率,提升依赖库的编译效率。
[0086]
本公开实施例中,可以设置对应的文件查询系统,用于确定前端依赖文件夹中是否已存在与编译后依赖文件同名的文件,以此判断前端依赖文件夹中是否已存在相同的编
译后依赖文件,或者,也可以使用数据查询的方式,遍历前端依赖文件夹,确定是否已存在相同的编译后依赖文件,或者,还可以是使用其他任意可能的实现方式判断前端依赖文件夹中是否已存在相同的编译后依赖文件,对此不做限制。
[0087]
一些实施例中,当检测到前端依赖文件夹中不存在编译后依赖文件,则将指定编译目录中的编译后依赖文件写入前端依赖文件夹中,而当检测到前端依赖文件夹中存在编译后依赖文件,则可以不执行该写入过程,对此不做限制。
[0088]
另一些实施例中,当检测到前端依赖文件夹中存在编译后依赖文件,则可以跳过该编译后依赖文件的写入,使用已经编译好且保存在前端依赖文件夹的编译后依赖文件,实现共用已有的编译后的依赖库文件,提升代码复用率。
[0089]
本实施例中,由于是在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,且依赖库文件夹是当前运行项目已有的编译文件夹,以及对所安装程序代码文件进行编译处理,实现灵活地支持安装个性化的依赖库,实现动态地对依赖库文件进行编译处理,能够便捷地、有效地避免编译不同版本且同名的依赖库时可能存在的覆盖问题,有效提升依赖库的复用性,有效提升依赖库的安装效率。由于是运行当前运行项目,以得到项目编译文件,将项目编译文件写入项目文件夹中,能够使用子进程编译和安装依赖库文件,实现依赖库的在线安装与编译,提升项目处理与依赖库安装的逻辑性,提升服务器的处理效率。由于是响应于文件夹切换指令,由项目文件夹切换至依赖库文件夹中,能够动态添加安装依赖库的功能,有效提升依赖库安装的灵活性。由于是将编译后依赖文件写入指定编译目录中,将指定编译目录中的编译后依赖文件写入前端依赖文件夹中,能够通过编译目录快速且有效定位识别各个编译后依赖文件,有效避免多个同名不同依赖库版本号的依赖库文件间相互覆盖的技术问题,有效提升编译后依赖文件的定位识别效率。由于是通过判断前端依赖文件夹中是否已存在编译后依赖文件,在不存在时,将指定编译目录中的编译后依赖文件写入前端依赖文件夹中,能够有效避免编译后依赖文件重复写入,提升代码复用率,提升依赖库的编译效率。
[0090]
图3是本公开另一实施例提出的依赖库的安装方法的流程示意图。
[0091]
如图3所示,该依赖库的安装方法,包括:
[0092]
s301:获取安装依赖请求,其中,安装依赖请求包括:依赖库信息,依赖库信息包括:依赖库标识和依赖库版本号。
[0093]
s301的描述说明可以具体参见上述实施例,在此不再赘述。
[0094]
s302:根据依赖库标识,获取所属依赖库的程序代码文件。
[0095]
本公开实施例中,依赖库信息包括:依赖库标识和依赖库版本号。其中,用于标识依赖库的标识信息,可以被称为依赖库标识,不同的依赖库可以具有不同的依赖库标识,对此不做限制。
[0096]
本公开实施例中,在确定依赖库信息后,可以解析依赖库信息中的依赖库标识,确定与依赖库标识对应的依赖库,并从依赖库中获取程序代码文件,或者,也可以使用对应的识别程序,识别依赖库标识,根据识别结果确定所属依赖库,并从依赖库中获取程序代码文件,对此不做限制。
[0097]
s303:在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件。
[0098]
本公开实施例在根据依赖库标识,获取所属依赖库的程序代码文件之后,可以在
依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,其中,程序代码文件的安装可以根据依赖库开发代码的不同选择对应的安装方式,对此不做限制。
[0099]
举例而言,可以直接将安装程序代码文件拷贝至依赖库文件夹,并运行安装程序代码文件,以在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,或者,也可以调用第三方安装程序,基于该第三方安装程序识别程序代码文件,并将程序代码文件安装至依赖库文件夹中,对此不做限制。
[0100]
s304:根据依赖库版本号,对所安装程序代码文件进行标记。
[0101]
本公开实施例中,可以预先设置标识符,使用标识符标记程序代码文件,以用于区分不同版本的依赖库,或者,还可以将设置安装程序代码文件对应的存储路径,标记存储路径以实现标记程序代码文件,或者,还可以是使用其他任意可能的实现方式标记所安装的程序代码文件,对此不做限制。
[0102]
本公开实施例中,可以直接将依赖库版本号作为标记信息,或者,也可以指定字符串作为该依赖库版本号对应的标记信息,对此不做限制。
[0103]
s305:对所安装程序代码文件进行编译处理,以得到编译后依赖文件。
[0104]
s306:将编译后依赖文件写入指定编译目录中。
[0105]
s305-s306的描述说明可以具体参见上述实施例,在此不再赘述。
[0106]
s307:根据依赖库版本号,生成依赖路径。
[0107]
其中,在项目运行过程中,用于索引、定位、调用编译后依赖文件的路径,可以被称为依赖路径。
[0108]
举例而言,依赖路径结合依赖库版本号,可以如下所示:
[0109]“libname-3.0.0”:”/dist/node_modules/libname-3.0.0”;
[0110]
其中,“libname-3.0.0”为依赖库版本号,“dist”与“libname-3.0.0”均为文件夹,“/dist/node_modules/libname-3.0.0”为依赖路径,指代该编译后依赖文件“libname-3.0.0”在“dist”文件夹的“node_modules”文件夹中,对此不做限制。
[0111]
本公开实施例中,可以根据依赖库版本号,预先在指定编译目录中生成用于保存编译后依赖文件的文件夹,并将该文件夹的路径信息作为依赖路径,或者,也可以在确定编译后依赖文件后,查询依赖库版本号对应的标记信息,根据标记信息在指定编译目录中生成对应的文件夹,并将该文件夹的存储路径作为依赖路径,对此不做限制。
[0112]
本公开实施例中,可以参考依赖库版本号生成用于表示编译后依赖文件在指定编译目录的存储路径的依赖路径,依赖路径的使用便于查询所指示的编译后依赖文件,有效提升文件管理的逻辑性,提升文件处理的效率。
[0113]
s308:根据依赖路径,将指定编译目录中的编译后依赖文件写入前端依赖文件夹中。
[0114]
本公开实施例中,确定依赖路径,从依赖路径对应的文件信息中查询编译后依赖文件,并将该编译后依赖文件复制至前端依赖文件夹中,完成写入过程,在写入过程中,服务器可以持续监听前端依赖文件夹的文件写入状况(例如使用“chokidar”命令监听等),在确定文件写入结束后,表明已经写入完成,将成功结束的结果返回至客户端,对此不做限制。
[0115]
本公开实施例中,前端接收到成功安装依赖的结果后,在客户端中请求新安装的
依赖库文件,服务器可以把依赖库文件对应的信息资源返回至前端使用,由此,在客户端安装依赖库版本号不同但是命名相同的依赖库时,能够不相互覆盖,不同版本的依赖库文件能够相互独立,增强信息处理效果。
[0116]
本实施例中,由于是在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,且依赖库文件夹是当前运行项目已有的编译文件夹,以及对所安装程序代码文件进行编译处理,实现灵活地支持安装个性化的依赖库,实现动态地对依赖库文件进行编译处理,能够便捷地、有效地避免编译不同版本且同名的依赖库时可能存在的覆盖问题,有效提升依赖库的复用性,有效提升依赖库的安装效率。由于是将编译后依赖文件写入指定编译目录中,将指定编译目录中的编译后依赖文件写入前端依赖文件夹中,能够通过编译目录快速、有效地定位识别各个编译后依赖文件,有效解决多个同名不同依赖库版本号的依赖库文件间相互覆盖的技术问题,有效提升编译后依赖文件的定位识别效率。通过根据依赖库标识,获取所属依赖库的程序代码文件,在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,根据依赖库版本号,对所安装程序代码文件进行标记,由于是使用依赖库标识,确定程序代码文件,能够将程序代码文件与所属依赖库进行标识,保证程序代码文件与所属依赖库的匹配程度,有效避免错误匹配导致安装错误,实现准确安装依赖库信息所属依赖库的程序代码文件。由于是根据依赖库版本号,生成依赖路径,能够匹配依赖库版本号与依赖路径,能够有效地依据版本号以区分同名依赖库,提升依赖库安装的稳定性。由于是根据依赖路径,将指定编译目录中的编译后依赖文件写入前端依赖文件夹中,能够将安装的编译后依赖文件提供至前端依赖文件夹使用,提升相同编译后依赖文件的复用效果,增强编译后依赖文件的可重复使用性。
[0117]
综上所述,图4是本公开另一实施例提出的依赖库的安装方法的流程示意图,如图4所示,左侧区域为客户端执行逻辑,右侧为服务器执行逻辑,客户端获取依赖库标识和依赖库版本号,生成安装依赖请求,并点击安装依赖请求,服务器接受安装依赖请求,开启子进程,同时监听依赖库文件夹内程序代码文件的变化情况,在监听变化结束时,执行切换至依赖库文件夹的命令,在依赖库文件夹中,执行安装携带依赖库版本号的依赖库安装命令,安装依赖库信息所属依赖库的程序代码文件,同时执行编译命令将编译后依赖文件写入指定编译目录中,在指定编译目录中,包含编译后依赖文件和带有依赖库版本号的依赖路径,持续监听指定编译目录内文件的变化,直至变化结束,判断前端依赖文件夹中是否已存在编译后依赖文件,若存在,则跳过,若不存在,则将指定编译目录中的编译后依赖文件与带有依赖库版本号的依赖路径写入前端依赖文件夹中,持续监听前端依赖文件夹发生变化,直至结束后,将安装成功的结果返回至客户端,客户端接收安装成功的结果后,提示客户端安装依赖库成功,在客户端代码中输入依赖库,并请求服务器中的依赖库文件。
[0118]
由此,能够在不影响项目本身运行的条件下,根据用户提供所需依赖库的名字和依赖库版本号,在服务器项目代码并列的依赖库文件夹中安装依赖库和编译程序代码文件,生成携带依赖库版本号名字的编译后依赖文件,有效避免客户端使用不同版本的同名依赖库,并且无需动态创建和删除依赖库文件夹,还能够使用历史编译的编译后依赖文件,有效减少重复编译带来的资源消耗。
[0119]
图5是本公开一实施例提出的依赖库的安装装置的结构示意图。
[0120]
如图5所示,该依赖库的安装装置50,包括:
[0121]
获取模块501,用于获取安装依赖请求,其中,安装依赖请求包括:依赖库信息;
[0122]
安装模块502,用于在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,其中,依赖库文件夹是当前运行项目已有的编译文件夹;
[0123]
处理模块503,用于对所安装程序代码文件进行编译处理,以得到编译后依赖文件;以及
[0124]
第一写入模块504,用于将编译后依赖文件写入前端依赖文件夹中。
[0125]
在本公开的一些实施例中,如图6所示,图6是本公开另一实施例提出的依赖库的安装装置的结构示意图,还包括:
[0126]
运行模块505,用于在获取安装依赖请求之前,运行当前运行项目,以得到项目编译文件;
[0127]
第二写入模块506,用于将项目编译文件写入项目文件夹中,其中,项目文件夹和编译文件夹不相同。
[0128]
在本公开的一些实施例中,如图6所示,还包括:
[0129]
切换模块507,用于在在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件之前,响应于文件夹切换指令,由项目文件夹切换至依赖库文件夹中。
[0130]
在本公开的一些实施例中,如图6所示,第一写入模块504,具体用于:
[0131]
将编译后依赖文件写入指定编译目录中;
[0132]
将指定编译目录中的编译后依赖文件写入前端依赖文件夹中。
[0133]
在本公开的一些实施例中,如图6所示,第一写入模块504,具体用于:
[0134]
判断前端依赖文件夹中是否已存在编译后依赖文件;
[0135]
在不存在时,将指定编译目录中的编译后依赖文件写入前端依赖文件夹中。
[0136]
在本公开的一些实施例中,如图6所示,依赖库信息包括:依赖库标识和依赖库版本号;
[0137]
其中,安装模块502,具体用于:
[0138]
根据依赖库标识,获取所属依赖库的程序代码文件;
[0139]
在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件;
[0140]
根据依赖库版本号,对所安装程序代码文件进行标记。
[0141]
在本公开的一些实施例中,如图6所示,依赖库信息包括:依赖库版本号,装置还包括:
[0142]
生成模块508,用于在将编译后依赖文件写入指定编译目录中之后,根据依赖库版本号,生成依赖路径。
[0143]
在本公开的一些实施例中,如图6所示,第一写入模块504,具体用于:
[0144]
根据依赖路径,将指定编译目录中的编译后依赖文件写入前端依赖文件夹中。
[0145]
与上述图1至图4实施例提供的依赖库的安装方法相对应,本公开还提供一种依赖库的安装装置,由于本公开实施例提供的依赖库的安装装置与上述图1至图4实施例提供的依赖库的安装方法相对应,因此在依赖库的安装方法的实施方式也适用于本公开实施例提供的依赖库的安装装置,在本公开实施例中不再详细描述。
[0146]
本实施例中,通过获取安装依赖请求,其中,安装依赖请求包括:依赖库信息,在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,其中,依赖库文件夹是当前运
行项目已有的编译文件夹,对所安装程序代码文件进行编译处理,以得到编译后依赖文件,以及将编译后依赖文件写入前端依赖文件夹中,由于是在依赖库文件夹中安装依赖库信息所属依赖库的程序代码文件,且依赖库文件夹是当前运行项目已有的编译文件夹,以及对所安装程序代码文件进行编译处理,实现灵活地支持安装个性化的依赖库,实现动态地对依赖库文件进行编译处理,能够便捷地、有效地避免编译不同版本且同名的依赖库时可能存在的覆盖问题,有效提升依赖库的复用性,有效提升依赖库的安装效率。
[0147]
为了实现上述实施例,本公开还提出一种服务器,如图7所示,图7是本公开一实施例提出的服务器的结构示意图,服务器70包括:上述实施例的依赖库的安装装置50,以实现如本公开前述实施例提出的依赖库的安装方法。
[0148]
图8示出了适于用来实现本公开实施方式的示例性电子设备的框图。图8显示的电子设备12仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0149]
如图8所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0150]
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industry standard architecture;以下简称:isa)总线,微通道体系结构(micro channel architecture;以下简称:mac)总线,增强型isa总线、视频电子标准协会(video electronics standards association;以下简称:vesa)局域总线以及外围组件互连(peripheral component interconnection;以下简称:pci)总线。
[0151]
电子设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0152]
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(random access memory;以下简称:ram)30和/或高速缓存存储器32。电子设备12可以进一步包括其他可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。
[0153]
尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(compact disc read only memory;以下简称:cd-rom)、数字多功能只读光盘(digital video disc read only memory;以下简称:dvd-rom)或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。
[0154]
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本公开所描述的实施例中的功能和/或方法。
[0155]
电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(local area network;以下简称:lan),广域网(wide area network;以下简称:wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其他模块通信。应当明白,尽管图中未示出,可以结合电子设备12使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0156]
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的依赖库的安装方法。
[0157]
为了实现上述实施例,本公开还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开前述实施例提出的依赖库的安装方法。
[0158]
为了实现上述实施例,本公开还提出一种计算机程序产品,当计算机程序产品中的指令处理器执行时,执行如本公开前述实施例提出的依赖库的安装方法。
[0159]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0160]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
[0161]
需要说明的是,在本公开的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0162]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所属技术领域的技术人员所理解。
[0163]
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0164]
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介
质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0165]
此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0166]
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0167]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0168]
尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。