CN116679930A - 一种前端项目的构建方法、装置、电子设备及存储介质 - Google Patents

一种前端项目的构建方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116679930A
CN116679930A CN202310707527.7A CN202310707527A CN116679930A CN 116679930 A CN116679930 A CN 116679930A CN 202310707527 A CN202310707527 A CN 202310707527A CN 116679930 A CN116679930 A CN 116679930A
Authority
CN
China
Prior art keywords
file
project
history
construction environment
target front
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310707527.7A
Other languages
English (en)
Inventor
童东生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Youzhuju Network Technology Co Ltd
Original Assignee
Beijing Youzhuju Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Youzhuju Network Technology Co Ltd filed Critical Beijing Youzhuju Network Technology Co Ltd
Priority to CN202310707527.7A priority Critical patent/CN116679930A/zh
Publication of CN116679930A publication Critical patent/CN116679930A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本公开实施例提供了一种前端项目的构建方法、装置、电子设备及存储介质。该方法包括获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识;根据所述文件标识获取所述目标前端项目的构建环境,其中,所述构建环境基于历史前端项目对应的历史构建环境确定;根据所述构建环境对所述目标前端项目进行构建。本公开实施例可以减少从第三方服务器中下载项目依赖的过程,解决下载项目依赖项耗时较高,而导致前端项目构建耗时过高的问题,提升了前端项目构建效率,提高了项目研发效率。

Description

一种前端项目的构建方法、装置、电子设备及存储介质
技术领域
本公开实施例涉及计算机技术,尤其涉及一种前端项目的构建方法、装置、电子设备及存储介质。
背景技术
在前端项目中,项目的构建可以理解为编译,是将源代码转化成宿主浏览器可以执行的代码。
前端项目的构建可能需要依赖多个在先构建的项目,因此,在项目构建之前需要下载项目依赖项。然而,随着项目依赖项的增多,在前端项目构建过程中,下载项目依赖项成为提升构建效率的瓶颈。此外,由于网络及第三方服务器性能等方面的影响,下载耗时可能会更高,导致前端项目构建耗时过高,影响项目研发效率。
发明内容
本公开提供一种前端项目的构建方法、装置、电子设备及存储介质,可以缩短前端项目构建耗时,提升了项目研发效率。
第一方面,本公开实施例提供了一种前端项目的构建方法,包括:
获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识;
根据所述文件标识获取所述目标前端项目的构建环境,其中,所述构建环境基于历史前端项目对应的历史构建环境确定;
根据所述构建环境对所述目标前端项目进行构建。
第二方面,本公开实施例还提供了一种前端项目的构建装置,该装置包括:
标识生成模块,用于获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识;
环境获取模块,用于根据所述文件标识获取所述目标前端项目的构建环境,其中,所述构建环境基于历史前端项目对应的历史构建环境确定;
项目构建模块,用于根据所述构建环境对所述目标前端项目进行构建。
第三方面,本公开实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本公开任意实施例所述的前端项目的构建方法。
第四方面,本公开实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本公开实施例所述的前端项目的构建方法。
本公开实施例提供一种前端项目的构建方法、装置、电子设备及存储介质,通过依赖文件清单生成文件标识,再根据文件标识获取预先缓存的历史前端项目对应的历史构建环境,作为目标前端项目的构建环境,并根据该构建环境对目标前端项目进行构建,可以减少从第三方服务器中下载项目依赖的过程,解决下载项目依赖项耗时较高,而导致前端项目构建耗时过高的问题,提升了前端项目构建效率,提高了项目研发效率。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1为本公开实施例所提供的一种前端项目的构建方法的流程示意图;
图2为本公开实施例所提供的另一种前端项目的构建方法的流程示意图;
图3为本公开实施例所提供的又一种前端项目的构建方法的流程示意图;
图4为本公开实施例所提供的一种前端项目的构建装置的结构示意图;
图5为本公开实施例所提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1为本公开实施例所提供的一种前端项目的构建方法的流程示意图,本公开实施例适用于分布式系统中前端项目构建的情形,该方法可以由前端项目的构建装置来执行,该装置可以通过软件和/或硬件的形式实现,可选的,通过电子设备来实现,该电子设备可以是移动终端、PC端或服务器等。
如图1所示,所述方法包括:
S110、获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识。
其中,前端项目的构建可以理解为将前端项目的源代码转化为宿主浏览器可执行代码的过程。例如,构建可以包括前端项目的源代码的编译、测试、运行、打包、部署等等操作。该目标前端项目可以指本次待构建的前端项目,可以通过项目描述文件获取目标前端项目的依赖文件清单。例如,在目标前端项目的根目录中存在一个项目描述文件,该项目描述文件用于描述前端项目相关的信息。本公开实施例中,项目描述文件可以包括依赖文件清单和元数据。该元数据可以包括项目名称和项目说明等等。该依赖文件清单可以包括依赖文件的文件名、版本号和下载源地址等。
本公开实施例中,文件标识可以用于唯一标识依赖文件清单。具体地,可以基于依赖文件清单中的各个依赖文件的文件名、版本号和下载源地址,采用设定算法生成文件标识。在依赖文件的文件名、版本号和下载源地址中的至少一项发生变化的情况下,计算得到的文件标识均会与原本的文件标识不同,因此,可以通过文件标识判断依赖文件清单中的依赖文件的相关信息是否发生变化。
示例性地,获取所述待构建的目标前端项目的项目描述文件。解析所述项目描述文件,得到所述目标前端项目的依赖文件清单。获取所述依赖文件清单中各个依赖文件的描述信息和下载源地址,根据所述描述信息和下载源地址生成所述文件标识。
可以从目标前端项目的根目录获取项目描述文件。例如,项目描述文件可以为package.json文件。解析该项目描述文件得到目标前端项目的依赖文件清单,该依赖文件清单包括目标前端项目所需的依赖文件的描述信息和下载源地址。根据依赖文件清单中各依赖文件的描述信息和下载源地址,采用设定算法计算文件标识。其中,设定算法可以为标识生成算法,例如,设定算法可以为信息摘要算法、对称加密算法、非对称加密算法等。其中,依赖文件的描述信息可以为标识依赖文件的信息。例如,描述信息可以包括文件名和版本号等等。
具体地,从目标前端项目的根目录获取项目描述文件,解析该项目描述文件得到依赖文件清单。遍历该依赖文件清单,得到各个依赖文件的文件名、版本号和下载源地址,根据各个依赖文件的文件名、版本号和下载源地址生成文件标识。
S120、根据所述文件标识获取所述目标前端项目的构建环境。
其中,所述构建环境基于历史前端项目对应的历史构建环境确定。该历史前端项目对应的历史构建环境被预先缓存至云盘或硬盘等存储设备中,并获取基于历史前端项目的历史依赖文件清单生成的历史文件标识,建立历史文件标识与历史构建环境的关联,从而,可以通过历史文件标识判断历史构建环境是否可以用于目标前端项目的项目构建,进而,减少通过网络从第三方服务器下载依赖文件的过程。
需要说明的是,本公开实施例对历史构建环境的缓存形式并不作具体限定。例如,将历史前端项目对应的历史构建环境的压缩包存储于云盘。可选地,该前端项目对应的历史构建环境还可以被缓存成docker镜像等。
历史构建环境可以是前一次项目构建过程中,基于历史依赖文件生成的构建环境。如果连续N次项目构建过程中,项目构建所需的依赖文件均未发生变化,则可以连续N次不从第三方服务器下载依赖文件,而是使用已缓存的历史构建环境。
在获取目标前端项目的依赖文件清单之后,可以根据依赖文件清单生成文件标识,将该文件标识与历史文件标识进行比对,可以根据比对结果确定是否需要重新下载依赖文件。
本公开实施例中,获取已缓存的历史前端项目对应的历史构建环境关联的历史文件标识,比较目标前端项目对应的文件标识与历史文件标识。在文件标识与历史文件标识相同的情况下,可以认为依赖文件未发生变化,则可以批量的使用历史前端项目的依赖文件,将历史前端项目的依赖文件生成的历史构建环境,作为目标前端项目的构建环境。若文件标识与历史文件标识不同,则认为依赖文件发生变化,需要从第三方服务器中重新下载依赖文件。
S130、根据所述构建环境对所述目标前端项目进行构建。
一些实施例中,在将历史构建环境作为目标前端项目的构建环境的情况下,从缓存位置下载历史构建环境的打包文件。由于前端项目为分布式编译程序,基于负载均衡和调度策略不同,因此,每次构建项目时所使用的设备可能均不同。分布式系统在检测到项目构建请求之后,通过负载均衡和调度策略等方式确定执行项目构建的目标设备,并将历史构建环境的打包文件发送至目标设备。目标设备解压该打包文件,并基于解压后的文件安装构建环境,然后,基于构建环境对目标前端项目的项目代码进行编译等处理。
另一些实施例中,在需要从第三方服务器下载依赖文件的情况下,分布式系统在检测到项目构建请求之后,通过负载均衡和调度策略等方式确定执行项目构建的目标设备。目标设备根据依赖文件清单从第三方服务器下载依赖文件,并基于依赖文件生成构建环境,然后,基于构建环境对目标前端项目的项目代码进行编译等处理。
本公开实施例的技术方案,通过依赖文件清单生成文件标识,再根据文件标识获取预先缓存的历史前端项目对应的历史构建环境,作为目标前端项目的构建环境,并根据该构建环境对目标前端项目进行构建,可以减少从第三方服务器中下载项目依赖的过程,解决下载项目依赖项耗时较高,而导致前端项目构建耗时过高的问题,提升了前端项目构建效率,提高了项目研发效率。
图2为本公开实施例所提供的另一种前端项目的构建方法的流程示意图,本公开实施例在上述实施例的基础上,对根据文件标识获取目标前端项目的构建环境,根据所述构建环境对所述目标前端项目进行构建步骤作进一步限定。
如图2所示,该方法包括:
S201、获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识。
S202、获取所述历史构建环境对应的历史文件标识。
其中,所述历史文件标识基于所述历史前端项目的依赖文件清单生成。
在首次进行项目构建时,从前端项目的根目录获取依赖文件清单,并提取依赖文件清单中每个依赖文件的文件名、版本号和下载源地址,根据各依赖文件的文件名、版本号和下载源地址,采用信息摘要算法计算得到文件标识。根据依赖文件清单从第三方服务器下载对应的依赖文件,并根据依赖文件生成构建环境。由于是首次进行构建,因此,可以将构建环境打包成环境压缩文件,将环境压缩文件与文件标识进行关联,并将环境压缩文件缓存至云盘或硬盘等存储设备,作为历史构建环境。
由于在每次进行项目构建之前,均会执行从前端项目的根目录获取依赖文件清单,并提取依赖文件清单中每个依赖文件的文件名、版本号和下载源地址,根据各依赖文件的文件名、版本号和下载源地址,采用信息摘要算法计算得到文件标识。可以将该文件标识与缓存中的环境压缩文件关联的历史文件标识进行比较。若相等,则不需要更新缓存中的环境压缩文件,否则,会根据新下载的依赖文件生成新的构建环境,并对新的构建环境和计算得到的文件标识进行关联。根据新的构建环境的打包文件更新环境压缩文件,并根据计算得到的文件标识更新历史文件标识。
示例性地,获取与已缓存的历史前端项目的历史构建环境关联的历史文件标识。
S203、判断所述文件标识与历史文件标识是否相同,若是,则执行S204,否则执行S206。
由于一个前端项目对应一个依赖文件清单,可以根据依赖文件清单生成唯一标识,即文件标识。将该文件标识与构建环境关联,可以判定目标前端项目的依赖文件与已缓存的历史构建环境对应的依赖文件是否一致。在依赖文件一致的情况下,可以直接使用历史构建环境对目标前端项目进行构建。由于依赖文件的文件名变更、版本变更或下载源地址变更等情况,均可能导致文件标识不同。在文件标识不同的情况下,需要从第三方服务器下载新的依赖文件,并基于新下载的依赖文件生成新的构建环境,对新的构建环境进行打包,得到环境压缩文件,根据环境压缩文件更新缓存中的原始环境压缩文件,根据新的文件标识更新缓存中的原始文件标识,因此,缓存中仅存在最新的环境压缩文件。
通过比较目标前端项目对应的文件标识和历史文件标识,可以判定缓存中的环境压缩文件是否适用于本次需构建的目标前端项目。
S204、将所述历史构建环境作为所述目标前端项目的构建环境。
在目标前端项目对应的文件标识与历史文件标识相同的情况下,可以判定缓存的环境压缩文件适用于本次需构建的目标前端项目,可以直接从缓存中下载环境压缩文件,并解压该环境压缩文件得到历史构建环境。将历史构建环境作为目标前端项目的构建环境安装至执行项目创建的目标设备中。
S205、获取所述历史前端项目的编译中间结果,根据所述编译中间结果对所述目标前端项目的项目代码进行编译。
由于复用历史构建环境进行目标前端项目的构建,可以基于历史构建环境将目标前端项目的项目代码转换为宿主浏览器可执行代码,在此过程中产生的编译中间结果,与历史前端项目构建过程中的编译中间结果相同,因此,可以复用历史前端项目的编译中间结果,以减少编译过程的运算量。
示例性地,根据文件标识获取已缓存的历史前端项目的编译中间结果,在编译中间结果的基础上,基于构建环境对目标前端项目的项目代码进行继续编译,从而,节省编译时间。
S206、根据所述依赖文件清单从第三方服务器下载依赖文件。
在目标前端项目对应的文件标识与历史文件标识不同的情况下,可以判定缓存的环境压缩文件不适用于本次需构建的目标前端项目,根据依赖文件清单从第三方服务器下载依赖文件。在需要下载依赖文件的情况下,可以基于依赖文件清单中各依赖文件的下载源地址,向第三方服务器发送下载请求,并获取第三方服务器返回的依赖文件。
S207、根据所下载的依赖文件生成所述目标前端项目的构建环境,关联所述构建环境和所述文件标识。
示例性地,执行构建的设备安装所下载的依赖文件,生成目标前端项目的构建环境。由于目标前端项目对应的文件标识与历史文件标识不同,可以对所生成的构建环境进行打包,得到环境压缩文件,并将环境压缩文件与文件标识进行关联存储,实现关联构建环境和文件标识。
S208、采用所述构建环境更新所述历史构建环境,采用所述文件标识更新所述历史文件标识。
示例性地,采用构建环境对应的环境压缩文件替换已缓存的历史前端项目的历史构建环境,采用文件标识替换历史文件标识,以便在下次检测到前端项目构建请求时,通过比较前端项目对应文件标识与历史文件标识,判定是否需下载依赖文件。
S209、基于所述构建环境对所述目标前端项目的项目代码进行编译。
S210、获取所述目标前端项目的项目代码的编译中间结果,将所述编译中间结果和文件标识进行关联。
示例性地,在对目标前端项目的项目代码进行编译的过程中,获取设定的编译中间结果,并将编译中间结果与文件标识进行关联,以通过文件标识判定是否可以直接复用编译中间结果。例如,在目标前端项目对应的文件标识与缓存的历史文件标识相同的情况下,对目标前端项目的项目代码进行编译的过程中可以复用编译中间结果,并在编译中间结果的基础上,继续执行项目代码的编译。在目标前端项目对应的文件标识与缓存的历史文件标识不同的情况下,不能复用编译中间结果。
S211、采用所述编译中间结果更新历史前端项目的编译中间结果。
在目标前端项目对应的文件标识与缓存的历史文件标识不同的情况下,根据目标前端项目的项目代码的编译中间结果替换已缓存的编译中间结果,作为新的历史前端项目的编译中间结果。
本公开实施例的技术方案,通过比较前端项目的文件标识和历史文件标识,判定复用历史构建环境,或者从第三方服务器下载依赖文件,并基于新下载的依赖文件生成新的构建环境,实现利用项目依赖项不常变动的特点,减少从第三方服务器下载依赖文件的次数,可以提升项目构建效率。此外,在项目构建过程中,若前端项目的文件标识和历史文件标识相同,则复用已缓存的编译中间结果,根据该编译中间结果对目标前端项目的项目代码进行编译,可以减少编译运算量,进一步提升项目构建效率。
图3为本公开实施例所提供的又一种前端项目的构建方法的流程示意图,本公开实施例提供一种前端项目构建的具体示例。如图3所示,该方法包括:
S310、获取目标前端项目的package.json文件中的依赖文件清单,根据依赖文件清单生成文件标识。
S320、根据文件标识判断是否命中已缓存的构建环境的docker镜像,若是,则执行S340,否则执行S330。
在首次执行项目构建之后,将构建环境缓存为docker镜像。若再次进行项目构建所需的依赖文件未发生变化,则可以直接获取缓存的docker镜像,执行项目构建。若再次进行项目构建所需的依赖文件发生变化,则基于依赖文件清单从第三方服务器下载依赖文件,可以基于所下载的依赖文件生成新的创建环境,并基于新生成的创建环境执行项目构建。在执行项目构建的过程中,可以异步执行构建环境的更新步骤。
S330、基于依赖文件清单从第三方服务器下载依赖文件。
S340、获取构建环境。
在目标前端项目对应的文件标识与已缓存的docker镜像关联的历史文件标识相同的情况下,确定已存在目标前端项目对应的构建环境,可将已缓存的docker镜像作为目标前端项目的构建环境。
在目标前端项目对应的文件标识与已缓存的docker镜像关联的历史文件标识不同的情况下,基于新下载的依赖文件生成构建环境。
S350、判断已缓存的docker镜像是否需要更新,若是,则执行S360,否则执行S370。
在目标前端项目对应的文件标识与历史文件标识相同的情况下,判定无需更新已缓存的docker镜像。
在目标前端项目对应的文件标识与历史文件标识不同的情况下,判定需更新已缓存的docker镜像。
S360、更新已缓存的docker镜像。
根据新生成的构建环境生成新的docker镜像,并关联新生成的docker镜像与文件标识。与项目构建步骤异步执行docker镜像更新,避免更新docker镜像影响项目构建效率。例如,在执行项目构建的过程中,可以异步执行采用新生成的docker镜像替换原docker镜像,采用文件标识替换历史文件标识。
S370、执行项目构建。
在目标前端项目对应的文件标识与历史文件标识相同的情况下,使用已缓存的构建环境,进行目标前端项目的项目代码的编译。
在目标前端项目对应的文件标识与历史文件标识不同的情况下,使用新生成的构建环境,进行目标前端项目的项目代码的编译。
图4为本公开实施例所提供的一种前端项目的构建装置的结构示意图,该装置可以执行本公开任意实施例提供的一种前端项目的构建方法,该装置可由软件和/或硬件的形式实现,可选的,通过电子设备来实现,该电子设备可以是移动终端、PC端或服务器等。
如图4所示,所述装置包括:标识生成模块410、环境获取模块420以及项目构建模块430。
标识生成模块410,用于获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识;
环境获取模块420,用于根据所述文件标识获取所述目标前端项目的构建环境,其中,所述构建环境基于历史前端项目对应的历史构建环境确定;
项目构建模块430,用于根据所述构建环境对所述目标前端项目进行构建。
本公开实施例所提供的技术方案,通过依赖文件清单生成文件标识,再根据文件标识获取预先缓存的历史前端项目对应的历史构建环境,作为目标前端项目的构建环境,并根据该构建环境对目标前端项目进行构建,可以减少从第三方服务器中下载项目依赖的过程,解决下载项目依赖项耗时较高,而导致前端项目构建耗时过高的问题,提升了前端项目构建效率,提高了项目研发效率。
可选地,标识生成模块410包括:
第一获取单元,用于获取所述待构建的目标前端项目的项目描述文件;
解析单元,用于解析所述项目描述文件,得到所述目标前端项目的依赖文件清单;
生成单元,用于获取所述依赖文件清单中各个依赖文件的描述信息和下载源地址,根据所述描述信息和下载源地址生成所述文件标识。
可选地,所述生成单元具体用于:
遍历所述依赖文件清单,得到各个依赖文件的文件名、版本号和下载源地址;
根据所述各个依赖文件的文件名、版本号和下载源地址生成文件标识。
可选地,环境获取模块420包括:
第二获取单元,用于获取所述历史构建环境对应的历史文件标识,其中,所述历史文件标识基于所述历史前端项目的依赖文件清单生成;
比对单元,用于将所述文件标识与历史文件标识进行比对;
构建环境确定单元,用于在所述文件标识与历史文件标识相同的情况下,将所述历史构建环境作为所述目标前端项目的构建环境。
可选地,所述构建环境确定单元具体用于:
获取所述历史前端项目的编译中间结果,根据所述编译中间结果对所述目标前端项目的项目代码进行编译。
可选地,环境获取模块420还包括:
下载单元,用于在将所述文件标识与历史文件标识进行比对之后,在所述文件标识与历史文件标识不同的情况下,根据所述依赖文件清单从第三方服务器下载依赖文件;
关联单元,用于根据所下载的依赖文件生成所述目标前端项目的构建环境,关联所述构建环境和所述文件标识;
更新单元,用于采用所述构建环境更新所述历史构建环境,采用所述文件标识更新所述历史文件标识。
可选地,所述项目构建模块430具体用于:
基于所述构建环境对所述目标前端项目的项目代码进行编译。
可选地,该装置还包括:
结果获取模块,用于在基于所述构建环境对所述目标前端项目的项目代码进行编译之后,获取所述目标前端项目的项目代码的编译中间结果,将所述编译中间结果和文件标识进行关联;
结果更新模块,用于采用所述编译中间结果更新历史前端项目的编译中间结果。
本公开实施例所提供的前端项目的构建装置可执行本公开任意实施例所提供的前端项目的构建方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述装置所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本公开实施例的保护范围。
图5为本公开实施例所提供的一种电子设备的结构示意图。下面参考图5,其示出了适于用来实现本公开实施例的电子设备(例如图5中的终端设备或服务器)500的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储装置508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、ROM 502以及RAM 503通过总线504彼此相连。编辑/输出(I/O)接口505也连接至总线504。
通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从ROM 502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
本公开实施例提供的电子设备与上述实施例提供的前端项目的构建方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例与上述实施例具有相同的有益效果。
本公开实施例提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所提供的前端项目的构建方法。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:
获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识;
根据所述文件标识获取所述目标前端项目的构建环境,其中,所述构建环境基于历史前端项目对应的历史构建环境确定;
根据所述构建环境对所述目标前端项目进行构建。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,示例1提供了一种前端项目的构建方法,包括:
获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识;
根据所述文件标识获取所述目标前端项目的构建环境,其中,所述构建环境基于历史前端项目对应的历史构建环境确定;
根据所述构建环境对所述目标前端项目进行构建。
根据本公开的一个或多个实施例,示例2根据示例1所述的方法,所述获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识,包括:
获取所述待构建的目标前端项目的项目描述文件;
解析所述项目描述文件,得到所述目标前端项目的依赖文件清单;
获取所述依赖文件清单中各个依赖文件的描述信息和下载源地址,根据所述描述信息和下载源地址生成所述文件标识。
根据本公开的一个或多个实施例,示例3根据示例2所述的方法,所述获取所述依赖文件清单中各个依赖文件的描述信息和下载源地址,根据所述描述信息和下载源地址生成所述文件标识,包括:
遍历所述依赖文件清单,得到各个依赖文件的文件名、版本号和下载源地址;
根据所述各个依赖文件的文件名、版本号和下载源地址生成文件标识。
根据本公开的一个或多个实施例,示例4根据示例1所述的方法,所述根据所述文件标识获取所述目标前端项目的构建环境,包括:
获取所述历史构建环境对应的历史文件标识,其中,所述历史文件标识基于所述历史前端项目的依赖文件清单生成;
将所述文件标识与历史文件标识进行比对;
在所述文件标识与历史文件标识相同的情况下,将所述历史构建环境作为所述目标前端项目的构建环境。
根据本公开的一个或多个实施例,示例5根据示例4所述的方法,所述根据所述构建环境对所述目标前端项目进行构建,包括:
获取所述历史前端项目的编译中间结果,根据所述编译中间结果对所述目标前端项目的项目代码进行编译。
根据本公开的一个或多个实施例,示例6根据示例4所述的方法,在将所述文件标识与历史文件标识进行比对之后,还包括:
在所述文件标识与历史文件标识不同的情况下,根据所述依赖文件清单从第三方服务器下载依赖文件;
根据所下载的依赖文件生成所述目标前端项目的构建环境,关联所述构建环境和所述文件标识;
采用所述构建环境更新所述历史构建环境,采用所述文件标识更新所述历史文件标识。
根据本公开的一个或多个实施例,示例7根据示例6所述的方法,所述根据所述构建环境对所述目标前端项目进行构建,包括:
基于所述构建环境对所述目标前端项目的项目代码进行编译。
根据本公开的一个或多个实施例,示例8根据示例7所述的方法,在基于所述构建环境对所述目标前端项目的项目代码进行编译之后,还包括:
获取所述目标前端项目的项目代码的编译中间结果,将所述编译中间结果和文件标识进行关联;
采用所述编译中间结果更新历史前端项目的编译中间结果。
根据本公开的一个或多个实施例,示例9提供了一种前端项目的构建装置,包括:
标识生成模块,用于获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识;
环境获取模块,用于根据所述文件标识获取所述目标前端项目的构建环境,其中,所述构建环境基于历史前端项目对应的历史构建环境确定;
项目构建模块,用于根据所述构建环境对所述目标前端项目进行构建。
根据本公开的一个或多个实施例,示例10提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如示例1-8中任一所述的前端项目的构建方法。
根据本公开的一个或多个实施例,示例11提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如示例1-8中任一所述的前端项目的构建方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (11)

