CN110297647B - 一种前端工程更新npm包的方法及终端 - Google Patents
一种前端工程更新npm包的方法及终端 Download PDFInfo
- Publication number
- CN110297647B CN110297647B CN201910454344.2A CN201910454344A CN110297647B CN 110297647 B CN110297647 B CN 110297647B CN 201910454344 A CN201910454344 A CN 201910454344A CN 110297647 B CN110297647 B CN 110297647B
- Authority
- CN
- China
- Prior art keywords
- updated
- package
- npm
- name
- domain name
- 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
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000004590 computer program Methods 0.000 claims description 8
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种前端工程更新npm包的方法及终端,通过获取指定域名,并根据指定域名获取指定域名下的待更新npm包包名,根据待更新包包名,更新待更新包,能够更新指定域的npm包,而不会像现有技术中只能更新所有的npm包,提高了npm包更新的灵活性。
Description
技术领域
本发明涉及软件设计领域,尤其涉及一种前端工程更新npm包的方法及终端。
背景技术
在现代前端工程中,通过npm进行工程管理已经是非常普遍的现象。为了更好的复用代码,每个团队都会制作自己的npm包,并且将npm包发布到指定的域中,比如A团队会将自己团队的包发布到域:@teamA,B团队会将自己团队的包发布到域:@teamB。
npm默认提供了一个npm包更新工具(npm update),这个包更新工具会将当前工程所有的包进行更新,但是有的时候,团队只希望更新某个域下的包,比如只更新@team A这个域下的所有包,而保持其他包不变。然而,现有的更新方法并无法实现。
发明内容
本发明所要解决的技术问题是:提供一种前端工程更新npm包的方法及终端,能够更新指定域的npm包,提高了npm包更新的灵活性。
为了解决上述技术问题,本发明采用的一种技术方案为:
一种前端工程更新npm包的方法,包括步骤:
S1、获取指定域名;
S2、根据所述指定域名,获取所述指定域名下的待更新npm包包名;
S3、根据所述待更新的npm包包名,更新所述待更新包。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种前端工程更新npm包的终端,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
S1、获取指定域名;
S2、根据所述指定域名,获取所述指定域名下的待更新npm包包名;
S3、根据所述待更新的npm包包名,更新所述待更新包。
本发明的有益效果在于:通过获取指定域名,并根据指定域名获取指定域名下的待更新npm包包名,根据待更新包包名,更新待更新包,能够更新指定域的npm包,而不会像现有技术中只能更新所有的npm包,提高了npm包更新的灵活性。
附图说明
图1为本发明实施例的一种前端工程更新npm包的方法的步骤流程图;
图2为本发明实施例的一种前端工程更新npm包的终端的结构示意图;
图3为本发明实施例的前端工程的node_modules的目标结构示意图;
标号说明:
1、一种前端工程更新npm包的终端;2、存储器;3、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
名词解释:
JavaScript(js):一种可以被浏览器执行的程序语言;
nodejs:一种让服务端可以执行js的技术,在前端开发中,我们使用nodejs模拟正式的服务端环境;
npm包:js代码编写的解决某个特定功能的库;
npm仓库(包仓库):一个服务器,里面存储了非常多的npm包;
scope(域):把包放到scope中,就好比将文件放到文件夹中,所以scope类似文件夹的概念,用于方便的管理npm仓库中的包;
npm:用于安装、发布、更新、管理npm包的工具;
node_modules文件夹:在前端工程目录结构中,所有下载的npm包,都放在这个文件夹下,其目录结构中,如果一个包没有scope,那么第一层文件夹的名字就是包名;否则第一层文件夹的名称是scope的名称,第二层文件夹的名称才是包名。
请参照图1,一种前端工程更新npm包的方法,包括步骤:
S1、获取指定域名;
S2、根据所述指定域名,获取所述指定域名下的待更新npm包包名;
S3、根据所述待更新的npm包包名,更新所述待更新包。
从上述描述可知,本发明的有益效果在于:通过获取指定域名,并根据指定域名获取指定域名下的待更新npm包包名,根据待更新包包名,更新待更新包,能够更新指定域的npm包,而不会像现有技术中只能更新所有的npm包,提高了npm包更新的灵活性。
进一步的,所述步骤S1包括:
获取外部传入的参数,解析所述传入的参数,判断所述传入的参数是否为空,若否,获取解析得到的指定域名,判断在所述前端工程的预设目录下是否存在与所述指定域名匹配的文件夹,若是,则执行步骤S2,否则,直接退出。
由上述描述可知,通过参数的传入实现对指定域名的提取,方便快捷,并且如果提取不到域名,则程序直接退出,在无法运行的情况下直接退出程序,避免无谓的资源消耗,提高了资源的有效利用率。
进一步的,所述步骤S2包括:
根据所述指定域名,遍历所述指定域名下的第一层文件夹的文件名,得到待更新文件夹列表;
遍历所述待更新文件夹列表中的待更新文件夹,读取每一个待更新文件夹下的.json文件,解析所述.json文件,得到name属性;
根据得到的每一个待更新文件夹对应的name属性确定所述指定域名下的待更新npm包包名。
由上述描述可知,在前端工程目录结构中,如果一个包有对应的域scope,则在前端工程目录结构下的node_modules文件夹下的第一层文件夹的名称就是scope的名称,第二层文件夹下的名称就是包名,而包名可以通过解析第二层文件夹下的.json文件获取,所以通过对指定域名下的第一层文件夹中每一个文件夹下的.json文件的解析,能够准确快速自动地得到待更新npm包的包名。
进一步的,所述步骤S3包括:
将所述待更新的npm包包名按照预设规则组合成所述待更新包对应的包名序列,采用npm update+包名序列的命令形式更新所述待更新包。
由上述描述可知,通过对所有待更新的npm包的包名进行预设规则的组合,形成包名序列,然后通过npm update+包名序列的命令形式就能够实现一次性对指定域下的所有npm包进行更新,简便快捷。
进一步的,所述步骤S3还包括:
创建子进程,让所述子进程执行待更新包的更新命令。
由上述描述可知,通过另外创建子进程执行待更新包的更新命令,能够进一步提高更新速度,避免与常规包更新产生冲突。
请参照图2,一种前端工程更新npm包的终端,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
S1、获取指定域名;
S2、根据所述指定域名,获取所述指定域名下的待更新npm包包名;
S3、根据所述待更新的npm包包名,更新所述待更新包。
从上述描述可知,本发明的有益效果在于:通过获取指定域名,并根据指定域名获取指定域名下的待更新npm包包名,根据待更新包包名,更新待更新包,能够更新指定域的npm包,而不会像现有技术中只能更新所有的npm包,提高了npm包更新的灵活性。
进一步的,所述步骤S1包括:
获取外部传入的参数,解析所述传入的参数,判断所述传入的参数是否为空,若否,获取解析得到的指定域名,判断在所述前端工程的预设目录下是否存在与所述指定域名匹配的文件夹,若是,则执行步骤S2,否则,直接退出。
由上述描述可知,通过参数的传入实现对指定域名的提取,方便快捷,并且如果提取不到域名,则程序直接退出,在无法运行的情况下直接退出程序,避免无谓的资源消耗,提高了资源的有效利用率。
进一步的,所述步骤S2包括:
根据所述指定域名,遍历所述指定域名下的第一层文件夹的文件名,得到待更新文件夹列表;
遍历所述待更新文件夹列表中的待更新文件夹,读取每一个待更新文件夹下的.json文件,解析所述.json文件,得到name属性;
根据得到的每一个待更新文件夹对应的name属性确定所述指定域名下的待更新npm包包名。
由上述描述可知,在前端工程目录结构中,如果一个包有对应的域scope,则在前端工程目录结构下的node_modules文件夹下的第一层文件夹的名称就是scope的名称,第二层文件夹下的名称就是包名,而包名可以通过解析第二层文件夹下的.json文件获取,所以通过对指定域名下的第一层文件夹中每一个文件夹下的.json文件的解析,能够准确快速自动地得到待更新npm包的包名。
进一步的,所述步骤S3包括:
将所述待更新的npm包包名按照预设规则组合成所述待更新包对应的包名序列,采用npm update+包名序列的命令形式更新所述待更新包。
由上述描述可知,通过对所有待更新的npm包的包名进行预设规则的组合,形成包名序列,然后通过npm update+包名序列的命令形式就能够实现一次性对指定域下的所有npm包进行更新,简便快捷。
进一步的,所述步骤S3还包括:
创建子进程,让所述子进程执行待更新包的更新命令。
由上述描述可知,通过另外创建子进程执行待更新包的更新命令,能够进一步提高更新速度,避免与常规包更新产生冲突。
实施例一
请参照图1,一种前端工程更新npm包的方法,包括步骤:
S1、获取指定域名;
具体的,获取外部传入的参数,解析所述传入的参数,这个参数表示使用者需要更新的域的名称,例如可以是@teamA;
判断所述传入的参数是否为空,若否,获取解析得到的指定域名,判断在所述前端工程的预设目录下是否存在与所述指定域名匹配的文件夹,若是,则执行步骤S2,否则,直接退出;
其中,所述预设目录指的是node_modules目录,如果指定域名为@teamA,则在node_modules目录遍历,是否该目录下有名称为@teamA的文件夹;
S2、根据所述指定域名,获取所述指定域名下的待更新npm包包名;
具体的,根据所述指定域名,遍历所述指定域名下的第一层文件夹的文件名,得到待更新文件夹列表;
比如,如果指定域名@teamA下的第一层文件夹包括x,b,c,则待更新文件夹列表为:
node_modules/@teamA/x,node_modules/@teamA/b,node_modules/@teamA/c;
遍历所述待更新文件夹列表中的待更新文件夹,读取每一个待更新文件夹下的.json文件,即package.json文件,解析所述.json文件,使用系统自带的json库,对文件内容进行解析,得到name属性;
根据得到的每一个待更新文件夹对应的name属性确定所述指定域名下的待更新npm包包名,name属性即表示其对应的npm包在仓库中的包名;
S3、根据所述待更新的npm包包名,更新所述待更新包;
具体的,将所述待更新的npm包包名按照预设规则组合成所述待更新包对应的包名序列,采用npm update+包名序列的命令形式更新所述待更新包;
优选的,包名序列中不同包的包名之间用一个空格分割,也可以用其他预设符号,比如*、|等;
具体的执行更新命令如下:
npm update@teamA/x@teamA/b@teamA/c;
优选的,另外创建一个新的子进程,让所述新的子进程执行待更新包的更新命令;
其中,可以将上述实现指定域的npm包的更新的步骤用一个js脚本文件scopeupdate.js来实现;
在具体实现指定域的npm包更新时,执行命令:node scopeupdate.js@teamA即可更新@teamA下的所有包;
此外,如果说要更新的npm包没有对应的域,则由于知道要更新的npm包包名,此时直接npm update+待更新的npm包即可实现更新。
将上述实现指定域的npm包更新的方法应用于实际的场景,如图3所示为一个工程的node_modules目录结构,运行程序node scopeupdate.js@teamA,则能够实现对@teamA下的所有npm包的更新;
其具体的运行过程如下:
脚本scopeUpdate解析参数,得到“@teamA”,表示希望更新@teamA这个域下的所有包;
确认存在文件夹node_modules/@teamA,遍历node_modules/@teamA,得到待更新文件夹列表:
node_modules/@teamA/package_1,node_modules/@teamA/package_2;
遍历待更新文件夹列表中的每一个待更新文件夹,读取每一个待更新文件夹下的package.json文件,得到各自对应的包名,假设包名分别为:@teamA/package_1,@teamA/package_2;
新建一个子进程,执行命令:
npm update@teamA/package_1@teamA/package_2
此时子进程就会通过npm更新@teamA下的两个包,而不会更新其他的包。
实施例二
请参照图2,一种前端工程更新npm包的终端1,包括存储器2、处理器3以及存储在所述存储器2上并可在所述处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例一中的各个步骤。
综上所述,本发明提供的一种前端工程更新npm包的方法及终端,通过对传入参数的解析,获取指定域名,并通过遍历指定域名下的第一层文件夹的文件名,对第一层文件夹下的.json文件进行解析,获取指定域名下的待更新npm包包名,根据待更新包包名,创建子进程,更新待更新包,能够实现指定域名下的待更新npm包的快捷方便自动的读取并自动快速地更新指定域下的所有包名,能够更新指定域的npm包,而不会像现有技术中只能更新所有的npm包,提高了npm包更新的灵活性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (4)
1.一种前端工程更新npm包的方法,其特征在于,包括步骤:
S1、获取指定域名;
S2、根据所述指定域名,获取所述指定域名下的待更新npm包包名;
S3、根据所述待更新的npm包包名,更新所述待更新包;
将所述待更新的npm包包名按照预设规则组合成所述待更新包对应的包名序列,采用npm update+包名序列的命令形式更新所述待更新包;
所述步骤S2包括:
根据所述指定域名,遍历所述指定域名下的第一层文件夹的文件名,得到待更新文件夹列表;
遍历所述待更新文件夹列表中的待更新文件夹,读取每一个待更新文件夹下的.json文件,解析所述.json文件,得到name属性;
根据得到的每一个待更新文件夹对应的name属性确定所述指定域名下的待更新npm包包名;
所述步骤S1包括:
获取外部传入的参数,解析所述传入的参数,判断所述传入的参数是否为空,若否,获取解析得到的指定域名,判断在所述前端工程的预设目录下是否存在与所述指定域名匹配的文件夹,若是,则执行步骤S2,否则,直接退出。
2.根据权利要求1所述的一种前端工程更新npm包的方法,其特征在于,所述步骤S3还包括:
创建子进程,让所述子进程执行待更新包的更新命令。
3.一种前端工程更新npm包的终端,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
S1、获取指定域名;
S2、根据所述指定域名,获取所述指定域名下的待更新npm包包名;
S3、根据所述待更新的npm包包名,更新所述待更新包;
将所述待更新的npm包包名按照预设规则组合成所述待更新包对应的包名序列,采用npm update+包名序列的命令形式更新所述待更新包;
所述步骤S2包括:
根据所述指定域名,遍历所述指定域名下的第一层文件夹的文件名,得到待更新文件夹列表;
遍历所述待更新文件夹列表中的待更新文件夹,读取每一个待更新文件夹下的.json文件,解析所述.json文件,得到name属性;
根据得到的每一个待更新文件夹对应的name属性确定所述指定域名下的待更新npm包包名;
所述步骤S1包括:
获取外部传入的参数,解析所述传入的参数,判断所述传入的参数是否为空,若否,获取解析得到的指定域名,判断在所述前端工程的预设目录下是否存在与所述指定域名匹配的文件夹,若是,则执行步骤S2,否则,直接退出。
4.根据权利要求3所述的一种前端工程更新npm包的终端,其特征在于,所述步骤S3还包括:
创建子进程,让所述子进程执行待更新包的更新命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910454344.2A CN110297647B (zh) | 2019-05-29 | 2019-05-29 | 一种前端工程更新npm包的方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910454344.2A CN110297647B (zh) | 2019-05-29 | 2019-05-29 | 一种前端工程更新npm包的方法及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297647A CN110297647A (zh) | 2019-10-01 |
CN110297647B true CN110297647B (zh) | 2023-12-01 |
Family
ID=68027364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910454344.2A Active CN110297647B (zh) | 2019-05-29 | 2019-05-29 | 一种前端工程更新npm包的方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110297647B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416390B (zh) * | 2020-11-11 | 2022-01-04 | 北京五八信息技术有限公司 | 更新npm包的方法、装置、电子设备及可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843869A (zh) * | 2017-01-16 | 2017-06-13 | 百融(北京)金融信息服务股份有限公司 | 一种前端开发工程化系统和方法 |
CN107329771A (zh) * | 2017-05-11 | 2017-11-07 | 广东网金控股股份有限公司 | 一种项目增量更新方法、装置及用户终端 |
WO2018120429A1 (zh) * | 2016-12-28 | 2018-07-05 | 平安科技(深圳)有限公司 | 一种资源更新的方法、终端、计算机可读存储介质及资源更新设备 |
CN108363564A (zh) * | 2018-01-23 | 2018-08-03 | 平安普惠企业管理有限公司 | 多项目组件化实现方法、装置、终端设备及存储介质 |
CN108733399A (zh) * | 2017-04-13 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 动态更新配置数据的方法和装置 |
CN109298883A (zh) * | 2018-08-23 | 2019-02-01 | 深圳点猫科技有限公司 | 一种教育平台下的自动生成组件文件的方法及电子设备 |
CN109739744A (zh) * | 2018-12-05 | 2019-05-10 | 北京奇艺世纪科技有限公司 | 一种测试系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10095499B2 (en) * | 2016-09-16 | 2018-10-09 | Microsoft Technology Licensing, Llc | Optimization for multi-project package manager |
-
2019
- 2019-05-29 CN CN201910454344.2A patent/CN110297647B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018120429A1 (zh) * | 2016-12-28 | 2018-07-05 | 平安科技(深圳)有限公司 | 一种资源更新的方法、终端、计算机可读存储介质及资源更新设备 |
CN106843869A (zh) * | 2017-01-16 | 2017-06-13 | 百融(北京)金融信息服务股份有限公司 | 一种前端开发工程化系统和方法 |
CN108733399A (zh) * | 2017-04-13 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 动态更新配置数据的方法和装置 |
CN107329771A (zh) * | 2017-05-11 | 2017-11-07 | 广东网金控股股份有限公司 | 一种项目增量更新方法、装置及用户终端 |
CN108363564A (zh) * | 2018-01-23 | 2018-08-03 | 平安普惠企业管理有限公司 | 多项目组件化实现方法、装置、终端设备及存储介质 |
CN109298883A (zh) * | 2018-08-23 | 2019-02-01 | 深圳点猫科技有限公司 | 一种教育平台下的自动生成组件文件的方法及电子设备 |
CN109739744A (zh) * | 2018-12-05 | 2019-05-10 | 北京奇艺世纪科技有限公司 | 一种测试系统及方法 |
Non-Patent Citations (1)
Title |
---|
陈坚 ; 宋安平 ; .自动更新系统的设计与实现.计算机时代.(第08期), * |
Also Published As
Publication number | Publication date |
---|---|
CN110297647A (zh) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9983892B2 (en) | Deep linking to mobile application states through programmatic replay of user interface events | |
CN110244942B (zh) | 一种页面生成方法、装置及系统 | |
US10514910B2 (en) | Automatically mapping data while designing process flows | |
US9858094B2 (en) | Monitoring and actuation of view controller parameters to reach deep states without manual developer intervention | |
US10372783B2 (en) | Persisting the state of visual control elements in uniform resource locator (URL)-generated web pages | |
CN104484216A (zh) | 服务接口文档和在线测试工具生成方法、装置 | |
US11726802B2 (en) | Robust user interface related robotic process automation | |
EP2805251A1 (en) | Managing script file dependencies and load times | |
CN110224896B (zh) | 一种网络性能数据采集方法、装置及存储介质 | |
CN111068328A (zh) | 游戏广告配置表格的生成方法、终端设备及介质 | |
CN109299331B (zh) | Air展现超文本标记语言HTML5页面的方法及装置 | |
US9648078B2 (en) | Identifying a browser for rendering an electronic document | |
CN111290996A (zh) | 文档格式转换方法、装置、设备及可读存储介质 | |
CN111309332A (zh) | 文件内容按需加载方法、装置及电子设备、存储介质 | |
CN110297647B (zh) | 一种前端工程更新npm包的方法及终端 | |
CN112068879B (zh) | 基于配置化的客户端应用程序开发框架构建方法及装置 | |
US9389838B2 (en) | Method for creating a computer software compiler for client server computing | |
CN115167822A (zh) | 分支代码合并方法、装置、设备和存储介质 | |
CN113515441A (zh) | 应用信息采集方法、系统、电子设备及存储介质 | |
CN115098095A (zh) | 网页自动化机器人处理方法及系统 | |
Coleman | Data flow sequences: A revision of data flow diagrams for modelling applications using XML. | |
CN111124386A (zh) | 基于Unity的动画事件处理方法、装置、设备和存储介质 | |
CN112394972A (zh) | 一种云应用发布方法、装置、设备及存储介质 | |
US20240231838A1 (en) | Methods for generating configuration data packet and file, processing method, device and medium | |
CN111258586B (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 |