一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种资源信息处理方法、装置、设备及存储介质与流程

2022-12-19 23:16:29 来源:中国专利 TAG:


1.本技术涉及前端项目技术领域,尤其涉及一种资源信息处理方法、装置、设备及存储介质。


背景技术:

2.当使用节点包管理器(node package manager,npm)安装项目生产环境需要的第三资源包时,需要使用
‑‑
save和-s标识将第三方资源包(第三方资源的安装包)的名称和版本添加至项目目录的配置文件中,以保证能够正常运行项目。
3.对于前端项目的流水线构建,首先需要安装第三方资源包,然后再执行构建任务。若安装第三方资源时包没有使用
‑‑
save和-s标识,将导致流水线构建失败,项目不能正常投产。


技术实现要素:

4.本技术提供一种资源信息处理方法、装置、设备及存储介质,解决了流水线构建容易失败的问题。
5.第一方面,本技术实施例提供一种资源信息处理方法,包括:
6.确定多个目标文件;
7.分别对所述多个目标文件进行解析,得到多个引用资源路径;
8.根据所述多个引用资源路径,确定多个第三方资源信息;
9.将所述多个第三方资源信息添加至项目目录的配置文件中。
10.在一种可能的实施方式中,针对所述多个目标文件中的任意一个目标文件;对所述目标文件进行解析,得到所述目标文件对应的引用资源路径,包括:
11.获取所述目标文件的源代码;
12.对所述源代码进行转换处理,得到所述目标文件对应的抽象语法树ast;
13.根据所述ast中目标节点的属性信息,确定所述目标文件对应的引用资源路径。
14.在一种可能的实施方式中,根据所述ast中目标节点的属性信息,确定所述目标文件对应的引用资源路径,包括:
15.遍历所述ast中的节点,以在所述ast的节点中确定所述目标节点,所述目标节点的节点类型为目标节点类型;
16.获取所述目标节点的属性信息;
17.根据所述目标节点的属性信息,确定所述目标文件对应的引用资源路径。
18.在一种可能的实施方式中,针对所述多个引用资源路径中的任意一个引用资源路径;根据所述引用资源路径,确定第三方资源信息,包括:
19.获取预设规则;
20.根据所述预设规则,在所述引用资源路径中确定所述第三方资源的名称,所述第三方资源信息包括所述第三方资源的名称。
21.在一种可能的实施方式中,针对任意一个第三方资源信息;将所述第三方资源信息添加至项目目录的配置文件中,包括:
22.获取所述配置文件;
23.判断所述第三方资源信息是否在所述配置文件中;
24.若否,则将所述第三方资源信息添加至所述配置文件中。
25.在一种可能的实施方式中,所述第三方资源信息还包括第三方资源的版本号,将所述第三方资源信息添加至所述配置文件中,包括;
26.将所述第三方资源的版本号更新为目标版本号;
27.将所述第三方资源的名称和所述目标版本号添加至所述配置文件中的生产环境依赖字段中。
28.在一种可能的实施方式中,确定多个目标文件,包括:
29.获取目标扩展名;
30.根据所述目标扩展名,遍历项目目录,以在所述项目目录中确定所述多个目标文件。
31.第二方面,本技术实施例提供一种资源信息处理装置,包括第一确定模块、解析模块、第二确定模块和添加模块,其中,
32.所述第一确定模块用于,确定多个目标文件;
33.所述解析模块用于,分别对所述多个目标文件进行解析,得到多个引用资源路径;
34.所述第二确定模块用于,根据所述多个引用资源路径,确定多个第三方资源信息;
35.所述添加模块用于,将所述多个第三方资源信息添加至项目目录的配置文件中。
36.在一种可能的实施方式中,针对所述多个目标文件中的任意一个目标文件,所述解析模块具体用于:
37.获取所述目标文件的源代码;
38.对所述源代码进行转换处理,得到所述目标文件对应的抽象语法树ast;
39.根据所述ast中目标节点的属性信息,确定所述目标文件对应的引用资源路径。
40.在一种可能的实施方式中,所述解析模块具体用于:
41.遍历所述ast中的节点,以在所述ast的节点中确定所述目标节点,所述目标节点的节点类型为目标节点类型;
42.获取所述目标节点的属性信息;
43.根据所述目标节点的属性信息,确定所述目标文件对应的引用资源路径。
44.在一种可能的实施方式中,针对所述多个引用资源路径中的任意一个引用资源路径,所述第二确定模块具体用于:
45.获取预设规则;
46.根据所述预设规则,在所述引用资源路径中确定所述第三方资源的名称,所述第三方资源信息包括所述第三方资源的名称。
47.在一种可能的实施方式中,针对任意一个第三方资源信息,所述添加模块具体用于:
48.获取所述配置文件;
49.判断所述第三方资源信息是否在所述配置文件中;
50.若否,则将所述第三方资源信息添加至所述配置文件中。
51.在一种可能的实施方式中,所述第三方资源信息还包括第三方资源的版本号,所述添加模块具体用于:
52.将所述第三方资源的版本号更新为目标版本号;
53.将所述第三方资源的名称和所述目标版本号添加至所述配置文件中的生产环境依赖字段中。
54.在一种可能的实施方式中,所述第一确定模块具体用于:
55.获取目标扩展名;
56.根据所述目标扩展名,遍历项目目录,以在所述项目目录中确定所述多个目标文件。
57.第三方面,本技术实施例提供一种电子设备,包括:处理器、存储器;
58.所述存储器存储计算机执行指令;
59.所述处理器执行所述存储器存储的计算机执行命令,使得所述处理器执行如第一方面任一项所述的资源信息处理方法。
60.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时用于实现第一方面任一项所述的资源信息处理方法。
61.第五方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,可实现第一方面任一项所述的资源信息处理方法。
62.本技术提供一种资源信息处理方法、装置、设备及存储介质,方法包括:确定多个目标文件;分别对多个目标文件进行解析,得到多个引用资源路径;根据多个引用资源路径,确定多个第三方资源信息;将多个第三方资源信息添加至项目目录的配置文件中。本技术的方法可以查找出项目中使用的第三方资源,并以差集的形式将第三方资源的信息添加至配置文件中,解决了流水线构建容易失败的问题。
附图说明
63.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
64.图1为本技术实施例提供的一种资源信息处理方法的流程示意图;
65.图2为本技术实施例提供的另一种资源信息处理方法的流程示意图;
66.图3为本技术实施例提供的一种确定第三方资源名称的流程示意图;
67.图4为本技术实施例提供的一种资源信息处理装置的结构示意图;
68.图5为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
69.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术的实施例,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造
性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
70.为了便于理解,下面对本技术涉及的名词进行解释。
71.项目依赖:也可以称为工程依赖,是指项目中的第三方资源或者工具。
72.依赖这些第三方资源或者工具可以快速实现业务需求。例如,使用数学中的数学(math)函数可以快速实现正弦(sin)、余弦(cos)的计算。再例如,在项目中可以使用axios快速实现网络请求的发送,其中,axios是一个基于承诺(promise)的网络请求库,可以作用于node.js和浏览器中。
73.项目依赖的配置:是指前端项目或者node.js项目中的package.json文件。package.json文件是项目的配置文件,这个文件内容是json格式的,在这个文件中有依赖项(dependencies)和开发依赖项(devdependencies)两个字段,其中,dependencies用于记录项目的生产环境依赖,即记录项目运行需要的第三方资源的名称和版本号;devdependencies用于记录项目的开发依赖,即记录项目开发过程需要的第三方资源包的名称和版本号。
74.例如:
75."dependencies":{
76.ꢀꢀꢀ
"vue":"^2.5.2"
77.}
78.表示项目运行需要vue这个第三方资源,vue的版本需要大于2.5.2。
79.依赖安装:就是将第三资源安装到项目中,可以使用npm安装《包-名》(install《package-name》)指令安装第三方资源包,其中pacakge-name是第三方资源包的名称。
80.针对生产依赖安装,可以使用npm install《package-name》
‑‑
save指令或者npm install《package-name》-s指令安装依赖(第三方资源包)。其中,
‑‑
save和-s标识安装生产依赖,即项目运行需要的依赖,第三方资源包的名称和版本会添加到package.json文件中的dependencies字段中。
81.针对开发依赖安装,可以使用npm install《package-name》-d指令或者npm install《package-name》
‑‑
save-dev指令安装。其中,-d和
‑‑
save-dev标识安装开发依赖,即项目开发需要的依赖,第三方资源包的名称和版本会添加到package.json文件中的devdependencies字段中。
82.包管理器:管理第三方资源包的管理器,例如,npm。
83.当使用npm安装项目生产环境需要的第三方资源包时,尤其是npm的版本较低时(如npm版本小于5),若开发者a没有使用-s或者
‑‑
save标识安装项目生产环境依赖package-a,package-a这个第三方资源包的信息是不会自动添加到package.json文件中的dependencies字段中。若package.json文件中无package-a这个第三方资源包的信息,将导致如下问题:
84.(1)若该项目涉及多人开发,当开发者a将项目代码提交到代码仓库后,开发者b拉取项目代码并运行项目时,项目运行会报错。报错信息为package-a这个第三方资源包未找到。即使开发者b使用npm重新安装依赖,项目运行也会报错,因为package-a的版本信息没有在package.json文件中的dependencies字段中。开发者b只有重新安装package-a这个第三方资源包,这将导致项目开发的效率较低。
85.(2)对于前端项目的流水线构建,首先是安装依赖,之后执行构建任务。若项目的package.json文件无上述示例的package-a依赖,在执行构建时,会报package-a这个第三方资源包未找到的错误,导致流水线构建失败,项目不能正常投产。
86.为了解决上述技术问题,本技术提供一种资源信息处理方法,可以通过分析和统计项目中使用到的第三方资源包,并将第三方资源包的信息补全到项目目录的配置文件的依赖字段中,以解决多人协作项目运行的问题以及流水线构建的问题。
87.下面,通过具体实施例对本技术所示的技术方案进行详细说明。需要说明的是,下面几个实施例可以独立存在,也可以相互结合,对于相同或显示的内容,在不同的实施例中不再重复说明。
88.图1为本技术实施例提供的一种资源信息处理方法的流程示意图。请参见图1,该方法包括:
89.s101、确定多个目标文件。
90.本技术实施例的执行主体可以为电子设备,也可以为设置在电子设备中的资源信息处理装置。资源信息处理装置可以通过软件实现,也可以通过软件和硬件的结合实现。
91.目标文件可以是项目目录中引用第三方资源的文件。
92.在前端项目中,引用第三方资源的文件可以分为三类:业务逻辑文件、样式文件和vue文件。其中,业务逻辑文件可以是项目中业务逻辑的文件;样式文件可以控制页面的背景、字体或颜色等文件;vue文件可以是vue.js框架中一种以vue结尾的文件。
93.s102、分别对多个目标文件进行解析,得到多个引用资源路径。
94.对目标文件进行解析可以是指对目标文件的源代码做语法解析。
95.不同类型的目标文件,可以使用不同的工具进行语法解析。
96.例如,业务逻辑文件可以使用@babel/parser进行解析;样式文件可以使用postcss进行解析;vue文件可以使用@vue/compiler-dom进行解析。
97.引用资源路径可以是相对路径,也可以是绝对路径。
98.引用资源路径可以为:'./index1.js'、'/index2.js'、'../node_modules/ws'、'../node_modules/ws/index.js'、'../node_modules/@jump-mp/build'、'../node_modules/@jump-mp/build/index.js'、'lodash'、'lodash/array'、"@jump-mp/build"或"@jump-mp/build/index.js"。
99.引用资源路径中不仅可以包括第三方资源信息,还可以包括项目自身的资源。
100.s103、根据多个引用资源路径,确定多个第三方资源信息。
101.在一种可能的实现方式中,可以在多个引用资源路径中排除项目自身的资源,以确定第三方资源信息。
102.第三方资源信息可以包括第三方资源安装包的名称。
103.s104、将多个第三方资源信息添加至项目目录的配置文件中。
104.在添加第三资源信息之前,需要判断第三方资源信息是否已经在配置文件中,若否,则将第三方资源信息添加至配置文件(package.json文件)中的生产环境依赖(dependencies)字段中。
105.在图1所示的实施例中,先确定多个目标文件,再分别对多个目标文件进行解析,得到多个引用资源路径;根据多个引用资源路径,确定多个第三方资源信息;将多个第三方
资源信息添加至项目目录的配置文件中。解决多人协作项目运行的问题以及流水线构建容易失败的问题。
106.在上述任意实施例的基础上,下面,结合图2所示的实施例,对上述资源信息处理方法进行详细说明。
107.图2为本技术实施例提供的另一种资源信息处理方法的流程示意图。请参见图2,该方法包括:
108.s201、获取目标扩展名。
109.目标扩展名可以为目标文件的扩展名。
110.目标文件不同,目标扩展名不同。
111.例如,业务逻辑文件的扩展名可以包括:js、jsx、ts或tsx;样式文件的扩展名可以包括:css、less、scss或sass。其中,以js为扩展名的文件是javascript文件,以jsx为扩展名的文件是javascript语法扩展的文件,以ts为扩展名的文件是typescript文件,以tsx为扩展名的文件是typescript语法扩展的文件。
112.s202、根据目标扩展名,遍历项目目录,以在项目目录中确定多个目标文件。
113.例如,遍历项目目录中文件扩展名为js、jsx、ts和tsx的文件,得到业务逻辑文件数组;遍历项目目录中文件扩展名为css、less、scss和sass的文件,得到样式文件数组;遍历项目目录中文件扩展名为vue的文件,得到vue文件数组。多个目标文件包括业务逻辑文件数组中的文件、样式文件数组中的文件和vue文件数组中的文件。
114.s203、分别对多个目标文件进行解析,得到多个引用资源路径。
115.在一种可能的实现方式中,针对多个目标文件中的任意一个目标文件;可以通过以下方式对目标文件进行解析,得到目标文件对应的引用资源路径:
116.获取目标文件的源代码;对源代码进行转换处理,得到目标文件对应的抽象语法树(abstract syntax code,ast);根据ast中目标节点的属性信息,确定目标文件对应的引用资源路径。
117.在一种可能的实现方式中,可以通过以下方式根据ast中目标节点的属性信息,确定目标文件对应的引用资源路径:
118.遍历ast中的节点,以在ast的节点中确定目标节点,目标节点的节点类型为目标节点类型;获取目标节点的属性信息;根据目标节点的属性信息,确定目标文件对应的引用资源路径。
119.节点类型可以为如下任意一种:数组类型、对象类型、函数类型、布尔类型或文件类型等。
120.为了便于理解,下面举例说明各个目标文件类型对应的目标文件的解析方式。
121.例1业务逻辑文件语法解析
122.1.1先确定业务逻辑文件引用资源的形式
123.在业务逻辑文件中引入资源有四种形式:
124.(1)使用require函数引入
125.如:let_fs=require('fs');表示引入第三方资源fs模块。
126.(2)使用import引入
127.如:import_from'lodash';表示引入第三方资源lodash模块。
128.(3)export和import的复合写法
129.如:export{foo,bar}from'my_module';可以理解为:
130.import{foo,bar}from'my_module';
131.export{foo,bar};
132.先从my_module模块导入foo和bar函数,在导出foo和bar函数。
133.(4)动态加载模块import()
134.如:import(specifier),参数specifier表示所要加载的模块的位置。
135.1.2语法分析
136.将业务逻辑文件的业务逻辑代码转换为ast,之后对ast进行分析,查看是否存在引用资源文件的情况。
137.业务逻辑文件使用“@babel/parser”库将业务逻辑代码转换为ast。
138.若js文件的源代码为:
139.let{stat,exists,readfile}=require('fs');
140.import_from'lodash';
141.import'iview/dist/styles/iview.css';
142.export{foo,bar}from'modulea';
143.import('module')
144.则其转换后的ast为:
[0145][0146]
ast是一个树形的json结构对象,这个json对象包含源代码的信息,如上所示“importdeclaration”,表明转换的源代码是一个import引用声明。
[0147]
业务逻辑代码经过“@babel/parser”的解析步骤后,输入的文件源代码都转换成ast。然后接着使用“@babel/traverse”库对ast执行遍历操作,找到引用资源路径(也可以称为引用资源名称)的代码。
[0148]
1.3引入统计
[0149]
1.3.1使用require函数引入统计
[0150]
示例代码为:let{stat,exists,readfile}=require('fs');
[0151]
require('fs')这个引用第三方资源的代码经过1.2语法分析为了类
callexpression型对象,这个对象的callee属性的name属性值为require,这个对象的arguments的第一个元素的value属性值为fs,即获取到了引用资源路径。
[0152]
遍历示例代码转换得到的ast中的callexpression类型,若callexpression类型对象的callee属性的name属性值为require,此时记录callexpression类型对象的arguments属性的第一个元素的value属性的值添加到全局变量引用路径资源集合(dependenciesset)中。dependenciesset类型是set(即集合),集合中只能存放不能重复的元素。
[0153]
1.3.2使用import引入统计
[0154]
示例代码为:import_from'lodash';
[0155]
即import_from'lodash';这个引用第三方资源经过1.2语法分析为了importdeclaration类型对象,这个对象的source属性的value属性值为lodash,即获取到了引用资源路径。
[0156]
遍历示例代码转换得到的ast中的importdeclaration类型,记录importdeclaration类型对象的source属性的value属性值添加到全局变量dependenciesset中。
[0157]
1.3.3export和import的复合写法统计
[0158]
示例代码为:export{foo,bar}from'my_module';
[0159]
即export{foo,bar}from'my_module';这个引用第三方资源经过1.2语法分析为了exportnameddeclaration类型对象,这个对象的source属性的value属性值为lodash,即获取到了引用资源路径。
[0160]
遍历示例代码转换得到的ast中的exportnameddeclaration类型,记录exportnameddeclaration类型对象的source属性的value属性值添加到全局变量dependenciesset中。
[0161]
1.3.4动态加载模块import()统计
[0162]
示例代码为:import(

fs’);
[0163]
即import(

fs’);这个引用第三方资源经过1.2语法分析为了callexpression型对象,这个对象的callee属性的type属性值为import,这个对象的arguments的第一个元素的value属性值为fs,即获取到了引用资源的路径。
[0164]
遍历示例代码转换得到的ast中的callexpression类型,若callexpression类型对象的callee属性的type属性值为import,此时记录callexpression类型对象的arguments属性的第一个元素的value属性值到全局变量dependenciesset。
[0165]
例2样式文件语法解析
[0166]
类似业务逻辑文集的解析规则。样式文件主要有四种不同类型的扩展名,分别是css、less、scss和sass。样式文件引入资源的方式只有一种,就是使用@import引入资源。
[0167]
示例代码为:
[0168][0169]
使用postcss将上述示例代码转换为ast。遍历ast中每一个元素,若元素的type值为atrule,此时元素的params属性值就是样式文件资源路径。因为这个样式文件资源路径是字符串,并且这个字符串以双引号开始和结束,截取除了开始和结束的引号的内容添加到全局变量dependenciesset中。
[0170]
例3vue文件语法解析
[0171]
类似业务逻辑文件解析规则。vue文件使用@vue/compile-dom进行语法解析。
[0172]
示例代码为:
[0173][0174]
[0175]
vue文件一般分为template、script和style三个模块,可以没有style模块。
[0176]
上述示例代码经过@vue/compile-dom解析为ast,其中ast的中script是vue文件中的业务逻辑部分,ast中的style是样式文件部分。vue文件解析后的ast的script和style都是数组类型。
[0177]
获取script对象的children的每一个元素,按照例1业务逻辑文件语法解析操作,获取vue文件中在业务逻辑代码中引用资源的路径。
[0178]
获取style对象的children的每一个元素,按照例2样式文件语法解析操作,获取vue文件中在样式代码中引用资源的路径。
[0179]
s204、根据多个引用资源路径,确定多个第三方资源信息。
[0180]
针对多个引用资源路径中的任意一个引用资源路径,可以通过以下方式根据引用资源路径,确定第三方资源信息:
[0181]
获取预设规则,根据预设规则,在引用资源路径中确定第三方资源的名称,第三方资源信息包括第三方资源的名称。
[0182]
预设规则可以是第三方资源的命名规则,第三方资源的命名规则可以是以英文、数字或者@开始。
[0183]
例如,若以@字符开始,如"@jump-mp/build",jump-mp是第三方资源包的组织名,build是这个包的名称,即真正第三方资源包的全称是@jump-mp/build。
[0184]
s205、获取配置文件。
[0185]
在一种可能的实施方式中,可以是获取配置文件中的dependencies字段和devdependencies字段。
[0186]
同时获取package.json文件中的dependencies和devdependencies的目的是防止开发者将生产依赖安装到了开发依赖。
[0187]
s206、判断第三方资源信息是否在配置文件中。
[0188]
若是,则执行s208。
[0189]
若否,则执行s207。
[0190]
s207、将第三方资源信息添加至配置文件中。
[0191]
将第三资源信息添加至配置文件中的dependencies字段中。
[0192]
在一种可能的实施方式中,将第三方资源的版本号更新为目标版本号;将第三方资源的名称和目标版本号添加至配置文件中的生产环境依赖字段中。
[0193]
目标版本号可以是最新的版本号,也可以是指定的版本号。
[0194]
例如,将第三方资源包的版本号写为*或者latest,以表示最新版本。
[0195]
s208、不做处理。
[0196]
在图2所示的实施例中,获取目标扩展名,根据目标扩展名,遍历项目目录,以在项目目录中确定多个目标文件;分别对多个目标文件进行解析,得到多个引用资源路径;根据多个引用资源路径,确定多个第三方资源信息;获取配置文件,判断第三方资源信息是否在配置文件中,若否,则将第三方资源信息添加至配置文件中。本技术的方法可以高效、准确和稳定的解决多人协作项目运行的问题以及流水线构建容易失败的问题。
[0197]
为了便于理解,下面,结合图3对第三方资源包的名称的确定方式进行说明。
[0198]
图3为本技术实施例提供的一种确定第三方资源名称的流程示意图。请参见图3,
包括:
[0199]
s301、遍历dependenciesset的每一个元素。
[0200]
每一个元素可以代表一个引用资源路径。
[0201]
s302、判断元素内容是否包含node_modules/。
[0202]
若是,则执行s303。
[0203]
若否,则执行s306。
[0204]
s303、判断node_modules/后的第一个字符是否是@。
[0205]
若是,则执行s304。
[0206]
若否,则执行s305。
[0207]
s304、截取node_modules/后的字符串直到第2个字符“/”的内容(若存在第2个字符“/”的话)。
[0208]
截取的内容是第三资源包的名称。
[0209]
例如,下面两种路径中的第三方资源包的名称是:@jump-mp/build。
[0210]
'../node_modules/@jump-mp/build'
[0211]
'../node_modules/@jump-mp/build/index.js'
[0212]
s305、截取node_modules/后的字符串直到字符“/”的内容(若存在字符“/”的话)。
[0213]
截取的内容是第三资源包的名称。
[0214]
例如,下面两种路径中的第三方资源包的名称是:ws。
[0215]
'../node_modules/ws'
[0216]
'../node_modules/ws/index.js'
[0217]
s306、判断元素内容是否以英文字母、数字或者@开始。
[0218]
若是,则执行s307。
[0219]
若否,则执行s310。
[0220]
s307、判断路径是否以@开始。
[0221]
若是,则执行s308。
[0222]
若否,则执行s309。
[0223]
s308、截取@直到第2个字符“/”的内容(若存在第2字符“/”的话)。
[0224]
例如,下面两种路径中的第三方资源包的名称是:@jump-mp/build。
[0225]
"@jump-mp/build"
[0226]
"@jump-mp/build/index.js"
[0227]
s309、截取英文或数字直到字符“/”的内容(若存在字符“/”的话)。
[0228]
例如,下面两种路径中的第三方资源包的名称是:lodash。
[0229]
'lodash'
[0230]
'lodash/array'
[0231]
s310、路径引用的资源不是第三方资源,不做处理。
[0232]
s311、判断完一个元素后需要判定是否遍历完成。
[0233]
若是,则结束。
[0234]
若否,则执行s302。
[0235]
本技术的方法可以通过插件实现,插件支持2个参数,第一个参数是待检测项目的
路径,第二个参数是项目的package.json文件路径。开发者配置待检测的项目路径和项目的package.json文件路径后,插件就会将项目中使用到的第三方资源但是没有在package.json配置的资源添加到package.json的生产依赖中,开发者检查是否修改package.json中新增的生产依赖版本信息,完成自动查找和补全项目中依赖。
[0236]
本技术的方法不需要代码审查,也不需要在项目运行时检查所需的依赖;同时本技术的方法不会遗漏掉第三资源信息,可以稳定解决多人协作项目运行的问题以及流水线构建容易失败的问题。
[0237]
图4为本技术实施例提供的一种资源信息处理装置的结构示意图。请参见图4,该装置10包括第一确定模块11、解析模块12、第二确定模块13和添加模块14,其中,
[0238]
所述第一确定模块11用于,确定多个目标文件;
[0239]
所述解析模块12用于,分别对所述多个目标文件进行解析,得到多个引用资源路径;
[0240]
所述第二确定模块13用于,根据所述多个引用资源路径,确定多个第三方资源信息;
[0241]
所述添加模块14用于,将所述多个第三方资源信息添加至项目目录的配置文件中。
[0242]
在一种可能的实施方式中,针对所述多个目标文件中的任意一个目标文件,所述解析模块12具体用于:
[0243]
获取所述目标文件的源代码;
[0244]
对所述源代码进行转换处理,得到所述目标文件对应的抽象语法树ast;
[0245]
根据所述ast中目标节点的属性信息,确定所述目标文件对应的引用资源路径。
[0246]
在一种可能的实施方式中,所述解析模块12具体用于:
[0247]
遍历所述ast中的节点,以在所述ast的节点中确定所述目标节点,所述目标节点的节点类型为目标节点类型;
[0248]
获取所述目标节点的属性信息;
[0249]
根据所述目标节点的属性信息,确定所述目标文件对应的引用资源路径。
[0250]
在一种可能的实施方式中,针对所述多个引用资源路径中的任意一个引用资源路径,所述第二确定模块13具体用于:
[0251]
获取预设规则;
[0252]
根据所述预设规则,在所述引用资源路径中确定所述第三方资源的名称,所述第三方资源信息包括所述第三方资源的名称。
[0253]
在一种可能的实施方式中,针对任意一个第三方资源信息,所述添加模块14具体用于:
[0254]
获取所述配置文件;
[0255]
判断所述第三方资源信息是否在所述配置文件中;
[0256]
若否,则将所述第三方资源信息添加至所述配置文件中。
[0257]
在一种可能的实施方式中,所述第三方资源信息还包括第三方资源的版本号,所述添加模块14具体用于:
[0258]
将所述第三方资源的版本号更新为目标版本号;
[0259]
将所述第三方资源的名称和所述目标版本号添加至所述配置文件中的生产环境依赖字段中。
[0260]
在一种可能的实施方式中,所述第一确定模块11具体用于:
[0261]
获取目标扩展名;
[0262]
根据所述目标扩展名,遍历项目目录,以在所述项目目录中确定所述多个目标文件。
[0263]
本技术实施例提供的资源信息处理装置10可以执行上述资源信息处理方法实施例所示的技术方案,其实现原理以及有益效果类似,此次不再进行赘述。
[0264]
图5为本技术实施例提供的一种电子设备的结构示意图。请参见图5,该电子设备20可以包括:存储器21、处理器22。示例性地,存储器21、处理器22,各部分之间通过总线23相互连接。
[0265]
所述存储器21存储计算机执行指令;
[0266]
所述处理器22执行所述存储器21存储的计算机执行命令,使得所述处理器执行如上述任一项的资源信息处理方法。
[0267]
图5实施例所示的电子设备可以执行上述资源信息处理方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
[0268]
本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时用于实现上述任一项的资源信息处理方法。
[0269]
本技术实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,可实现上述任一项的资源信息处理方法。
[0270]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
[0271]
应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献