CN109783133B - 代码打包方法、装置、计算机设备及存储介质 - Google Patents
代码打包方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109783133B CN109783133B CN201910044789.3A CN201910044789A CN109783133B CN 109783133 B CN109783133 B CN 109783133B CN 201910044789 A CN201910044789 A CN 201910044789A CN 109783133 B CN109783133 B CN 109783133B
- Authority
- CN
- China
- Prior art keywords
- state
- code module
- current
- determining
- module
- 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.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了代码打包方法、装置、计算机设备及存储介质,该方法包括:确定应用软件的入口文件中所包括代码模块的当前引入状态;根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块;调整各所述目标代码模块的当前引入状态,获得待编译入口文件;编译所述待编译入口文件,获得所述待打包环境对应的打包文件。利用该方法,实现了不同的打包环境基于同一个入口文件的编译打包,与现有不同打包环境对应不同入口文件相比,该方法减少了重复引入相同代码到不同入口文件的空间资源占用,并降低了代码引入失误的风险,同时降低了代码打包所需的维护成本。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及代码打包方法、装置、计算机设备及存储介质。
背景技术
目前,软件项目开发中,其前端采用JavaScript语言的新一代语法标准ECMAScript 6或ECMAScript 7进行JS(JavaScript)代码编写,但浏览器并不能很好支持这些语法,因此,在将上述JS代码部署到浏览器环境之前,需要先执行转译的过程,即将JS代码转换成浏览器可识别语法的代码。这个转换过程在软件项目开发中称为打包,且可将打包后生成的文件称为bundle文件。一般地,在软件项目开发中,编写Javascript框架(库)和业务代码时,经常会遇到需要在测试环境和生产环境提供不同代码的场景(如,测试环境下需要提供比生产环境下更多的代码模块),由此,不同环境下进行打包时其参与打包的代码模块存在不同。
现有的打包方案中,对于同一个开发项目,为实现不同环境的打包操作,通常会对应不同环境设定不同入口文件,然后将不同环境所需的代码模块分别引入(复制)到环境对应的入口文件,最终对不同环境的入口文件进行编译得到相应环境的打包文件。现有打包方法的不足在于:1)对于不同环境都具备的代码模块,需要重复引入到不同入口文件,造成了不必要的空间资源占用;2)对于归属不同环境的特定代码模块,需要人为确定特定代码模块归属的入口文件并进行相应引入,由此增大了人力资源占用同时增大了代码引入失误的风险;3)对于一个代码模块,如果其中既包含了归属于两个环境的公共代码,又包含了归属任一环境的非公共代码,此时需要抽离该代码模块中的公共代码部分并将该部分重定义为新代码模块,但该种代码抽离形成新代码模块的方式容易增加代码模块的总数量,从而增大了所开发软件的维护成本。
发明内容
本发明实施例提供了代码打包方法、装置、计算机设备及存储介质,简单高效的实现了不同打包环境下所需代码模块的打包。
第一方面,本发明实施例提供了一种代码打包方法,包括:
确定应用软件的入口文件中所包括代码模块的当前引入状态;
根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块;
调整各所述目标代码模块的当前引入状态,获得待编译入口文件;
编译所述待编译入口文件,获得所述待打包环境对应的打包文件。
进一步地,所述当前引入状态包括:非可读状态和可读状态;
相应的,所述确定应用软件的入口文件中所包括代码模块的当前引入状态,包括:确定应用软件的入口文件中带有注释标记的代码模块的当前引入状态为非可读状态;确定所述入口文件中未带注释标记的代码模块的当前引入状态为可读状态。
进一步地,所述注释标记为:包括设定注释标识符和设定关键标识的字符串。
进一步地,所述根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块,包括:确定用户选定的待打包环境,并遍历所述入口文件中的每个代码模块;如果所述代码模块归属所述待打包环境且所述代码模块的当前引入状态为非可读状态,则确定所述代码模块为待调整引入状态的目标代码模块;如果所述代码模块非归属所述待打包环境且所述代码模块的当前引入状态为可读状态,则确定所述代码模块为待调整引入状态的目标代码模块。
进一步地,所述调整各所述目标代码模块的当前引入状态,包括:针对每个目标代码模块,如果所述目标代码模块的当前引入状态为非可读状态,则基于第一调整策略调整所述目标代码模块的当前引入状态;如果所述目标代码模块的当前引入状态为可读状态,则基于第二调整策略调整所述目标代码模块的当前引入状态;
其中,所述第一调整策略与所述第二调整策略不相同。
进一步地,所述基于第一调整策略调整所述目标代码模块的当前引入状态,包括:查找所述目标代码模块的注释标记;采用设定字符替换查找到的注释标记。
进一步地,所述基于第二调整策略调整所述目标代码模块的当前引入状态,包括:确定所述目标代码模块在所述入口文件中的起止位置;在所述起止位置处添加注释标记。
第二方面,本发明实施例提供了一种代码打包装置,包括:
状态确定模块,用于确定应用软件的入口文件中所包括代码模块的当前引入状态;
目标确定模块,用于根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块;
状态调整模块,用于调整各所述目标代码模块的当前引入状态,获得待编译入口文件;
文件编译模块,用于编译所述待编译入口文件,获得所述待打包环境对应的打包文件。
第三方面,本发明实施例提供了一种计算机设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例提供的代码打包方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例提供的代码打包方法。
在上述代码打包方法、装置、计算机设备及存储介质中,该打包方法首先确定应用软件的入口文件中所包括代码模块的当前引入状态,然后根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块,之后,调整各所述目标代码模块的当前引入状态,获得待编译入口文件,最终编译所述待编译入口文件,获得所述待打包环境对应的打包文件。上述技术方案,能够通过对引入应用软件所有代码模块引入到同一个入口文件进行编译,来获得适合不同打包环境的打包文件,与现有不同打包环境对应不同入口文件进行打包的方式相比,该方法减少了重复引入相同代码到不同入口文件的空间资源占用,并降低了将代码引入不同入口文件时代码引入失误的风险,同时避免了因代码模块的不同部分适用不同打包环境而进行的代码模块分离,由此降低了代码打包所需的维护成本。
附图说明
图1给出了本发明实施例一提供的一种代码打包方法的流程示意图;
图2给出了本发明实施例二提供的一种代码打包方法的流程示意图;
图3给出了本发明实施例三提供的一种代码打包装置的结构框图;
图4给出了本发明实施例四提供的一种计算机设备的硬件结构图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1给出了本发明实施例一提供的一种代码打包方法的流程示意图,该方法适用于在不同打包环境下对所开发应用软件的前端代码模块进行编译打包的情况,该方法可以由代码打包装置执行,其中,该装置可由软件和/或硬件实现,并一般集成在计算机设备上,所述计算机设备具体可以是支持应用软件开发编程的电子设备。
可以理解的是,本实施例提供的代码打包方法具体可在应用软件开发过程中作为打包插件执行。
如图1所示,本发明实施例一提供的一种代码打包方法,包括如下操作:
S101、确定应用软件的入口文件中所包括代码模块的当前引入状态。
在本实施例中,所述应用软件具体可指开发人员所开发的软件,所述入口文件具体可指对应用软件的前端代码进行转译生成浏览器可识别代码所需的可编译文件,本实施例可将所开发应用软件中面向前端的代码模块引入该入口文件。所述当前引入状态具体可理解为应用软件的代码模块在入口文件中的当前读状态,可以是能够读取的可读状态或不能读取的非可读状态。本实施例可默认各代码模块初始引进入口文件时的引入状态均为非可读状态或均为可读状态,本实施例的代码打包方法可根据需要对代码模块的当前引入状态进行调整。
需要说明的是,本实施例中的当前引入状态可以包括:非可读状态和可读状态;可以理解的是,本实施例处于入口文件中的代码模块,其当前引入状态只能有一种,要么为非可读状态,要么为可读状态。
S102、根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块。
在本实施例中,所述用户具体可指应用软件开发中的开发人员或测试人员,所述用户可在实际应用中根据打包需求设定当前所需的待打包环境,所述待打包环境具体可包括用于应用软件测试的测试环境及用于应用软件发布的生产环境。
可以理解的是,当确定待打包环境后相当于确定了归属该待打包环境的需要打包的待打包代码模块,其具体确定可优选为:从预先设定的打包环境和代码模块的归属关系表中获取归属于该待打包环境的所有代码模块的代码名。由此,本实施例可以基于获取的代码名从入口文件中确定出相应的待打包代码模块。
需要说明的是,对于入口文件中满足待打包环境的待打包代码模块,只有这些待打包代码模块的当前引入状态为可读状态时,才能进行后续的打包操作。而对于入口打包文件包括的全部代码模块而言,其当前引入状态即可能为可读状态,也可能为非可读状态,如果不归属该待打包环境的当前引入状态处于可读状态,或者,归属该打包环境的当前引入状态处于非可读状态,当前基于该入口文件都不能正常进行入口文件的编译打包,由此,为保证编译打包所获得打包文件的正确性,本步骤可以根据入口文件中各代码模块的当前引入状态,及用户选定的待打包环境,确定出需要调整引入状态的目标代码模块。
S103、调整各所述目标代码模块的当前引入状态,获得待编译入口文件。
本步骤具体可以对上述确定的目标代码模块的当前引入状态进行调整,从而使引入状态调整后的入口文件中,只有归属该待打包环境的代码模块的当前引入状态为可读状态,其余代码模块的当前引入状态均为非可读状态,最终可将引入状态调整后的入口文件记为待编译入口文件。
示例性地,本实施例可通过为代码模块添加特殊标记将代码模块由可读状态变更为非可读状态,或者,也可通过采用设定文本替换代码模块中的特殊标记将代码模块由非可读状态变更为可读状态。
S104、编译所述待编译入口文件,获得所述待打包环境对应的打包文件。
本步骤具体实现了对待编译入口文件的编译操作,其编译后的文件可记为满足待打包环境的打包文件(如编译生成的bundle文件)。
本发明实施例一提供的代码打包方法,能够通过对引入应用软件所有代码模块引入到同一个入口文件进行编译,来获得适合不同打包环境的打包文件,与现有不同打包环境对应不同入口文件进行打包的方式相比,该方法减少了重复引入相同代码到不同入口文件的空间资源占用,并降低了将代码引入不同入口文件时代码引入失误的风险,同时避免了因代码模块的不同部分适用不同打包环境而进行的代码模块分离,由此降低了代码打包所需的维护成本。
实施例二
图2给出了本发明实施例二提供的一种代码打包方法的流程示意图,本实施例以上述实施例为基础进行优化,在本实施例中,进一步将确定应用软件的入口文件中所包括代码模块的当前引入状态具体化为:确定应用软件的入口文件中带有注释标记的代码模块的当前引入状态为非可读状态;确定所述入口文件中未带注释标记的代码模块的当前引入状态为可读状态。
同时,本实施例将根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块,进一步具体化为:遍历所述入口文件中的每个代码模块;如果所述代码模块归属所述待打包环境且所述代码模块的当前引入状态为非可读状态,则确定所述代码模块为待调整引入状态的目标代码模块;如果所述代码模块非归属所述待打包环境且所述代码模块的当前引入状态为可读状态,则确定所述代码模块为待调整引入状态的目标代码模块。
此外,本实施例进一步将调整各所述目标代码模块的当前引入状态,具体化为:如果所述目标代码模块的当前引入状态为非可读状态,则基于第一调整策略调整所述目标代码模块的当前引入状态;如果所述目标代码模块的当前引入状态为可读状态,则基于第二调整策略调整所述目标代码模块的当前引入状态。
如图2所示,本发明实施例提供的一种代码打包方法,具体包括如下操作:
S201、确定应用软件的入口文件中带有注释标记的代码模块的当前引入状态为非可读状态。
S202、确定所述入口文件中未带注释标记的代码模块的当前引入状态为可读状态。
本实施例上述S201和S202给出了应用软件的入口文件中代码模块当前引入状态确定的具体实现。
具体地,本实施例可以对入口文件中的代码模块进行遍历,以确定各代码模块是否带有注释标记,并将带有注释标记的代码模块的当前引入状态确定为非可读状态,将未带有注释标记的代码模块的当前引入状态确定为可读状态。
进一步的,所述注释标记为:包括设定注释标识符和设定关键标识的字符串,本实施例以上述设定注释标记的好处在于将该注释标记与入口文件中所包含的常规注释标记进行区分。其包括的设定注释标识符可以是作为常规注释标记的标识符,设定关键标识则可以是一个设定字符串。
示例性地,为了与常规的注释标记进行区分,本实施可采用常规注释标记的标识符符结合设定字符串的形式对入口文件中的代码模块进行注释标记,如,可以采用‘/*__TAG_START__’和‘__TAG_END__*/’对代码模块进行注释标记,且可认为处于‘/*__TAG_START__’和‘__TAG_END__*/’之间的代码模块为非可读状态,其中,‘/*’和‘*/’为本实施所设定注释标记中的设定注释标识符,而字符串‘__TAG_START__’和‘__TAG_END__’则可看作设定关键标识。
需要说明的是,所述代码模块可认为是一个功能函数,因此,遍历入口文件时可通过确定一个功能函数的起始和结束标识来区分不同的代码模块。此外,考虑到一个代码模块中可能存在部分代码为适用于不同打包环境的公共代码,而另一部分代码为适用于某个打包环境的非公共代码,为保证一个代码模块中的代码满足不同打包环境,本实施例可将一个代码模块分成多个子代码模块,并分别设置各子代码模块的引入状态(可设置各子代码模块的默认引入状态为带有注释标记的非可读状态),且本实施例可以将各子代码模块作为独立代码模块并基于本实施例的代码打包方法,进行所对应当前引入状态的确定及调整操作。
S203、确定用户选定的待打包环境。
本步骤可以具体用来获取软件开发者或测试者选定进行代码打包的待打包环境。获取所述待打包环境和入口文件中各代码模块的当前引入状态后,可以循环执行下述S204至S207,以确定待调整引入状态的目标代码模块。
S204、顺序选取入口文件中的一个代码模块作为当前待打包模块;
具体地,本步骤相当于循环的起始步骤,具体用来选取待判定的代码模块,并将待判定的代码模块记为当前待打包模块。本实施例中下述S205中,需要对选取的当前代码模块与待打包环境的归属关系以及所选取当前代码模块的当前引入状态进行判定。
S205、判定当前代码模块是否归属待打包环境,且当前代码模块的当前引入状态是否为非可读状态,若归属非可读,或者,非归属可读,则执行S206;若归属可读,或者,非归属非可读,则执行S207。
具体地,根据预先设定的打包环境与代码模块的归属关系表,结合当前所选取代码模块的代码名,确定该代码模块是否归属该待打包环境,如果该代码模块归属该待打包环境,为实现该待打包环境下对该代码模块的编译,需要将该代码模块的在入口文件中的引入状态设置为可读状态,如果该代码模块的当前引入状态为非可读状态,则需要在对入口文件进行编译前,调整该当前代码模块的引入状态,由此,上述确定当前代码模块为归属且非可读时,可以执行S206,以将该当前代码模块确定为待调整引入状态的目标代码模块。
同理,如果该当前代码模块不归属该待打包环境,则可知对应该待打包环境进行编译打包形成的打包文件中不能包含该当前代码模块的相关信息,因此,需要将该当前代码模块的在入口文件中的引入状态设置为非可读状态,如果该代码模块的当前引入状态为可读状态,则需要在对入口文件进行编译前,整该代码模块的引入状态,由此,上述确定当前代码模块为归属且非可读时,也需要执行S206,以将该当前代码模块确定为待调整引入状态的目标代码模块。
此外,可以理解的是,对于从入口文件中选取的当前代码模块,如果当前代码模块满足下述情况:其非归属所述待打包环境且当前引入状态为非可读状态;或者,其归属于所述待打包环境且当前引入状态为可读状态,则无需对其引入状态进行调整,由此,当前代码模块满足上述两判定情况时,需要执行S207
S206、确定当前代码模块为待调整引入状态的目标代码模块,并执行S208。
示例性地,确定当前代码模块为归属且非可读,或者,为非归属且可读时,可执行本步骤。
S207、无需将当前代码模块作为待调整引入状态的目标代码模块,并执行S208。
示例性地,确定当前代码模块为归属且可读,或者,为非归属且非可读时,可执行本步骤。
S208、判定当前代码模块是否为入口文件中的末尾代码模块,若是,则执行S209;若否,则返回执行S204。
在本实施例中,对选取的当前代码模块进行上述S205或S207的判定后,可基于本步骤判定选取的当前代码模块是否为入口文件中的末尾代码模块,如果是末尾代码模块,则可结束上述S204至S207的操作,如果不是末尾代码模块,则可返回S204循环执行上述S204至S207的操作。
S209、调整各所述目标代码模块的当前引入状态,获得待编译入口文件。
上述确定入口文件中需要进行引入状态调整的目标代码模块后,可以调整各目标代码模块的引入状态,由此获得包括待编译入口文件,该待编译入口文件中包括了调整引入状态后的目标代码模块及不需调整引入状态的其余原有代码模块。
具体地,本步骤可以根据目标代码模块的当前引入状态,采用不同的操作实现引入状态的调整。进一步的,本实施例将调整各所述目标代码模块的当前引入状态,具体化为:针对每个目标代码模块,如果所述目标代码模块的当前引入状态为非可读状态,则基于第一调整策略调整所述目标代码模块的当前引入状态;如果所述目标代码模块的当前引入状态为可读状态,则基于第二调整策略调整所述目标代码模块的当前引入状态;其中,所述第一调整策略与所述第二调整策略不相同。
具体地,所述基于第一调整策略调整所述目标代码模块的当前引入状态,包括:查找所述目标代码模块的注释标记;采用设定字符替换查找到的注释标记。
在本实施例中,当目标代码模块的当前引入状态为非可读状态时,可认为该目标代码模块携带了注释标记‘/*__TAG_START__’和‘__TAG_END__*/’,本步骤可以查找到该目标代码模块携带的注释标记,并采用设定的字符对注释标记进行替换。示例性地,可采用空格字符对注释标记‘/*__TAG_START__’进行替换,以及也可采用空格字符对注释标记‘__TAG_END__*/’进行替换,从而使该目标代码模块的引入状态变更为可读状态。
具体地,所述基于第二调整策略调整所述目标代码模块的当前引入状态,包括:确定所述目标代码模块在所述入口文件中的起止位置;在所述起止位置处添加注释标记。
在本实施例中,当目标代码模块的当前引入状态为可读状态时,可认为该目标代码模块未携带注释标记,为将目标代码模块调整为非可读状态,需要在该目标代码模块的起始和结尾处添加注释标记,本步骤可以查找到目标代码模块的起始位置和终止位置,并分别在起始和终止位置处添加注释标记,示例性地,可将‘/*__TAG_START__’添加到该目标代码模块的起始位置处,还可将‘__TAG_END__*/’添加到该目标代码模块的终止位置处,从而使该目标代码模块的引入状态变更为非可读状态。
S210、编译所述待编译入口文件,获得所述待打包环境对应的打包文件。
本发明实施例二提供的一种代码打包方法,具体化了入口文件中代码模块当前引入代码的确定操作,同时具体化了入口文件中待调整引入状态的目标代码模块的确定操作,还具体化了对目标代码模块的当前引入状态进行调整的替换调整操作。利用该方法,能够通过对引入应用软件所有代码模块引入到同一个入口文件进行编译,来获得适合不同打包环境的打包文件,与现有不同打包环境对应不同入口文件进行打包的方式相比,该方法减少了重复引入相同代码到不同入口文件的空间资源占用,并降低了将代码引入不同入口文件时代码引入失误的风险,同时避免了因代码模块的不同部分适用不同打包环境而进行的代码模块分离,由此降低了代码打包所需的维护成本。
实施例三
图3给出了本发明实施例三提供的一种代码打包装置的结构框图。该装置适用于在不同打包环境下对所开发应用软件的前端代码模块进行编译打包的情况,该装置可由软件和/或硬件实现,并一般集成在支持应用软件开发编程的计算机设备上,如图3所示,该装置包括:状态确定模块31、目标确定模块32、状态调整模块33以及文件编译模块34。
其中,状态确定模块31,用于确定应用软件的入口文件中所包括代码模块的当前引入状态;
目标确定模块32,用于根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块;
状态调整模块33,用于调整各所述目标代码模块的当前引入状态,获得待编译入口文件;
文件编译模块34,用于编译所述待编译入口文件,获得所述待打包环境对应的打包文件。
在本实施例中,首先通过状态确定模块31确定应用软件的入口文件中所包括代码模块的当前引入状态;然后通过目标确定模块32根据用户选定的待打包环境及各当前引入状态,确定入口文件中待调整引入状态的目标代码模块;之后通过状态调整模块33调整各目标代码模块的当前引入状态,获得待编译入口文件;最终通过文件编译模块34编译该待编译入口文件,获得待打包环境对应的打包文件。
本发明实施例三提供的一种代码打包装置,能够通过对引入应用软件所有代码模块引入到同一个入口文件进行编译,来获得适合不同打包环境的打包文件,与现有不同打包环境对应不同入口文件进行打包的实现相比,该装置减少了重复引入相同代码到不同入口文件的空间资源占用,并降低了将代码引入不同入口文件时代码引入失误的风险,同时避免了因代码模块的不同部分适用不同打包环境而进行的代码模块分离,由此降低了代码打包所需的维护成本。
进一步地,所述当前引入状态包括:非可读状态和可读状态;
相应的,状态确定模块31,具体用于:
确定应用软件的入口文件中带有注释标记的代码模块的当前引入状态为非可读状态;确定所述入口文件中未带注释标记的代码模块的当前引入状态为可读状态。
进一步地,所述注释标记为:包括设定注释标识符和设定关键标识的字符串。
进一步地,目标确定模块32,具体用于:
确定用户选定的待打包环境,并遍历所述入口文件中的每个代码模块;当所述代码模块归属所述待打包环境且所述代码模块的当前引入状态为非可读状态时,确定所述代码模块为待调整引入状态的目标代码模块;当所述代码模块非归属所述待打包环境且所述代码模块的当前引入状态为可读状态时,确定所述代码模块为待调整引入状态的目标代码模块。
进一步地,状态调整模块33,包括:
第一调整单元,用于针对每个目标代码模块,当所述目标代码模块的当前引入状态为非可读状态时,基于第一调整策略调整所述目标代码模块的当前引入状态;
第二调整单元,用于针对每个目标代码模块,当所述目标代码模块的当前引入状态为可读状态时,基于第二调整策略调整所述目标代码模块的当前引入状态;
文件获取单元,用于获得引入状态调整后的待编译入口文件;
其中,所述第一调整策略与所述第二调整策略不相同。
进一步地,所述第一调整单元,具体用于:
当所述目标代码模块的当前引入状态为非可读状态时,查找所述目标代码模块的注释标记,采用设定字符替换查找到的注释标记。
进一步地,所述第二调整单元,具体用于:
当所述目标代码模块的当前引入状态为可读状态时,确定所述目标代码模块在所述入口文件中的起止位置,在所述起止位置处添加注释标记。
实施例四
图4为本发明实施例四提供的一种计算机设备的硬件结构图,具体地,该计算机设备包括:处理器和存储装置。存储装置中存储有至少一条指令,且指令由所述处理器执行,使得所述计算机设备执行如上述方法实施例所述的代码打包方法。
参照图4,该计算机设备具体可以包括:处理器40、存储装置41、显示屏42、输入装置43、输出装置44以及通信装置45。该计算机设备中处理器40的数量可以是一个或者多个,图4中以一个处理器40为例。该计算机设备中存储装置41的数量可以是一个或者多个,图4中以一个存储装置41为例。该计算机设备的处理器40、存储装置41、显示屏42、输入装置43、输出装置44以及通信装置45可以通过总线或者其他方式连接,图4中以通过总线连接为例。
存储装置41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例对应的程序指令/模块(例如,上述实施例所提供代码打包装置中的状态确定模块31、目标确定模块32、状态调整模块33以及文件编译模块34等)。存储装置41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储装置41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一般而言,显示屏42用于根据处理器40的指示显示数据,还用于接收作用于显示屏42的触摸操作,并将相应的信号发送至处理器40或其他装置。可选的,当显示屏42为红外屏时,其还包括红外触摸框,该红外触摸框设置在显示屏42的四周,其还可以用于接收红外信号,并将该红外信号发送至处理器40或者其他计算机设备。
通信装置45,用于与其他计算机设备建立通信连接,其可以是有线通信装置和/或无线通信装置。
输入装置43可用于接收输入的数字或者字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入,还可以是用于获取图像的摄像头以及获取视频数据中音频的拾音计算机设备。输出装置44可以包括显示屏等视频计算机设备以及扬声器等音频计算机设备。需要说明的是,输入装置43和输出装置44的具体组成可以根据实际情况设定。
处理器40通过运行存储在存储装置41中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的代码打包方法。
具体的,实施例中,处理器40执行存储装置41中存储的一个或多个程序时,具体实现如下操作:确定应用软件的入口文件中所包括代码模块的当前引入状态;根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块;调整各所述目标代码模块的当前引入状态,获得待编译入口文件;编译所述待编译入口文件,获得所述待打包环境对应的打包文件。
本发明实施例还提供一种计算机可读存储介质,所述存储介质中的程序由计算机设备的处理器执行时,使得计算机设备能够执行如上述实施例所述的代码打包方法。示例性的,上述实施例所述的代码打包方法包括:确定应用软件的入口文件中所包括代码模块的当前引入状态;根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块;调整各所述目标代码模块的当前引入状态,获得待编译入口文件;编译所述待编译入口文件,获得所述待打包环境对应的打包文件。
需要说明的是,对于装置、计算机设备、存储介质实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明任意实施例所述的代码打包方法。
值得注意的是,上述代码打包装置中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行装置执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (14)
1.一种代码打包方法,其特征在于,包括:
确定应用软件的入口文件中所包括代码模块的当前引入状态;
所述当前引入状态包括:非可读状态和可读状态;
所述确定应用软件的入口文件中所包括代码模块的当前引入状态,包括:
确定应用软件的入口文件中带有注释标记的代码模块的当前引入状态为非可读状态;
确定所述入口文件中未带注释标记的代码模块的当前引入状态为可读状态;
根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块;
调整各所述目标代码模块的当前引入状态,获得待编译入口文件;
编译所述待编译入口文件,获得所述待打包环境对应的打包文件。
2.根据权利要求1所述的方法,其特征在于,所述注释标记为:包括设定注释标识符和设定关键标识的字符串。
3.根据权利要求1所述的方法,其特征在于,所述根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块,包括:
确定用户选定的待打包环境,并遍历所述入口文件中的每个代码模块;
如果所述代码模块归属所述待打包环境且所述代码模块的当前引入状态为非可读状态,则确定所述代码模块为待调整引入状态的目标代码模块;
如果所述代码模块非归属所述待打包环境且所述代码模块的当前引入状态为可读状态,则确定所述代码模块为待调整引入状态的目标代码模块。
4.根据权利要求3所述的方法,其特征在于,所述调整各所述目标代码模块的当前引入状态,包括:
针对每个目标代码模块,如果所述目标代码模块的当前引入状态为非可读状态,则基于第一调整策略调整所述目标代码模块的当前引入状态;
如果所述目标代码模块的当前引入状态为可读状态,则基于第二调整策略调整所述目标代码模块的当前引入状态;
其中,所述第一调整策略与所述第二调整策略不相同。
5.根据权利要求4所述的方法,其特征在于,所述基于第一调整策略调整所述目标代码模块的当前引入状态,包括:
查找所述目标代码模块的注释标记;
采用设定字符替换查找到的注释标记。
6.根据权利要求4所述的方法,其特征在于,所述基于第二调整策略调整所述目标代码模块的当前引入状态,包括:
确定所述目标代码模块在所述入口文件中的起止位置;
在所述起止位置处添加注释标记。
7.一种代码打包装置,其特征在于,包括:
状态确定模块,用于确定应用软件的入口文件中所包括代码模块的当前引入状态;
所述当前引入状态包括:非可读状态和可读状态;
相应的,所述状态确定模块,具体用于:
确定应用软件的入口文件中带有注释标记的代码模块的当前引入状态为非可读状态;
确定所述入口文件中未带注释标记的代码模块的当前引入状态为可读状态;
目标确定模块,用于根据用户选定的待打包环境及各所述当前引入状态,确定所述入口文件中待调整引入状态的目标代码模块;
状态调整模块,用于调整各所述目标代码模块的当前引入状态,获得待编译入口文件;
文件编译模块,用于编译所述待编译入口文件,获得所述待打包环境对应的打包文件。
8.根据权利要求7所述的装置,其特征在于,所述注释标记为:包括设定注释标识符和设定关键标识的字符串。
9.根据权利要求7所述的装置,其特征在于,所述目标确定模块,具体用于:
确定用户选定的待打包环境,并遍历所述入口文件中的每个代码模块;
当所述代码模块归属所述待打包环境且所述代码模块的当前引入状态为非可读状态时,确定所述代码模块为待调整引入状态的目标代码模块;
当所述代码模块非归属所述待打包环境且所述代码模块的当前引入状态为可读状态时,确定所述代码模块为待调整引入状态的目标代码模块。
10.根据权利要求9所述的装置,其特征在于,所述状态调整模块,包括:
第一调整单元,用于针对每个目标代码模块,当所述目标代码模块的当前引入状态为非可读状态时,基于第一调整策略调整所述目标代码模块的当前引入状态;
第二调整单元,用于针对每个目标代码模块,当所述目标代码模块的当前引入状态为可读状态时,基于第二调整策略调整所述目标代码模块的当前引入状态;
文件获取单元,用于获得引入状态调整后的待编译入口文件;
其中,所述第一调整策略与所述第二调整策略不相同。
11.根据权利要求10所述的装置,其特征在于,所述第一调整单元,具体用于:
当所述目标代码模块的当前引入状态为非可读状态时,查找所述目标代码模块的注释标记,采用设定字符替换查找到的注释标记。
12.根据权利要求10所述的装置,其特征在于,所述第二调整单元,具体用于:
当所述目标代码模块的当前引入状态为可读状态时,确定所述目标代码模块在所述入口文件中的起止位置,在所述起止位置处添加注释标记。
13.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一项所述的代码打包方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述的代码打包方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044789.3A CN109783133B (zh) | 2019-01-17 | 2019-01-17 | 代码打包方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910044789.3A CN109783133B (zh) | 2019-01-17 | 2019-01-17 | 代码打包方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783133A CN109783133A (zh) | 2019-05-21 |
CN109783133B true CN109783133B (zh) | 2022-03-22 |
Family
ID=66500904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910044789.3A Active CN109783133B (zh) | 2019-01-17 | 2019-01-17 | 代码打包方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783133B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659253A (zh) * | 2019-09-03 | 2020-01-07 | 北京达佳互联信息技术有限公司 | 文件打包方法、装置、电子设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066291A (zh) * | 2017-02-09 | 2017-08-18 | 阿里巴巴集团控股有限公司 | 软件开发工具包的打包方法、装置及设备、可读介质 |
CN108304175A (zh) * | 2018-01-29 | 2018-07-20 | 口碑(上海)信息技术有限公司 | 代码文件隔离打包方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7281237B2 (en) * | 2003-01-16 | 2007-10-09 | Sun Microsystems, Inc. | Run-time verification of annotated software code |
-
2019
- 2019-01-17 CN CN201910044789.3A patent/CN109783133B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066291A (zh) * | 2017-02-09 | 2017-08-18 | 阿里巴巴集团控股有限公司 | 软件开发工具包的打包方法、装置及设备、可读介质 |
CN108304175A (zh) * | 2018-01-29 | 2018-07-20 | 口碑(上海)信息技术有限公司 | 代码文件隔离打包方法及装置 |
Non-Patent Citations (1)
Title |
---|
"webpack解惑:多入口文件打包策略 ";吕大豹;《博客园:https://www.cnblogs.com/lvdabao/p/5944420.html》;20161010;第1-10页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109783133A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111142988B (zh) | 页面测试方法、装置、存储介质及电子设备 | |
US8949799B2 (en) | Program log record optimization | |
CN105335137A (zh) | 用于处理源文件的方法和装置 | |
CN104461898A (zh) | 应用测试的方法、中控服务器、测试终端及*** | |
CN111736840A (zh) | 小程序应用的编译方法、运行方法、存储介质及电子设备 | |
JP2008176793A (ja) | ソフトウェアテストシステム、ソフトウェアのテスト方法、および、そのテスト方法を実行するためのプログラムを記録したコンピュータ読取り可能な記録媒体 | |
CN108763094B (zh) | 测试用例生成方法、装置、设备及存储介质 | |
US20190034195A1 (en) | Systems and methods for providing patchable rom firmware | |
CN111124479B (zh) | 配置文件的解析方法、***及电子设备 | |
CN110795353B (zh) | 快应用的调试方法、装置、设备及存储介质 | |
CN105160018A (zh) | 一种复制/粘贴图片的方法、装置和*** | |
CN106776266B (zh) | 测试工具的配置方法及终端设备 | |
CN109783133B (zh) | 代码打包方法、装置、计算机设备及存储介质 | |
US10659321B2 (en) | Electronic apparatus for recording debugging information and control method thereof | |
CN111414168B (zh) | 基于思维导图的Web应用开发方法及装置、电子设备 | |
JP7318704B2 (ja) | テスト装置、テスト方法及びプログラム | |
CN106484375B (zh) | 一种指令块加载方法、软交换设备及*** | |
CN117008920A (zh) | 引擎***、请求处理方法、装置、计算机设备及存储介质 | |
CN116880825A (zh) | 代码生成方法、装置、电子设备和存储介质 | |
CN110716789A (zh) | 数据配置方法、可读存储介质和电子设备 | |
CN109815455A (zh) | 项目文件处理方法和装置 | |
CN113760291A (zh) | 日志输出的方法和装置 | |
CN114816364A (zh) | 基于Swagger动态生成范本文件的方法、装置及应用 | |
CN111061627B (zh) | 网页埋点方法、装置、电子设备及存储介质 | |
CN113626100A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |