本申请涉及计算机,尤其涉及一种前端编译方法、装置、设备及存储介质。
背景技术:
1、通常情况下,一个程序或者库需要依赖于其他的软件或者库才能正常工作。行业内,将这些被程序或者库所依赖的软件或者库称为依赖包。在软件开发以及迭代过程中,将源文件和依赖包编译成目标文件是非常频繁的工作,每次编译时均需要安装依赖包,而依赖包的数量可能达到上千个,且每次编译开始必须使用依赖安装器来检查依赖的完整性,这导致需要消耗大量的计算机性能,延长整个编译的时间,从而延长软件开发以及迭代的时间。
技术实现思路
1、针对上述技术问题,本申请的目的在于提供一种前端编译方法、装置、设备及存储介质,旨在提高软件开发及迭代过程中程序的编译效率,从而缩短软件开发以及迭代的时间。
2、第一方面,本申请实施例提供一种前端编译方法,包括:
3、获取待编译的前端项目代码;
4、判断所述前端项目代码上一次是否编译成功;
5、若为成功,则判断所述前端项目代码对应的依赖包是否已经更新;
6、若所述前端项目代码对应的依赖包已经更新,则重新安装依赖包,并在依赖包安装成功后,触发下一个编译流程,直至结束编译;
7、若所述前端项目代码对应的依赖包没有更新,则跳过安装依赖包的步骤,触发下一个编译流程,直至结束编译。
8、进一步的,所述判断所述前端项目代码上一次是否编译成功的步骤包括:
9、获取所述前端项目代码的node_modules的md5缓存值;其中,所述node_modules的md5缓存值为所述前端项目代码上一次编译成功对应的node_modules的md5值;
10、若所述node_modules的md5缓存值为非空值,则判定所述前端项目代码上一次编译成功,否则,为不成功。
11、进一步的,所述判断所述前端项目代码对应的依赖包是否已经更新的步骤包括:
12、智能识别出所述前端项目代码的package.lock文件,并计算出所述package.lock文件的md5值;
13、获取package.lock文件的md5缓存值;其中,所述package.lock文件的md5缓存值为所述前端项目代码上一次编译成功对应的package.lock文件的md5值;
14、判断计算得到的所述package.lock文件的md5值和所述package.lock文件的md5缓存值是否相同;
15、若不相同,则判定所述前端项目代码对应的依赖包已经更新;
16、若相同,则智能识别出所述前端项目代码的node_modules,并计算出所述node_modules的md5值;
17、获取所述前端项目代码的node_modules的md5缓存值;其中,所述node_modules的md5缓存值为所述前端项目代码上一次编译成功对应的node_modules的md5值;
18、判断计算得到的所述node_modules的md5值与所述node_modules的md5缓存值是否相同;
19、若不同,则判定所述前端项目代码对应的依赖包已经更新;
20、若相同,则判定所述前端项目代码对应的依赖包未更新。
21、进一步的,所述获取前端项目代码的步骤之前,还包括:
22、根据抽取操作从原前端项目代码中抽取出用户指定的代码模块;其中,所述原前端项目代码采用javascript编写得到;
23、从第一存储位置中获取采用第二计算机语言重写所述代码模块的代码;其中,所述第二计算机语言为可以转换为webassembly的语言;
24、将重写得到的代码转换为webassembly字节码;
25、将所述webassembly字节码加载到所述代码模块被抽取后的前端项目代码中,得到优化后的前端项目代码;
26、将所述优化后的前端项目代码作为待编译的前端项目代码存储到第二存储位置。
27、进一步的,所述从第一存储位置中获取采用第二计算机语言重写所述代码模块的代码的步骤之前,还包括:
28、采用ai智能推荐工具对所述代码模块进行分析,以获得最适合目标性能的代码方案;
29、将根据所述代码方案,利用第二计算机语言重写所述代码模块的代码存储到所述第一存储位置。
30、进一步的,所述第二语言为c、c++、rust、go或c#。
31、进一步的,所述重新安装所述依赖包的步骤之后,还包括:
32、若所述依赖包未安装成功,则抛出错误并结束编译流程。
33、第二方面,本发明实施例提供一种前端编译装置,包括:
34、获取模块,用于获取待编译的前端项目代码;
35、第一判断模块,用于判断所述前端项目代码上一次是否编译成功;
36、第二判断模块,用于若为成功,则判断所述前端项目代码对应的依赖包是否已经更新;
37、依赖包安装模块,用于若所述前端项目代码对应的依赖包已经更新,则重新安装依赖包,并在依赖包安装成功后,触发下一个编译流程,直至结束编译;
38、触发模块,用于若所述前端项目代码对应的依赖包没有更新,则跳过安装依赖包的步骤,触发下一个编译流程,直至结束编译。
39、第三方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如上述任一项所述方法的步骤。
40、第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述方法的步骤。
41、本发明实施例通过获取待编译的前端项目代码;判断所述前端项目代码上一次是否编译成功;若为成功,则判断所述前端项目代码对应的依赖包是否已经更新;若所述前端项目代码对应的依赖包已经更新,则重新安装依赖包,并在依赖包安装成功后,触发下一个编译流程,直至结束编译;若所述前端项目代码对应的依赖包没有更新,则跳过安装依赖包的步骤,触发下一个编译流程,直至结束编译,如此,避免了每次编译时均要重新安装依赖包的问题,由于在上一次编译成功且依赖包没有更新的情况下无需重新安装依赖包,因此,可以提高前端编译效率,从而缩短软件开发以及迭代的时间。
1.一种前端编译方法,其特征在于,包括:
2.根据权利要求1所述的前端编译方法,其特征在于,所述判断所述前端项目代码上一次是否编译成功的步骤包括:
3.根据权利要求1所述的前端编译方法,其特征在于,所述判断所述前端项目代码对应的依赖包是否已经更新的步骤包括:
4.根据权利要求1所述的前端编译方法,其特征在于,所述获取前端项目代码的步骤之前,还包括:
5.根据权利要求4所述的前端编译方法,其特征在于,所述从第一存储位置中获取采用第二计算机语言重写所述代码模块的代码的步骤之前,还包括:
6.根据权利要求4或5所述的前端编译方法,其特征在于,所述第二语言为c、c++、rust、go或c#。
7.根据权利要求1所述的前端编译方法,其特征在于,所述重新安装所述依赖包的步骤之后,还包括:
8.一种前端编译装置,其特征在于,包括:
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的方法的步骤。