1.一种前端项目的构建方法,其特征在于,包括:
获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识;
根据所述文件标识获取所述目标前端项目的构建环境,其中,所述构建环境基于历史前端项目对应的历史构建环境确定;
根据所述构建环境对所述目标前端项目进行构建。
2.根据权利要求1所述的方法,其特征在于,所述获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识,包括:
获取所述待构建的目标前端项目的项目描述文件;
解析所述项目描述文件,得到所述目标前端项目的依赖文件清单;
获取所述依赖文件清单中各个依赖文件的描述信息和下载源地址,根据所述描述信息和下载源地址生成所述文件标识。
3.根据权利要求2所述的方法,其特征在于,所述获取所述依赖文件清单中各个依赖文件的描述信息和下载源地址,根据所述描述信息和下载源地址生成所述文件标识,包括:
遍历所述依赖文件清单,得到各个依赖文件的文件名、版本号和下载源地址;
根据所述各个依赖文件的文件名、版本号和下载源地址生成文件标识。
4.根据权利要求1所述的方法,其特征在于,所述根据所述文件标识获取所述目标前端项目的构建环境,包括:
获取所述历史构建环境对应的历史文件标识,其中,所述历史文件标识基于所述历史前端项目的依赖文件清单生成;
将所述文件标识与历史文件标识进行比对;
在所述文件标识与历史文件标识相同的情况下,将所述历史构建环境作为所述目标前端项目的构建环境。
5.根据权利要求4所述的方法,其特征在于,所述根据所述构建环境对所述目标前端项目进行构建,包括:
获取所述历史前端项目的编译中间结果,根据所述编译中间结果对所述目标前端项目的项目代码进行编译。
6.根据权利要求4所述的方法,其特征在于,在将所述文件标识与历史文件标识进行比对之后,还包括:
在所述文件标识与历史文件标识不同的情况下,根据所述依赖文件清单从第三方服务器下载依赖文件;
根据所下载的依赖文件生成所述目标前端项目的构建环境,关联所述构建环境和所述文件标识;
采用所述构建环境更新所述历史构建环境,采用所述文件标识更新所述历史文件标识。
7.根据权利要求6所述的方法,其特征在于,所述根据所述构建环境对所述目标前端项目进行构建,包括:
基于所述构建环境对所述目标前端项目的项目代码进行编译。
8.根据权利要求7所述的方法,其特征在于,在基于所述构建环境对所述目标前端项目的项目代码进行编译之后,还包括:
获取所述目标前端项目的项目代码的编译中间结果,将所述编译中间结果和文件标识进行关联;
采用所述编译中间结果更新历史前端项目的编译中间结果。
9.一种前端项目的构建装置,其特征在于,包括:
标识生成模块,用于获取待构建的目标前端项目的依赖文件清单,根据所述依赖文件清单生成文件标识;
环境获取模块,用于根据所述文件标识获取所述目标前端项目的构建环境,其中,所述构建环境基于历史前端项目对应的历史构建环境确定;
项目构建模块,用于根据所述构建环境对所述目标前端项目进行构建。
10.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的前端项目的构建方法。
11.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-8中任一所述的前端项目的构建方法。
CN202310707527.7A 2023-06-14 2023-06-14 一种前端项目的构建方法、装置、电子设备及存储介质 Pending CN116679930A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310707527.7A CN116679930A (zh) 2023-06-14 2023-06-14 一种前端项目的构建方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310707527.7A CN116679930A (zh) 2023-06-14 2023-06-14 一种前端项目的构建方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116679930A true CN116679930A (zh) 2023-09-01

Family

ID=87785236

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310707527.7A Pending CN116679930A (zh) 2023-06-14 2023-06-14 一种前端项目的构建方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116679930A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117519733A (zh) * 2023-11-16 2024-02-06 之江实验室 一种项目部署方法、装置、存储介质及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117519733A (zh) * 2023-11-16 2024-02-06 之江实验室 一种项目部署方法、装置、存储介质及电子设备
CN117519733B (zh) * 2023-11-16 2024-05-28 之江实验室 一种项目部署方法、装置、存储介质及电子设备

Similar Documents

Publication Publication Date Title
CN112214408B (zh) 依赖冲突检测方法、装置、电子设备及计算机可读介质
CN110391938B (zh) 用于部署服务的方法和装置
CN110960855B (zh) 一种通信协议代码更新方法、装置、电子设备及存储介质
US20210200806A1 (en) Method and apparatus for parallel processing of information
CN111240766B (zh) 应用启动方法、装置、电子设备及计算机可读存储介质
CN112395253B (zh) 索引文件生成方法、终端设备、电子设备及介质
CN112965761B (zh) 一种数据处理方法、系统、电子设备及存储介质
CN111209306A (zh) 业务逻辑判断方法、装置、电子设备和存储介质
CN111338944B (zh) 远程过程调用rpc接口测试方法、装置、介质及设备
CN110990038B (zh) 用于应用局部更新的方法、装置、电子设备和介质
CN116679930A (zh) 一种前端项目的构建方法、装置、电子设备及存储介质
CN114625536B (zh) 显存分配方法、装置、介质及电子设备
CN109918381B (zh) 用于存储数据的方法和装置
CN112416303B (zh) 软件开发工具包热修复方法、装置及电子设备
CN110888773B (zh) 一种获取线程标识的方法、装置、介质和电子设备
CN113391882B (zh) 虚拟机内存管理方法、装置、存储介质及电子设备
CN111459893B (zh) 文件处理方法、装置和电子设备
CN114741686A (zh) 程序白名单的检测方法、装置及相关设备
CN111460020B (zh) 用于解析消息的方法、装置、电子设备和介质
CN111447298A (zh) 应用程序中的网络地址的获取方法、装置、设备及介质
CN111309323A (zh) 参数初始化方法、装置和电子设备
CN111240738B (zh) 文件处理方法、装置、设备及介质
CN111581305B (zh) 特征处理方法、装置、电子设备和介质
CN111625232B (zh) 应用程序安装包的生成方法、装置、可读介质和电子设备
CN110489341B (zh) 一种测试方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination