miniprogram-ci 2.1.5 → 2.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +2 -0
- package/dist/@types/ci/index.d.ts +2 -0
- package/dist/@types/ci/miniapp/archive.d.ts +18 -0
- package/dist/@types/ci/miniapp/checkBuildArgument.d.ts +5 -0
- package/dist/@types/ci/miniapp/upload.d.ts +2 -1
- package/dist/@types/ci/miniapp-cloud-upload.d.ts +15 -0
- package/dist/@types/common/code-analyse/index.d.ts +2 -1
- package/dist/@types/config/config.d.ts +1 -1
- package/dist/@types/index.d.ts +1 -1
- package/dist/@types/utils/report.d.ts +1 -1
- package/dist/ci/android-miniapp-toolkit/dist/index.js +1 -1
- package/dist/ci/index.js +1 -1
- package/dist/ci/miniapp/archive.js +1 -1
- package/dist/ci/miniapp/checkBuildArgument.js +1 -1
- package/dist/ci/miniapp/upload.js +1 -1
- package/dist/ci/miniapp-cloud-upload.js +1 -0
- package/dist/ci/utils/codeDenpendencyQualityChecker.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/common/code-analyse/index.js +1 -1
- package/dist/config/config.js +1 -1
- package/dist/index.js +1 -1
- package/dist/utils/report.js +1 -1
- package/package.json +4 -6
package/dist/ci/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.cleanCache=exports.workletVersion=exports.buildIpa=exports.buildApk=exports.getWhiteExtList=exports.checkCodeQuality=exports.analyseCode=exports.getLatestVersion=exports.uploadJsServer=exports.cloud=exports.getDevSourceMap=exports.proxy=exports.packNpmManually=exports.packNpm=exports.getCompiledResult=exports.preview=exports.upload=exports.Project=void 0;const project_1=require("./project");Object.defineProperty(exports,"Project",{enumerable:!0,get:function(){return project_1.Project}});const upload_1=require("./upload"),preview_1=require("./preview"),getDevSourceMap_1=require("./getDevSourceMap"),packnpm_1=require("../modules/corecompiler/original/npm/packnpm");Object.defineProperty(exports,"packNpm",{enumerable:!0,get:function(){return packnpm_1.packNpm}}),Object.defineProperty(exports,"packNpmManually",{enumerable:!0,get:function(){return packnpm_1.packNpmManually}});const request_1=require("../utils/request");Object.defineProperty(exports,"proxy",{enumerable:!0,get:function(){return request_1.setCiProxy}});const uploadFunction_1=require("./cloud/uploadFunction"),createTimeTrigger_1=require("./cloud/createTimeTrigger"),uploadContainer_1=require("./cloud/uploadContainer"),uploadFile_1=require("./cloud/uploadFile"),report_1=require("../utils/report"),jsserver_1=require("./jsserver");Object.defineProperty(exports,"uploadJsServer",{enumerable:!0,get:function(){return jsserver_1.uploadJsServer}});const code_analyse_1=require("./code-analyse");Object.defineProperty(exports,"analyseCode",{enumerable:!0,get:function(){return code_analyse_1.analyseCode}});const getCompiledResult_1=require("./getCompiledResult");Object.defineProperty(exports,"getCompiledResult",{enumerable:!0,get:function(){return getCompiledResult_1.getCompiledResult}});const getLatestVersion_1=require("./getLatestVersion");Object.defineProperty(exports,"getLatestVersion",{enumerable:!0,get:function(){return getLatestVersion_1.getLatestVersion}});const white_ext_list_1=require("../utils/white_ext_list");Object.defineProperty(exports,"getWhiteExtList",{enumerable:!0,get:function(){return white_ext_list_1.getWhiteExtList}});const checkCodeQuality_1=require("./checkCodeQuality");Object.defineProperty(exports,"checkCodeQuality",{enumerable:!0,get:function(){return checkCodeQuality_1.checkCodeQuality}});const cache_1=require("../utils/cache"),build_apk_1=require("./build-apk");Object.defineProperty(exports,"buildApk",{enumerable:!0,get:function(){return build_apk_1.buildApk}});const build_ipa_1=require("./build-ipa");function cleanCache(){cache_1.cacheManager.clean()}Object.defineProperty(exports,"
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.cleanCache=exports.workletVersion=exports.miniappCloudUpload=exports.buildIpa=exports.buildApk=exports.getWhiteExtList=exports.checkCodeQuality=exports.analyseCode=exports.getLatestVersion=exports.uploadJsServer=exports.cloud=exports.getDevSourceMap=exports.proxy=exports.packNpmManually=exports.packNpm=exports.getCompiledResult=exports.preview=exports.upload=exports.Project=void 0;const project_1=require("./project");Object.defineProperty(exports,"Project",{enumerable:!0,get:function(){return project_1.Project}});const upload_1=require("./upload"),preview_1=require("./preview"),getDevSourceMap_1=require("./getDevSourceMap"),packnpm_1=require("../modules/corecompiler/original/npm/packnpm");Object.defineProperty(exports,"packNpm",{enumerable:!0,get:function(){return packnpm_1.packNpm}}),Object.defineProperty(exports,"packNpmManually",{enumerable:!0,get:function(){return packnpm_1.packNpmManually}});const request_1=require("../utils/request");Object.defineProperty(exports,"proxy",{enumerable:!0,get:function(){return request_1.setCiProxy}});const uploadFunction_1=require("./cloud/uploadFunction"),createTimeTrigger_1=require("./cloud/createTimeTrigger"),uploadContainer_1=require("./cloud/uploadContainer"),uploadFile_1=require("./cloud/uploadFile"),report_1=require("../utils/report"),jsserver_1=require("./jsserver");Object.defineProperty(exports,"uploadJsServer",{enumerable:!0,get:function(){return jsserver_1.uploadJsServer}});const code_analyse_1=require("./code-analyse");Object.defineProperty(exports,"analyseCode",{enumerable:!0,get:function(){return code_analyse_1.analyseCode}});const getCompiledResult_1=require("./getCompiledResult");Object.defineProperty(exports,"getCompiledResult",{enumerable:!0,get:function(){return getCompiledResult_1.getCompiledResult}});const getLatestVersion_1=require("./getLatestVersion");Object.defineProperty(exports,"getLatestVersion",{enumerable:!0,get:function(){return getLatestVersion_1.getLatestVersion}});const white_ext_list_1=require("../utils/white_ext_list");Object.defineProperty(exports,"getWhiteExtList",{enumerable:!0,get:function(){return white_ext_list_1.getWhiteExtList}});const checkCodeQuality_1=require("./checkCodeQuality");Object.defineProperty(exports,"checkCodeQuality",{enumerable:!0,get:function(){return checkCodeQuality_1.checkCodeQuality}});const cache_1=require("../utils/cache"),build_apk_1=require("./build-apk");Object.defineProperty(exports,"buildApk",{enumerable:!0,get:function(){return build_apk_1.buildApk}});const build_ipa_1=require("./build-ipa");Object.defineProperty(exports,"buildIpa",{enumerable:!0,get:function(){return build_ipa_1.buildIpa}});const miniapp_cloud_upload_1=require("./miniapp-cloud-upload");function cleanCache(){cache_1.cacheManager.clean()}Object.defineProperty(exports,"miniappCloudUpload",{enumerable:!0,get:function(){return miniapp_cloud_upload_1.miniappCloudUpload}}),exports.upload=(0,report_1.wrapReport)("upload",upload_1.upload),exports.preview=(0,report_1.wrapReport)("preview",preview_1.preview),exports.getDevSourceMap=(0,report_1.wrapReport)("getDevSourceMap",getDevSourceMap_1.getDevSourceMap),exports.cloud={uploadFunction:uploadFunction_1.uploadFunction,createTimeTrigger:createTimeTrigger_1.createTimeTrigger,uploadStaticStorage:e=>(0,uploadFile_1.uploadFiles)(e,"staticstorage"),uploadStorage:e=>(0,uploadFile_1.uploadFiles)(e,"storage"),uploadContainer:uploadContainer_1.uploadContainer},exports.workletVersion=require("../utils/common").workletVersion,exports.cleanCache=cleanCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildProjectArchive=void 0;const tslib_1=require("tslib"),getcompiler_1=require("../getcompiler"),tools_1=require("../../utils/tools"),log=tslib_1.__importStar(require("../../utils/log")),upload_1=require("./upload"),url_config_1=require("../../config/url.config"),sign_1=require("../../utils/sign"),jsonParse_1=require("../../utils/jsonParse"),unpack_1=tslib_1.__importDefault(require("../utils/unpack")),app_1=require("../../modules/fullcompiler/app/app"),miniappJson_1=require("../../utils/miniappJson"),path=require("path"),fse=require("fs-extra"),request=require("request"),QueryString=require("querystring");function getUploadOptions(){return{appLaunchInfo:{},uploadType:"build",autoTestMock:!1,onProgressUpdate:(...e)=>{log.info(...e)},onFilesIgnored:()=>{},onFilesMissing:()=>{},remoteDebug:!1,remoteProxyPort:void 0,disableUrlCheck:!1,autoPreview:!1,cdpEnabled:!1,remoteAppservice:!1,remoteAppserviceType:"ios",noMaps:!1,showProgress:!1}}async function downloadWxapkg(e,o,r,i,n,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildProjectArchive=exports.getUploadOptions=void 0;const tslib_1=require("tslib"),getcompiler_1=require("../getcompiler"),tools_1=require("../../utils/tools"),log=tslib_1.__importStar(require("../../utils/log")),upload_1=require("./upload"),url_config_1=require("../../config/url.config"),sign_1=require("../../utils/sign"),jsonParse_1=require("../../utils/jsonParse"),unpack_1=tslib_1.__importDefault(require("../utils/unpack")),app_1=require("../../modules/fullcompiler/app/app"),miniappJson_1=require("../../utils/miniappJson"),path=require("path"),fse=require("fs-extra"),request=require("request"),QueryString=require("querystring");function getUploadOptions(){return{appLaunchInfo:{},uploadType:"build",autoTestMock:!1,onProgressUpdate:(...e)=>{log.info(...e)},onFilesIgnored:()=>{},onFilesMissing:()=>{},remoteDebug:!1,remoteProxyPort:void 0,disableUrlCheck:!1,autoPreview:!1,cdpEnabled:!1,remoteAppservice:!1,remoteAppserviceType:"ios",noMaps:!1,showProgress:!1}}async function downloadWxapkg(e,o,r,i,t,n,s){const{project:a,robot:p}=e,l=await(0,sign_1.getSignature)(a.privateKey,a.appid),c={appid:a.appid,pkg_source:"Release"===t?4:3,pkg_type:r?4:0,use_cloud_sync:n?1:0,os_type:"mini-android"===i?2:1,need_client_js_ext_info:"mini-android"===i?s:1,signature:l,robot:p},u=fse.createWriteStream(o,{mode:511});return new Promise((e,o)=>{const r=request({url:`${url_config_1.getPkgWxapkg}?${QueryString.stringify(c)}`,method:"get"},e=>{e&&o(e)});r.on("response",i=>{const t=i.headers["content-type"];if(null==t?void 0:t.toLocaleLowerCase().includes("text/plain")){let e="";i.on("data",o=>{e+=o}),i.on("end",()=>{var r,i,t;try{e=(0,jsonParse_1.jsonRespParse)(e,url_config_1.getPkgWxapkg);const n=null!==(r=e.baseresponse)&&void 0!==r?r:{},s=null!==(i=n.errcode)&&void 0!==i?i:-1,a=null!==(t=n.errmsg)&&void 0!==t?t:"request fail";o(`errcode ${s}, errmsg ${a}`)}catch(e){o(e)}})}else r.pipe(u),u.on("error",e=>{log.error("download miniapp wxapkg error:"+e.message),o(e)}),u.on("close",()=>{e({})});i.on("error",e=>{o(e)})})}).catch(e=>{throw new Error(`${url_config_1.getPkgWxapkg} fail ${e}`)})}async function extractWxapkgToAppDir(e){const o=e.replace(".wxapkg","");fse.ensureDirSync(o),fse.emptyDirSync(o);const r=fse.readFileSync(e);try{await(0,unpack_1.default)(r,o)}catch(e){let o=r.toString("utf8");o.length>100&&(o=o.slice(0,100));const i=`Download pkg error: ${o} (${e.msg})`;throw new Error(i)}return o}async function genSubPkgAppInfo(e,o,r,i,t,n,s){var a;const{setting:p={useProjectConfig:!1},project:l,targetPlatform:c}=this,u=(0,miniappJson_1.getMiniappJson)(l.projectPath,c),g=u.icon,d=u.name,f=(await(0,getcompiler_1.getCompiler)(l,p)).getAppJSON(),m=(null===(a=null==f?void 0:f.window)||void 0===a?void 0:a.pageOrientation)||"portrait",_=await(0,app_1.generateSubPkgAppInfoJson)({miniModuleId:e,nickName:d,brandIconURL:g,pageOrientation:m,buildVersion:i,subpkgs:o,contact:t,cpfWxaAttrSyncResponse:n,miniappPkgType:s});fse.ensureDirSync(path.dirname(r)),fse.writeJSONSync(r,_)}async function buildProjectArchive(e,o){var r;let i,t="";try{const n=e.project,{module_info:s={}}=await n.miniappAttr()||{};if(!s.module_id)throw new Error("project.miniapp.json 尚未配置 miniModuleId");log.info("构建项目资源包中...");const a=null!==(r=(await(0,upload_1.upload)(Object.assign(Object.assign(Object.assign({},e),o),getUploadOptions()))).useSubPkg)&&void 0!==r&&r,{miniappOptions:p,outputDir:l}=o,{miniappPkgType:c,useCloudSync:u,needClientJsExtInfo:g}=p;log.info("下载项目资源包中..."),i=path.join(e.resourceDir,"app.wxapkg"),await downloadWxapkg(e,i,a,o.targetPlatform,c,u,g),log.info("下载项目资源包成功"),log.info("生成项目资源包中..."),t=await extractWxapkgToAppDir(i);const d=fse.readJsonSync(path.join(t,"info.json"));if(0===d.wxapkgs.length)throw new Error("构建项目资源包失败: 获取不到 wxapkg");fse.ensureDirSync(l),fse.emptyDirSync(l),d.wxapkgs.forEach(e=>{const o=path.join(l,e.file),r=o+".sign";fse.moveSync(path.join(t,e.file),o),fse.moveSync(path.join(t,e.signFile),r);const i=fse.readFileSync(o);e.md5=(0,tools_1.generateMD5)(i),e.versionType=null==p?void 0:p.miniappPkgType});const f=path.join(l,"buildinfo.json");await genSubPkgAppInfo.call(Object.assign(Object.assign({},e),o),s.module_id,d.wxapkgs,f,d.buildVersion,d.contact,d.cpfWxaAttrSyncResponse,p.miniappPkgType),log.info("生成项目资源包成功")}catch(e){throw new Error("build project archive error: "+e.message)}finally{t&&fse.existsSync(t)&&fse.removeSync(t);(await(0,getcompiler_1.getCompiler)(e.project,e.setting||{useProjectConfig:!1})).destroy()}}exports.getUploadOptions=getUploadOptions,exports.buildProjectArchive=buildProjectArchive;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformIOSBuildArgument=exports.transformAndroidBuildArgument=exports.publicKeyForP12password=exports.defaulPasswordPlaceHolderForCache=void 0;const tslib_1=require("tslib"),miniappJson_1=require("../../utils/miniappJson"),tools_1=require("../../utils/tools"),fs_extra_1=tslib_1.__importDefault(require("fs-extra")),path_1=tslib_1.__importDefault(require("path")),isWindows_1=tslib_1.__importDefault(require("licia/isWindows")),moment=require("moment"),crypto=require("crypto");var IMiniappPkgType;exports.defaulPasswordPlaceHolderForCache="*******",exports.publicKeyForP12password="-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRsmgcQqaCjlFVITfAzIWsjpxj\nynoXetXQhmIspi86V6rtq2BENl9HrrX18XsQ8Qn6jsNJ6mtvSUUflvpLnEQMM1M7\nwagNazL0A2KFw97Br9sE+CVJdctC/dmportNjrbekNYHacT1bL+GDpatAaD4Pnwy\nx3yJsmqx3tJun1G++wIDAQAB\n-----END PUBLIC KEY-----\n",function(e){e.Release="Release",e.Debug="Debug",e.HotReload="HotReload"}(IMiniappPkgType||(IMiniappPkgType={}));const validateFileExistenceAndExtname=(e,r,o,i="",t="")=>{if(t&&(o=path_1.default.join(t,o)),!fs_extra_1.default.existsSync(o))throw new Error(`${e}: ${r} 无法找到文件 ${o} 文件`);if(i&&path_1.default.extname(o)!==i)throw new Error(`${e}: ${r} 文件后缀必须为 ${i}`)},unifyiOSBuildFilePathForWindows=(e,r)=>{e[r]&&(e[r]=(0,tools_1.unifyPath)(e[r]))},transformAndroidBuildArgument=e=>{const{project:r,keyStore:o,keyPass:i,storePass:t,keyAlias:s,output:n,useAab:a=!1,desc:p="",isUploadResourceBundle:l=!1,resourceBundleVersion:u="",resourceBundleDesc:d="",robot:c=1}=e;if(!r)throw new Error("缺少参数 project");const f=r.projectPath,m=(0,miniappJson_1.tryGetAndroidMiniappJson)(f),w=`CI robot ${c||1} 在 ${moment().format("LLL")} 提交上传`;if(!m.version)throw new Error("project.miniapp.json 中缺少 miniapp-android.version 字段");if(!n)throw new Error("缺少参数 output");validateFileExistenceAndExtname("build-apk options","keyStore",o);const P=path_1.default.extname(o);if(P&&![".jks",".keystore"].includes(P))throw new Error("keystore 文件后缀需是 .jks 或者 .keystore");if(!t)throw new Error("缺少参数 storePass");if(!i)throw new Error("缺少参数 keyPass");if(!s)throw new Error("缺少参数 keyAlias");return{buildArchiveOpts:{version:m.version,desc:e.desc||w,miniappPkgType:IMiniappPkgType.Release,useCloudSync:l,remoteDebugEnable:!1},cloudBuildInfo:{certificateInfo:{androidCertificate:{keyStore:o,keyAlias:s,keyPass:i,storePass:t}},miniappPkgType:IMiniappPkgType.Release,remoteDebugEnable:!1,useCloudUpload:l,useAab:a,packageVersion:u||m.version,packageDesc:d||w,uploadAppInfo:{uploadBetaVersion:!1,userVersion:m.version,userDesc:p||w},recordInfo:""}}};exports.transformAndroidBuildArgument=transformAndroidBuildArgument;const transformIOSBuildArgument=e=>{var r;const{project:o,output:i,isDistribute:t=!1,isRemoteBuild:s=!1,profilePath:n="",certificateName:a="",p12Path:p="",p12Password:l="",tpnsProfilePath:u="",desc:d="",isUploadBeta:c=!1,isUploadResourceBundle:f=!1,resourceBundleVersion:m="",resourceBundleDesc:w="",robot:P}=e;if(!o)throw new Error("缺少参数 project");const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformIOSBuildArgument=exports.transformAndroidBuildArgument=exports.IMiniappPkgType=exports.publicKeyForP12password=exports.defaulPasswordPlaceHolderForCache=void 0;const tslib_1=require("tslib"),miniappJson_1=require("../../utils/miniappJson"),tools_1=require("../../utils/tools"),fs_extra_1=tslib_1.__importDefault(require("fs-extra")),path_1=tslib_1.__importDefault(require("path")),isWindows_1=tslib_1.__importDefault(require("licia/isWindows")),moment=require("moment"),crypto=require("crypto");var IMiniappPkgType;exports.defaulPasswordPlaceHolderForCache="*******",exports.publicKeyForP12password="-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRsmgcQqaCjlFVITfAzIWsjpxj\nynoXetXQhmIspi86V6rtq2BENl9HrrX18XsQ8Qn6jsNJ6mtvSUUflvpLnEQMM1M7\nwagNazL0A2KFw97Br9sE+CVJdctC/dmportNjrbekNYHacT1bL+GDpatAaD4Pnwy\nx3yJsmqx3tJun1G++wIDAQAB\n-----END PUBLIC KEY-----\n",function(e){e.Release="Release",e.Debug="Debug",e.HotReload="HotReload"}(IMiniappPkgType=exports.IMiniappPkgType||(exports.IMiniappPkgType={}));const validateFileExistenceAndExtname=(e,r,o,i="",t="")=>{if(t&&(o=path_1.default.join(t,o)),!fs_extra_1.default.existsSync(o))throw new Error(`${e}: ${r} 无法找到文件 ${o} 文件`);if(i&&path_1.default.extname(o)!==i)throw new Error(`${e}: ${r} 文件后缀必须为 ${i}`)},unifyiOSBuildFilePathForWindows=(e,r)=>{e[r]&&(e[r]=(0,tools_1.unifyPath)(e[r]))},transformAndroidBuildArgument=e=>{const{project:r,keyStore:o,keyPass:i,storePass:t,keyAlias:s,output:n,useAab:a=!1,desc:p="",isUploadResourceBundle:l=!1,resourceBundleVersion:u="",resourceBundleDesc:d="",robot:c=1}=e;if(!r)throw new Error("缺少参数 project");const f=r.projectPath,m=(0,miniappJson_1.tryGetAndroidMiniappJson)(f),w=`CI robot ${c||1} 在 ${moment().format("LLL")} 提交上传`;if(!m.version)throw new Error("project.miniapp.json 中缺少 miniapp-android.version 字段");if(!n)throw new Error("缺少参数 output");validateFileExistenceAndExtname("build-apk options","keyStore",o);const P=path_1.default.extname(o);if(P&&![".jks",".keystore"].includes(P))throw new Error("keystore 文件后缀需是 .jks 或者 .keystore");if(!t)throw new Error("缺少参数 storePass");if(!i)throw new Error("缺少参数 keyPass");if(!s)throw new Error("缺少参数 keyAlias");return{buildArchiveOpts:{version:m.version,desc:e.desc||w,miniappPkgType:IMiniappPkgType.Release,useCloudSync:l,remoteDebugEnable:!1},cloudBuildInfo:{certificateInfo:{androidCertificate:{keyStore:o,keyAlias:s,keyPass:i,storePass:t}},miniappPkgType:IMiniappPkgType.Release,remoteDebugEnable:!1,useCloudUpload:l,useAab:a,packageVersion:u||m.version,packageDesc:d||w,uploadAppInfo:{uploadBetaVersion:!1,userVersion:m.version,userDesc:p||w},recordInfo:""}}};exports.transformAndroidBuildArgument=transformAndroidBuildArgument;const transformIOSBuildArgument=e=>{var r;const{project:o,output:i,isDistribute:t=!1,isRemoteBuild:s=!1,profilePath:n="",certificateName:a="",p12Path:p="",p12Password:l="",tpnsProfilePath:u="",desc:d="",isUploadBeta:c=!1,isUploadResourceBundle:f=!1,resourceBundleVersion:m="",resourceBundleDesc:w="",robot:P}=e;if(!o)throw new Error("缺少参数 project");const y=o.projectPath,h=(0,miniappJson_1.getRawMiniappJson)(o.projectPath),b=(0,miniappJson_1.tryGetIOSMiniappJson)(y),E=`CI robot ${P||1} 在 ${moment().format("LLL")} 提交上传`;if(!b.version)throw new Error("project.miniapp.json 中缺少 miniapp-ios.version 字段");if(!i)throw new Error("缺少参数 output");if(isWindows_1.default&&!s)throw new Error("windows 仅支持远程构建");const A={useRemote:s,p12:p,p12password:l,certificate:a,profile:n,tpnsProfile:u},g={isPublish:t};if(validateFileExistenceAndExtname("build-ipa options","profile",n,".mobileprovision",o.projectPath),g.profilePath=s?n:path_1.default.join(o.projectPath,n),!a)throw new Error("缺少参数 certificateName");if(g.certificateName=a,A.useRemote){if(validateFileExistenceAndExtname("build-ipa options","p12",p,".p12",o.projectPath),!l)throw new Error("缺少参数 p12Password");g.certificatePassword=l,g.certificatePath=p,isWindows_1.default&&(unifyiOSBuildFilePathForWindows(A,"profile"),unifyiOSBuildFilePathForWindows(A,"tpnsProfile"),unifyiOSBuildFilePathForWindows(A,"p12"));const e=Buffer.from(A.p12password,"utf8"),r=crypto.publicEncrypt(exports.publicKeyForP12password,e);A.p12passwordEncrypted=r.toString("base64"),h["mini-ios"].buildCloud=A,delete A.p12password,(0,miniappJson_1.writeMiniAppJson)(o.projectPath,h)}!0===(null===(r=b.tpush)||void 0===r?void 0:r.useExtendedLib_WeAppTPNS)&&validateFileExistenceAndExtname("build-ipa options","tpnsProfile",u,".mobileprovision",o.projectPath);return{buildArchiveOpts:{version:b.version,desc:e.desc||E,miniappPkgType:IMiniappPkgType.Release,useCloudSync:f,remoteDebugEnable:!1},cloudBuildInfo:{certificateInfo:{signType:"certificate",selfCertificate:g},miniappPkgType:IMiniappPkgType.Release,remoteDebugEnable:!1,useCloudUpload:f,packageVersion:m||b.version,packageDesc:w||E,uploadAppInfo:{uploadBetaVersion:c,userVersion:b.version,userDesc:d||E},useRemoteCloudBuild:s||!1,recordInfo:""}}};exports.transformIOSBuildArgument=transformIOSBuildArgument;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.upload=exports.SIGNATURE_FILE_NAME=void 0;const tslib_1=require("tslib"),cache_1=require("../../utils/cache"),locales_1=tslib_1.__importDefault(require("../../utils/locales/locales")),config_1=require("../../config/config"),getcompiler_1=require("../getcompiler"),tools_1=require("../utils/tools"),moment_1=tslib_1.__importDefault(require("moment")),url_config_1=require("../../config/url.config"),sign_1=require("../../utils/sign"),taskstatus_1=require("../../utils/taskstatus"),pack_1=require("../utils/pack"),log=tslib_1.__importStar(require("../../utils/log")),querystring_1=tslib_1.__importDefault(require("querystring")),zlib_1=tslib_1.__importDefault(require("zlib")),request_1=require("../../utils/request"),jsonParse_1=require("../../utils/jsonParse"),progressupdate_1=require("../utils/progressupdate");function getMiniappBuildQuery(e){var i,r,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.upload=exports.SIGNATURE_FILE_NAME=void 0;const tslib_1=require("tslib"),cache_1=require("../../utils/cache"),locales_1=tslib_1.__importDefault(require("../../utils/locales/locales")),config_1=require("../../config/config"),getcompiler_1=require("../getcompiler"),tools_1=require("../utils/tools"),moment_1=tslib_1.__importDefault(require("moment")),url_config_1=require("../../config/url.config"),sign_1=require("../../utils/sign"),taskstatus_1=require("../../utils/taskstatus"),pack_1=require("../utils/pack"),log=tslib_1.__importStar(require("../../utils/log")),querystring_1=tslib_1.__importDefault(require("querystring")),zlib_1=tslib_1.__importDefault(require("zlib")),request_1=require("../../utils/request"),jsonParse_1=require("../../utils/jsonParse"),progressupdate_1=require("../utils/progressupdate");function getMiniappBuildQuery(e){var i,o,r,t,s,n;const a=(0,moment_1.default)(new Date).format("YYYY-MM-DD-HH-mm-ss"),p={gzip:1,cross_platform_app:1,"user-version":encodeURIComponent(e.version||"miniapp-release-d-"+a),"user-desc":encodeURIComponent(e.desc||"miniapp-release-d-"+a),os_type:"mini-android"===e.targetPlatform?2:1,debug_extra_info:"miniappPkgType-"+(null===(i=e.miniappOptions)||void 0===i?void 0:i.miniappPkgType)};return(null===(o=e.miniappOptions)||void 0===o?void 0:o.uploadId)&&(p.upload_id=null===(r=e.miniappOptions)||void 0===r?void 0:r.uploadId),(null===(t=e.miniappOptions)||void 0===t?void 0:t.useCloudSync)&&(p.use_cloud_sync=1),(null===(s=e.miniappOptions)||void 0===s?void 0:s.archVersion)&&(p.arch_version=null===(n=e.miniappOptions)||void 0===n?void 0:n.archVersion),p}async function upload(e){const{project:i,setting:o={useProjectConfig:!1},robot:r="1",threads:t=0}=e,s=(0,progressupdate_1.transProgressUpdate)(e.onProgressUpdate||(e=>{if("object"==typeof e)try{const i=JSON.stringify(e);console.log(i)}catch(e){}console.log(""+e)}));process.env.COMPILE_THREADS=t.toString(),cache_1.cacheManager.clean();const n=await(0,getcompiler_1.getCompiler)(i,o,{targetPlatform:e.targetPlatform}),a=(0,tools_1.formatCISetting)(i,o),p=await n.compile({setting:a,onProgressUpdate:s,resultType:"prod",disableSpreadingUsingComponents:!0}),u=config_1.CI_VERSION,l=encodeURIComponent(JSON.stringify(getMiniappBuildQuery(e))),c={appid:i.appid,robot:r,miniapparchivequery:l};try{const e=new taskstatus_1.TaskStatus(locales_1.default.config.UPLOAD.toString());s(e);const o=`${url_config_1.miniappUpload}?${querystring_1.default.stringify(c)}`,r=await(0,sign_1.getSignature)(i.privateKey,i.appid);p[exports.SIGNATURE_FILE_NAME]=JSON.stringify({signature:r,version:u});const t=(0,pack_1.pack)(p),n=zlib_1.default.gzipSync(t.buffer);log.info("request url:",o);const a=(await(0,request_1.request)({url:o,method:"post",body:n})).body.toString(),l=(0,jsonParse_1.jsonRespParse)(a,o);if(0!==l.errCode)throw new Error(a);e.done(),s(e);const _={respBody:l.body};if(Array.isArray(l.body.subpackage_info)){const e=l.body.subpackage_info;_.subPackageInfo=e,_.useSubPkg=e.length>1}if(Array.isArray(l.body.ext_plugin_info)){const e=l.body.ext_plugin_info;_.pluginInfo=e.map(e=>({pluginProviderAppid:e.provider,version:e.version,size:e.size}))}return _}catch(e){throw e}}exports.SIGNATURE_FILE_NAME="ci.signature",exports.upload=upload;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.miniappCloudUpload=void 0;const tslib_1=require("tslib"),log=tslib_1.__importStar(require("../utils/log")),upload_1=require("./miniapp/upload"),archive_1=require("./miniapp/archive"),checkBuildArgument_1=require("./miniapp/checkBuildArgument"),moment_1=tslib_1.__importDefault(require("moment")),getcompiler_1=require("./getcompiler"),report_1=require("../utils/report"),crypto=require("crypto");function generateUint64(){const e=crypto.randomBytes(4).readUInt32BE(0),r=crypto.randomBytes(4).readUInt32BE(0);return((BigInt(e)<<BigInt(32))+BigInt(r)).toString()}async function miniappCloudUpload(e){var r,t,o;let i;const n=Date.now();try{if(!e.version)throw new Error("缺少参数 version");if(!e.project)throw new Error("缺少参数 project");const n=null===(r=e.iOSPlatform)||void 0===r||r,a=null===(t=e.androidPlatform)||void 0===t||t;if(!n&&!a)throw new Error("至少选择一个平台上传资源包");const{project:s}=e,p=await s.miniappAttr();if(!(null!==(o=null==p?void 0:p.cpa_info.use_cloud_sync)&&void 0!==o&&o))throw new Error("暂未开通使用此功能,请先在多端控制台开通使用");const c={version:e.version,desc:e.desc||`CI robot ${e.robot||1} 在 ${(0,moment_1.default)().format("LLL")} 提交上传`,targetPlatform:"mini-android",miniappOptions:{miniappPkgType:checkBuildArgument_1.IMiniappPkgType.Release,useCloudSync:!0,remoteDebugEnable:!1,archVersion:1},outputDir:""};n&&a&&(c.miniappOptions.uploadId=generateUint64()),a&&(c.targetPlatform="mini-android",await(0,upload_1.upload)(Object.assign(Object.assign(Object.assign({},e),c),(0,archive_1.getUploadOptions)())),log.success("上传 Android 资源包成功")),n&&(c.targetPlatform="mini-ios",await(0,upload_1.upload)(Object.assign(Object.assign(Object.assign({},e),c),(0,archive_1.getUploadOptions)())),log.success("上传 iOS 资源包成功"));(await(0,getcompiler_1.getCompiler)(e.project,e.setting||{useProjectConfig:!1})).destroy(),i={success:!0,errmsg:"上传资源包成功"}}catch(e){log.error("上传资源包失败:",e.message),i={success:!1,errmsg:"上传资源包失败:"+e.message}}const a=Date.now()-n;return e.project&&(0,report_1.reportAction)("miniappCloudUpload",i.success?0:-1,i.errmsg,a,e.project),i}exports.miniappCloudUpload=miniappCloudUpload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CodeDenpendencyQualityChecker=void 0;const tslib_1=require("tslib"),path=tslib_1.__importStar(require("path")),babel_helper_1=require("../../utils/babel_helper");function findParent(e,a,t,s){const i=new Set(Array.isArray(e)?e:[e]),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CodeDenpendencyQualityChecker=void 0;const tslib_1=require("tslib"),path=tslib_1.__importStar(require("path")),babel_helper_1=require("../../utils/babel_helper");function findParent(e,a,t,s){const i=new Set(Array.isArray(e)?e:[e]),r=new Set,n=new Set;for(;i.size>0;){const e=i.values().next().value;r.add(e),i.delete(e),t(e)&&n.add(e),(null==s?void 0:s(e))||e.parentDeps.forEach(e=>{e.originModule&&!r.has(e.originModule)&&i.add(e.originModule)})}return Array.from(n.values())}function isCodeFile(e){return/\.(json|wxml|wxss|js|wxs|ts|less|sass|scss)/.test(e)}function isMiniProgramCodeFile(e){return/\.(json|wxml|wxss|js|wxs)/.test(e)}function mapToMiniProgramFile(e){const a=path.posix.extname(e);return isMiniProgramCodeFile(a)?e:".ts"===a?e.substring(0,e.length-3)+".js":e.substring(0,e.length-5)+".wxss"}class CodeDenpendencyQualityChecker{constructor(e,a){if(this.analyzer=a,this.reservedFile=e=>e.indexOf(this.babelRoot)>=0,a.invalid)throw new Error("analyzer is invalid");if(!a.graph)throw new Error("analyzer graph is not built");this.babelRoot=(0,babel_helper_1.getBabelOutputPath)(e.setting)}checkUnusedCodeFiles(){const e=this.analyzer.fileHelper.getFileList("").filter(e=>isCodeFile(path.posix.extname(e))),a=new Set;return this.analyzer.graph.modules.forEach(t=>{const s=e.find(e=>e===t.path);s&&a.add(s)}),e.forEach(e=>{this.reservedFile(e)&&a.add(e)}),e.filter(e=>!a.has(e))}checkUnusedMiniProgramCodeFiles(){if(0===this.analyzer.compilerPlugins.length)return this.checkUnusedCodeFiles();const e=this.analyzer.fileHelper.getFileList("").filter(e=>isCodeFile(path.posix.extname(e))),a=new Set;this.analyzer.graph.modules.forEach(t=>{const s=e.find(e=>e===t.path);s&&a.add(mapToMiniProgramFile(s))}),e.forEach(e=>{this.reservedFile(e)&&a.add(e)});const t=new Set;return e.forEach(e=>{const s=mapToMiniProgramFile(e);a.has(s)||t.add(s)}),Array.from(t.values())}checkOnlyUsedByOtherPackagesJs(){const e=this.graph.modules.filter(e=>"Js"===e.type&&this.isLocateInMainPackage(e)).filter(e=>{let a=!1;return e.parentDeps.forEach(e=>{e.originModule&&this.isLocateInMainPackage(e.originModule)&&(a=!0)}),!a}).map(e=>e.path).filter(e=>!this.reservedFile(e));return{size:this.caculateFilesSize(e),files:e}}checkMainPackageUnusedComponents(){const e=this.graph.modules.filter(e=>"Component"===e.type&&this.isLocateInMainPackage(e)).filter(e=>0===findParent(e,this.graph,e=>"Page"===e.type&&this.isLocateInMainPackage(e)||"MainPackage"===e.type,e=>"Page"===e.type).length);e.filter(e=>{for(const a of e.deps.values())if("Component"!==a.type&&a.module&&a.module.parentDeps.size>1)return!1;return!0});const a=this.collectCompsFiles(e);return{size:this.caculateFilesSize(a),files:a,comps:e.map(e=>e.path.replace(/\.json$/,""))}}async checkUnusedPlugins(){if("miniprogram"!==this.analyzer.type)throw new Error("checkUnusedPlugins only support miniprogram, the analyzer.type is "+this.analyzer.type);const e=new Set,a=await this.analyzer.fileHelper.getJSON("app.json");a.plugins&&Object.keys(a.plugins).forEach(t=>{const s=a.plugins[t].provider;this.graph.modules.find(e=>{var a,i;return(null===(a=e.usePlugins)||void 0===a?void 0:a.has(t))||(null===(i=e.usePlugins)||void 0===i?void 0:i.has(s))})||e.add(s)});const t=a.subpackages||a.subPackages;return t&&t.forEach(a=>{const t=a.root;a.plugins&&Object.keys(a.plugins).forEach(s=>{const i=a.plugins[s].provider;this.graph.modules.find(e=>{var a,r;return e.path.startsWith(t)&&((null===(a=e.usePlugins)||void 0===a?void 0:a.has(s))||(null===(r=e.usePlugins)||void 0===r?void 0:r.has(i)))})||e.add(i)})}),Array.from(e)}async checkUnusedComponents(){const e=this.graph.modules.filter(e=>"Page"===e.type||"Component"===e.type||"MainPackage"===e.type||"SubPackage"===e.type),a=[],t=new Set;await Promise.all(e.map(async e=>{let s={};try{s=await this.analyzer.fileHelper.getJSON(e.path)||{}}catch(e){}const i=e=>!!s.componentPlaceholder&&Object.values(s.componentPlaceholder).includes(e),r=a=>{var t;const s=e.findChild("Wxml");if(!s)return!1;if(null===(t=s.useTags)||void 0===t?void 0:t.has(a))return!0;return!!s.findChildrenRecursively("Wxml").find(e=>{var t;return null===(t=e.useTags)||void 0===t?void 0:t.has(a)})},n=Array.from(e.deps).filter(e=>"Component"===e.type);for(const s of n){("MainPackage"===e.type||"SubPackage"===e.type||r(s.name)||(o=s.name,l=void 0,null===(l=e.useTags)||void 0===l?void 0:l.has(o))||i(s.name))&&s.module?t.add(s.module):a.push({page:e.path,tag:s.name,path:s.path||void 0})}var o,l}));return this.graph.modules.filter(e=>"Component"===e.type&&!t.has(e)).map(e=>e.path)}get graph(){return this.analyzer.graph}getSubpackageRoots(){if(this.subpackageRoots)return this.subpackageRoots;const e=this.analyzer.graph.modules.find(e=>"MainPackage"===e.type).findChildren("SubPackage");return this.subpackageRoots=e.map(e=>e.path),this.subpackageRoots}isLocateInMainPackage(e){return!this.getSubpackageRoots().find(a=>e.path.startsWith(a))}caculateFilesSize(e){return e.reduce((e,a)=>{const t=this.analyzer.fileHelper.stat(a);return(null==t?void 0:t.size)&&(e+=t.size),e},0)}caculateResourceFileSize(e){var a,t;let s=0;return null===(t=null===(a=this.analyzer.serialize())||void 0===a?void 0:a.files)||void 0===t||t.forEach(a=>{e.includes(a.ext)&&(s+=a.size)}),s}caculatePackageSize(){var e,a;const t={__APP__:0};return null===(a=null===(e=this.analyzer.serialize())||void 0===e?void 0:e.files)||void 0===a||a.forEach(e=>{e.subPackage?(void 0===t[e.subPackage]&&(t[e.subPackage]=0),t[e.subPackage]+=e.size):t.__APP__+=e.size}),t}collectCompsFiles(e){return e.map(e=>{const a=[e.path];return e.deps.forEach(e=>{var t;"Component"!==e.type&&e.module&&a.push(null===(t=e.module)||void 0===t?void 0:t.path)}),a}).reduce((e,a)=>e.concat(a),[])}}exports.CodeDenpendencyQualityChecker=CodeDenpendencyQualityChecker;
|
package/dist/cli/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const tslib_1=require("tslib"),ci=tslib_1.__importStar(require("../index")),yargs_1=tslib_1.__importDefault(require("yargs")),log=tslib_1.__importStar(require("../utils/log")),fs_extra_1=tslib_1.__importDefault(require("fs-extra")),path_1=tslib_1.__importDefault(require("path"));async function run(){let e;function o(o){return{command:o,describe:o+" commands",builder:i=>i.usage(`Usage: $0 cloud ${o} <command>`).command({command:"upload",describe:"upload files",builder:e=>e.options({env:{alias:"e",desc:"env id",string:!0,demandOption:!0},path:{alias:"p",desc:"path to the local folder",string:!0,demandOption:!0},remotePath:{alias:"rp",desc:"path to the remote folder",string:!0,demandOption:!0},concurrency:{alias:"c",desc:"concurrenct upload file count",number:!0,default:5,demandOption:!0}}).group(["env","path","remotePath"],"Options:"),handler:i=>e=e=>ci.cloud["storage"===o?"uploadStorage":"uploadStaticStorage"]({project:e,env:i.env,path:i.path,remotePath:i.remotePath})}),handler:()=>{}}}const i=yargs_1.default.usage("Usage: miniprogram-ci <command> [options]").command("$0","",i=>{i.command({command:"preview",describe:"preview project and get a preview qrcode",builder:e=>e.options("appid",{describe:"project appid",string:!0,demandOption:!0}).options("project-path",{alias:"pp",describe:"project path",string:!0,demandOption:!0}).options("private-key-path",{alias:"pkp",describe:"private key path",string:!0,demandOption:!0}),handler:()=>{}}).command({command:"upload",describe:"upload project",builder:e=>e.options("appid",{describe:"project appid",string:!0,demandOption:!0}).options("project-path",{alias:"pp",describe:"project path",string:!0,demandOption:!0}).options("private-key-path",{alias:"pkp",describe:"private key path",string:!0,demandOption:!0}),handler:()=>{}}).command({command:"get-compiled-result",describe:"get local compiled result, which will be uploaded to the server",builder:e=>e.options("appid",{describe:"project appid",string:!0,demandOption:!0}).options("project-path",{alias:"pp",describe:"project path",string:!0,demandOption:!0}).options("private-key-path",{alias:"pkp",describe:"private key path",string:!0,demandOption:!0}).options("save-path",{alias:"sp",describe:"save path",string:!0,demandOption:!0}),handler:()=>{}}).command({command:"check-code-quality",describe:"check code quality and get a json report",builder:e=>e.options("appid",{describe:"project appid",string:!0,demandOption:!0}).options("project-path",{alias:"pp",describe:"project path",string:!0,demandOption:!0}).options("private-key-path",{alias:"pkp",describe:"private key path",string:!0,demandOption:!0}).options("save-path",{alias:"sp",describe:"save path",string:!0,demandOption:!1}),handler:()=>{}}).command({command:"pack-npm",describe:"pack npm modules for miniprogram",builder:e=>e.demandOption("appid").demandOption("project-path").demandOption("private-key-path"),handler:()=>{}}).command({command:"get-dev-source-map",describe:"get source map of last upload version",builder:e=>e.demandOption("appid").demandOption("project-path").demandOption("private-key-path").options("robot",{alias:"r",describe:"the robot user who is uploading the project",string:!0,default:"1",choices:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"],demandOption:!0}).options("source-map-save-path",{describe:"path to save source map zip",string:!0,demandOption:!0}),handler:()=>{}}).command({command:"pack-npm-manually",describe:"pack npm modules with specified node_modules position",builder:e=>e.options({"pack-npm-manually-package-json-path":{desc:"path of node_modules related package.json",string:!0,demandOption:!0},"pack-npm-manually-miniprogram-npm-dist-dir":{desc:"path of target miniprogram_npm position",string:!0,demandOption:!0},ignores:{alias:"i",desc:"ignore files, glob format",array:!0,demandOption:!1}}).group(["pack-npm-manually-package-json-path","pack-npm-manually-miniprogram-npm-dist-dir","ignores"],"Options:"),handler:e=>{(async()=>{const o=await ci.packNpmManually({packageJsonPath:String(e.packNpmManuallyPackageJsonPath),miniprogramNpmDistDir:String(e.packNpmManuallyMiniprogramNpmDistDir),ignores:[]});log.log("pack npm done, pack result:",o)})()}}).command({command:"cloud",describe:"cloudbase commands",builder:i=>i.usage("Usage: $0 cloud <command>").command({command:"functions",describe:"cloudfunctions commands",builder:o=>o.usage("Usage: $0 cloud functions <command>").command({command:"upload",describe:"upload a cloudfunction",builder:e=>e.options({env:{alias:"e",desc:"env id",string:!0,demandOption:!0},name:{alias:"n",desc:"cloudfunction name",string:!0,demandOption:!0},path:{alias:"p",desc:"path to the folder containing cloudfunction code",string:!0,demandOption:!0},"remote-npm-install":{alias:"rnpm",desc:"if true, node_modules will not be uploaded and NPM dependencies will be installed in the cloud. if false, node_modules will be uploaded.",boolean:!0}}).group(["env","name","path","remote-npm-install"],"Options:"),handler:o=>e=e=>ci.cloud.uploadFunction({project:e,env:o.env,name:o.name,path:o.path,remoteNpmInstall:o["remote-npm-install"]})}),handler:()=>{}}).command(o("storage")).command(o("staticstorage")).command({command:"container",describe:"container commands",builder:o=>o.usage("Usage: $0 cloud container <command>").command({command:"create",describe:"create a version by uploading package",builder:e=>e.options({env:{alias:"e",desc:"env id",string:!0,demandOption:!0},flow:{desc:"flow ratio of this version",number:!0,demandOption:!0},cpu:{desc:"cpu cores of this version",number:!0,demandOption:!0},mem:{desc:"memory gigabytes of this version",number:!0,demandOption:!0},min:{desc:"minimal copies",number:!0,demandOption:!0},max:{desc:"maximum copies",number:!0,demandOption:!0},threshold:{desc:"cpu threshold for auto scaling",number:!0,demandOption:!0},port:{desc:"container listening port for liveness",number:!0,demandOption:!0},service:{desc:"service name",string:!0,demandOption:!0},remark:{desc:"version remark",string:!0},envParams:{desc:"stringified environment parameters Record<string, string>",string:!0,default:"{}"},allowHttp:{desc:"allow direct http request to this version",boolean:!0,default:!1},containerRoot:{alias:"cr",desc:"path to the container folder",string:!0,demandOption:!0},dockerfilePath:{desc:"custom docker file path",string:!0},buildDir:{desc:"build directory",string:!0}}).group(["env","flow","cpu","mem","min","max","threshold","port","service","remark","envParams","allowHttp","containerRoot","dockerfilePath","buildDir"],"Options:"),handler:o=>e=e=>ci.cloud.uploadContainer({project:e,env:o.env,containerRoot:o.containerRoot,version:{flowRatio:o.flow,cpu:o.cpu,mem:o.mem,minNum:o.min,maxNum:o.max,policyType:"cpu",policyThreshold:o.threshold,containerPort:o.port,serverName:o.service,uploadType:"package",buildDir:o.buildDir,envParams:o.envParams,dockerfilePath:o.dockerfilePath,useHttpRoute:o.allowHttp,versionRemark:o.remark}})}),handler:()=>{}}),handler:()=>{}}).options("appid",{describe:"project appid",string:!0}).options("project-path",{alias:"pp",describe:"project path",string:!0}).options("private-key-path",{alias:"pkp",describe:"private key path",string:!0}).options("locales",{describe:"set locales",default:"en",string:!0,choices:["en","zh"]}).option("verbose",{alias:"v",description:"run with verbose logging",default:!0,boolean:!0}).options("proxy",{describe:"proxy url",default:"",string:!0}).options("project-type",{alias:"pt",describe:"project type",string:!0,default:"miniProgram",choices:["miniProgram","miniGame","miniProgramPlugin","miniGamePlugin"]}).options("project-ignores",{alias:"pi",describe:"project ignores",array:!0}).options("upload-description",{alias:"ud",describe:"the uploaded code version description",string:!0}).options("upload-version",{alias:"uv",describe:"the uploaded code version description",string:!0,demandOption:process.argv.includes("preview")||process.argv.includes("upload")&&!process.argv.includes("cloud")}).options("threads",{describe:"the number indicates how many threads will be created for compile the source files",number:!0,default:0,demandOption:process.argv.includes("preview")||process.argv.includes("upload")&&!process.argv.includes("cloud")}).options("use-cos",{describe:"enable uploading code-package through the async way, which is more stable than the direct way",boolean:!0,default:!1,demandOption:process.argv.includes("preview")||process.argv.includes("upload")&&!process.argv.includes("cloud")}).options("robot",{alias:"r",describe:"the robot user who is uploading the project",string:!0,default:"1",choices:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"]}).options("enable-es6",{describe:"enable transform from es6 to es5",boolean:!0}).options("use-project-config",{describe:"enable transform from es6 to es5",default:!1,boolean:!0}).options("enable-es7",{describe:"enable transform from es7 to es5",boolean:!0}).options("enable-autoprefixwxss",{describe:"enable autoprefixwxss",boolean:!0}).options("enable-minify-wxss",{describe:"enable minify wxss",boolean:!0}).options("enable-minify-wxml",{describe:"enable minify wxml",boolean:!0}).options("enable-minify-js",{describe:"enable minify js",boolean:!0}).options("enable-minify",{describe:"enable minify js/wxml/wxss",boolean:!0}).options("enable-code-protect",{describe:"enable code protect",boolean:!0}).options("enable-qrcode",{describe:"enable generate weapp qrcode",default:!1,boolean:!0}).options("qrcode-format",{describe:"format of output qrcode",default:"terminal",string:!0,choices:["base64","image","terminal"]}).options("qrcode-output-dest",{describe:"destination of output qrcode",string:!0}).options("preview-page-path",{describe:"preview with page path",string:!0}).options("preview-search-query",{describe:'preview with query, Tips: "&" should be "\\&" in command line',string:!0}).options("scene",{describe:"preview with scene, about scene: https://developers.weixin.qq.com/miniprogram/dev/reference/scene-list.html",string:!0})},e=>e).help().argv;if(i.help&&(yargs_1.default.showHelp(),process.exit(0)),i.proxy&&ci.proxy(i.proxy),ci.setLocale(i.locales),i._&&!i._.includes("pack-npm-manually")){const o=new ci.Project({appid:i.appid,projectPath:i.projectPath,privateKeyPath:i.privateKeyPath,type:i.projectType,ignores:i.projectIgnores});if(formatCompileSetting(i),e)await e(o);else if(i._.includes("upload"))await ci.upload({project:o,setting:{es6:i.enableEs6,es7:i.enableEs7,minify:i.enableMinify,autoPrefixWXSS:i.enableHijack,minifyWXML:i.enableMinify||i.enableMinifyWxml,minifyWXSS:i.enableMinify||i.enableMinifyWxss,minifyJS:i.enableMinify||i.enableMinifyJs,codeProtect:i.enableCodeProtect,useProjectConfig:i.useProjectConfig},threads:i.threads,version:i.uploadVersion,desc:i.uploadDescription,robot:i.robot,onProgressUpdate:e=>{i.verbose&&log.log(e)}});else if(i._.includes("preview")){let e=i.scene;e&&(e=parseInt(e,10)),await ci.preview({project:o,setting:{es6:i.enableEs6,es7:i.enableEs7,minify:i.enableMinify,autoPrefixWXSS:i.enableHijack,minifyWXML:i.enableMinify||i.enableMinifyWxml,minifyWXSS:i.enableMinify||i.enableMinifyWxss,minifyJS:i.enableMinify||i.enableMinifyJs,codeProtect:i.enableCodeProtect,useProjectConfig:i.useProjectConfig},threads:i.threads,version:i.uploadVersion,desc:i.uploadDescription,robot:i.robot,pagePath:i.previewPagePath,searchQuery:i.previewSearchQuery,scene:e,onProgressUpdate:e=>{i.verbose&&log.log(e)},qrcodeFormat:i.qrcodeFormat,qrcodeOutputDest:i.qrcodeOutputDest})}else if(i._.includes("get-compiled-result")){let e=i.scene;e&&(e=parseInt(e,10)),await ci.getCompiledResult({project:o,setting:{es6:i.enableEs6,es7:i.enableEs7,minify:i.enableMinify,autoPrefixWXSS:i.enableHijack,minifyWXML:i.enableMinify||i.enableMinify,minifyWXSS:i.enableMinify||i.enableMinifyWxss,minifyJS:i.enableMinify||i.enableMinifyJs,codeProtect:i.enableCodeProtect},threads:i.threads,version:i.uploadVersion,desc:i.uploadDescription,robot:i.robot,pagePath:i.previewPagePath,searchQuery:i.previewSearchQuery,scene:e,onProgressUpdate:e=>{i.verbose&&log.log(e)},qrcodeFormat:i.qrcodeFormat,qrcodeOutputDest:i.qrcodeOutputDest},i.savePath)}else if(i._.includes("pack-npm")){const e=await ci.packNpm(o,{ignores:i.packNpmIgnores,reporter:e=>{i.verbose&&console.log(e)}})||[];e.length&&(log.log("Pack npm warning:"),log.log(e.map((e,o)=>`${o+1}. ${e.msg}\n \t> code: ${e.code}\n \t@ ${e.jsPath}:${e.startLine}-${e.endLine}`).join("---------------\n")))}else if(i._.includes("get-dev-source-map"))await ci.getDevSourceMap({project:o,robot:parseInt(i.robot,10),sourceMapSavePath:i.sourceMapSavePath}),log.info(`save sourcemap.zip to ${i.sourceMapSavePath} successfully`);else if(i._.includes("check-code-quality")){const e=await ci.checkCodeQuality(o);i.savePath?(fs_extra_1.default.ensureDirSync(path_1.default.dirname(i.savePath)),fs_extra_1.default.writeFileSync(i.savePath,JSON.stringify(e)),log.info(`save json format report to ${i.savePath} successfully`)):console.log(e)}}}function formatCompileSetting(e){if(!0!==e.useProjectConfig)for(const o in e)void 0===e[o]&&(e[o]=!1)}run().then(()=>{log.log("done"),process.exit(0)},e=>{console.error(e),process.exit(1)});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const tslib_1=require("tslib"),ci=tslib_1.__importStar(require("../ci/index")),yargs_1=tslib_1.__importDefault(require("yargs")),log=tslib_1.__importStar(require("../utils/log")),fs_extra_1=tslib_1.__importDefault(require("fs-extra")),path_1=tslib_1.__importDefault(require("path")),locales_1=tslib_1.__importDefault(require("../utils/locales/locales"));async function run(){let e;function o(o){return{command:o,describe:o+" commands",builder:i=>i.usage(`Usage: $0 cloud ${o} <command>`).command({command:"upload",describe:"upload files",builder:e=>e.options({env:{alias:"e",desc:"env id",string:!0,demandOption:!0},path:{alias:"p",desc:"path to the local folder",string:!0,demandOption:!0},remotePath:{alias:"rp",desc:"path to the remote folder",string:!0,demandOption:!0},concurrency:{alias:"c",desc:"concurrenct upload file count",number:!0,default:5,demandOption:!0}}).group(["env","path","remotePath"],"Options:"),handler:i=>e=e=>ci.cloud["storage"===o?"uploadStorage":"uploadStaticStorage"]({project:e,env:i.env,path:i.path,remotePath:i.remotePath})}),handler:()=>{}}}const i=yargs_1.default.usage("Usage: miniprogram-ci <command> [options]").command("$0","",i=>{i.command({command:"preview",describe:"preview project and get a preview qrcode",builder:e=>e.options("appid",{describe:"project appid",string:!0,demandOption:!0}).options("project-path",{alias:"pp",describe:"project path",string:!0,demandOption:!0}).options("private-key-path",{alias:"pkp",describe:"private key path",string:!0,demandOption:!0}),handler:()=>{}}).command({command:"upload",describe:"upload project",builder:e=>e.options("appid",{describe:"project appid",string:!0,demandOption:!0}).options("project-path",{alias:"pp",describe:"project path",string:!0,demandOption:!0}).options("private-key-path",{alias:"pkp",describe:"private key path",string:!0,demandOption:!0}),handler:()=>{}}).command({command:"get-compiled-result",describe:"get local compiled result, which will be uploaded to the server",builder:e=>e.options("appid",{describe:"project appid",string:!0,demandOption:!0}).options("project-path",{alias:"pp",describe:"project path",string:!0,demandOption:!0}).options("private-key-path",{alias:"pkp",describe:"private key path",string:!0,demandOption:!0}).options("save-path",{alias:"sp",describe:"save path",string:!0,demandOption:!0}),handler:()=>{}}).command({command:"check-code-quality",describe:"check code quality and get a json report",builder:e=>e.options("appid",{describe:"project appid",string:!0,demandOption:!0}).options("project-path",{alias:"pp",describe:"project path",string:!0,demandOption:!0}).options("private-key-path",{alias:"pkp",describe:"private key path",string:!0,demandOption:!0}).options("save-path",{alias:"sp",describe:"save path",string:!0,demandOption:!1}),handler:()=>{}}).command({command:"pack-npm",describe:"pack npm modules for miniprogram",builder:e=>e.demandOption("appid").demandOption("project-path").demandOption("private-key-path"),handler:()=>{}}).command({command:"get-dev-source-map",describe:"get source map of last upload version",builder:e=>e.demandOption("appid").demandOption("project-path").demandOption("private-key-path").options("robot",{alias:"r",describe:"the robot user who is uploading the project",string:!0,default:"1",choices:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"],demandOption:!0}).options("source-map-save-path",{describe:"path to save source map zip",string:!0,demandOption:!0}),handler:()=>{}}).command({command:"pack-npm-manually",describe:"pack npm modules with specified node_modules position",builder:e=>e.options({"pack-npm-manually-package-json-path":{desc:"path of node_modules related package.json",string:!0,demandOption:!0},"pack-npm-manually-miniprogram-npm-dist-dir":{desc:"path of target miniprogram_npm position",string:!0,demandOption:!0},ignores:{alias:"i",desc:"ignore files, glob format",array:!0,demandOption:!1}}).group(["pack-npm-manually-package-json-path","pack-npm-manually-miniprogram-npm-dist-dir","ignores"],"Options:"),handler:e=>{(async()=>{const o=await ci.packNpmManually({packageJsonPath:String(e.packNpmManuallyPackageJsonPath),miniprogramNpmDistDir:String(e.packNpmManuallyMiniprogramNpmDistDir),ignores:[]});log.log("pack npm done, pack result:",o)})()}}).command({command:"cloud",describe:"cloudbase commands",builder:i=>i.usage("Usage: $0 cloud <command>").command({command:"functions",describe:"cloudfunctions commands",builder:o=>o.usage("Usage: $0 cloud functions <command>").command({command:"upload",describe:"upload a cloudfunction",builder:e=>e.options({env:{alias:"e",desc:"env id",string:!0,demandOption:!0},name:{alias:"n",desc:"cloudfunction name",string:!0,demandOption:!0},path:{alias:"p",desc:"path to the folder containing cloudfunction code",string:!0,demandOption:!0},"remote-npm-install":{alias:"rnpm",desc:"if true, node_modules will not be uploaded and NPM dependencies will be installed in the cloud. if false, node_modules will be uploaded.",boolean:!0}}).group(["env","name","path","remote-npm-install"],"Options:"),handler:o=>e=e=>ci.cloud.uploadFunction({project:e,env:o.env,name:o.name,path:o.path,remoteNpmInstall:o["remote-npm-install"]})}),handler:()=>{}}).command(o("storage")).command(o("staticstorage")).command({command:"container",describe:"container commands",builder:o=>o.usage("Usage: $0 cloud container <command>").command({command:"create",describe:"create a version by uploading package",builder:e=>e.options({env:{alias:"e",desc:"env id",string:!0,demandOption:!0},flow:{desc:"flow ratio of this version",number:!0,demandOption:!0},cpu:{desc:"cpu cores of this version",number:!0,demandOption:!0},mem:{desc:"memory gigabytes of this version",number:!0,demandOption:!0},min:{desc:"minimal copies",number:!0,demandOption:!0},max:{desc:"maximum copies",number:!0,demandOption:!0},threshold:{desc:"cpu threshold for auto scaling",number:!0,demandOption:!0},port:{desc:"container listening port for liveness",number:!0,demandOption:!0},service:{desc:"service name",string:!0,demandOption:!0},remark:{desc:"version remark",string:!0},envParams:{desc:"stringified environment parameters Record<string, string>",string:!0,default:"{}"},allowHttp:{desc:"allow direct http request to this version",boolean:!0,default:!1},containerRoot:{alias:"cr",desc:"path to the container folder",string:!0,demandOption:!0},dockerfilePath:{desc:"custom docker file path",string:!0},buildDir:{desc:"build directory",string:!0}}).group(["env","flow","cpu","mem","min","max","threshold","port","service","remark","envParams","allowHttp","containerRoot","dockerfilePath","buildDir"],"Options:"),handler:o=>e=e=>ci.cloud.uploadContainer({project:e,env:o.env,containerRoot:o.containerRoot,version:{flowRatio:o.flow,cpu:o.cpu,mem:o.mem,minNum:o.min,maxNum:o.max,policyType:"cpu",policyThreshold:o.threshold,containerPort:o.port,serverName:o.service,uploadType:"package",buildDir:o.buildDir,envParams:o.envParams,dockerfilePath:o.dockerfilePath,useHttpRoute:o.allowHttp,versionRemark:o.remark}})}),handler:()=>{}}),handler:()=>{}}).options("appid",{describe:"project appid",string:!0}).options("project-path",{alias:"pp",describe:"project path",string:!0}).options("private-key-path",{alias:"pkp",describe:"private key path",string:!0}).options("locales",{describe:"set locales",default:"en",string:!0,choices:["en","zh"]}).option("verbose",{alias:"v",description:"run with verbose logging",default:!0,boolean:!0}).options("proxy",{describe:"proxy url",default:"",string:!0}).options("project-type",{alias:"pt",describe:"project type",string:!0,default:"miniProgram",choices:["miniProgram","miniGame","miniProgramPlugin","miniGamePlugin"]}).options("project-ignores",{alias:"pi",describe:"project ignores",array:!0}).options("upload-description",{alias:"ud",describe:"the uploaded code version description",string:!0}).options("upload-version",{alias:"uv",describe:"the uploaded code version description",string:!0,demandOption:process.argv.includes("preview")||process.argv.includes("upload")&&!process.argv.includes("cloud")}).options("threads",{describe:"the number indicates how many threads will be created for compile the source files",number:!0,default:0,demandOption:process.argv.includes("preview")||process.argv.includes("upload")&&!process.argv.includes("cloud")}).options("use-cos",{describe:"enable uploading code-package through the async way, which is more stable than the direct way",boolean:!0,default:!1,demandOption:process.argv.includes("preview")||process.argv.includes("upload")&&!process.argv.includes("cloud")}).options("robot",{alias:"r",describe:"the robot user who is uploading the project",string:!0,default:"1",choices:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"]}).options("enable-es6",{describe:"enable transform from es6 to es5",boolean:!0}).options("use-project-config",{describe:"enable transform from es6 to es5",default:!1,boolean:!0}).options("enable-es7",{describe:"enable transform from es7 to es5",boolean:!0}).options("enable-autoprefixwxss",{describe:"enable autoprefixwxss",boolean:!0}).options("enable-minify-wxss",{describe:"enable minify wxss",boolean:!0}).options("enable-minify-wxml",{describe:"enable minify wxml",boolean:!0}).options("enable-minify-js",{describe:"enable minify js",boolean:!0}).options("enable-minify",{describe:"enable minify js/wxml/wxss",boolean:!0}).options("enable-code-protect",{describe:"enable code protect",boolean:!0}).options("enable-qrcode",{describe:"enable generate weapp qrcode",default:!1,boolean:!0}).options("qrcode-format",{describe:"format of output qrcode",default:"terminal",string:!0,choices:["base64","image","terminal"]}).options("qrcode-output-dest",{describe:"destination of output qrcode",string:!0}).options("preview-page-path",{describe:"preview with page path",string:!0}).options("preview-search-query",{describe:'preview with query, Tips: "&" should be "\\&" in command line',string:!0}).options("scene",{describe:"preview with scene, about scene: https://developers.weixin.qq.com/miniprogram/dev/reference/scene-list.html",string:!0})},e=>e).help().argv;if(i.help&&(yargs_1.default.showHelp(),process.exit(0)),i.proxy&&ci.proxy(i.proxy),locales_1.default.setLocale(i.locales),i._&&!i._.includes("pack-npm-manually")){const o=new ci.Project({appid:i.appid,projectPath:i.projectPath,privateKeyPath:i.privateKeyPath,type:i.projectType,ignores:i.projectIgnores});if(formatCompileSetting(i),e)await e(o);else if(i._.includes("upload"))await ci.upload({project:o,setting:{es6:i.enableEs6,es7:i.enableEs7,minify:i.enableMinify,autoPrefixWXSS:i.enableHijack,minifyWXML:i.enableMinify||i.enableMinifyWxml,minifyWXSS:i.enableMinify||i.enableMinifyWxss,minifyJS:i.enableMinify||i.enableMinifyJs,codeProtect:i.enableCodeProtect,useProjectConfig:i.useProjectConfig},threads:i.threads,version:i.uploadVersion,desc:i.uploadDescription,robot:i.robot,onProgressUpdate:e=>{i.verbose&&log.log(e)}});else if(i._.includes("preview")){let e=i.scene;e&&(e=parseInt(e,10)),await ci.preview({project:o,setting:{es6:i.enableEs6,es7:i.enableEs7,minify:i.enableMinify,autoPrefixWXSS:i.enableHijack,minifyWXML:i.enableMinify||i.enableMinifyWxml,minifyWXSS:i.enableMinify||i.enableMinifyWxss,minifyJS:i.enableMinify||i.enableMinifyJs,codeProtect:i.enableCodeProtect,useProjectConfig:i.useProjectConfig},threads:i.threads,version:i.uploadVersion,desc:i.uploadDescription,robot:i.robot,pagePath:i.previewPagePath,searchQuery:i.previewSearchQuery,scene:e,onProgressUpdate:e=>{i.verbose&&log.log(e)},qrcodeFormat:i.qrcodeFormat,qrcodeOutputDest:i.qrcodeOutputDest})}else if(i._.includes("get-compiled-result")){let e=i.scene;e&&(e=parseInt(e,10)),await ci.getCompiledResult({project:o,setting:{es6:i.enableEs6,es7:i.enableEs7,minify:i.enableMinify,autoPrefixWXSS:i.enableHijack,minifyWXML:i.enableMinify||i.enableMinify,minifyWXSS:i.enableMinify||i.enableMinifyWxss,minifyJS:i.enableMinify||i.enableMinifyJs,codeProtect:i.enableCodeProtect},threads:i.threads,version:i.uploadVersion,desc:i.uploadDescription,robot:i.robot,pagePath:i.previewPagePath,searchQuery:i.previewSearchQuery,scene:e,onProgressUpdate:e=>{i.verbose&&log.log(e)},qrcodeFormat:i.qrcodeFormat,qrcodeOutputDest:i.qrcodeOutputDest},i.savePath)}else if(i._.includes("pack-npm")){const e=await ci.packNpm(o,{ignores:i.packNpmIgnores,reporter:e=>{i.verbose&&console.log(e)}})||[];e.length&&(log.log("Pack npm warning:"),log.log(e.map((e,o)=>`${o+1}. ${e.msg}\n \t> code: ${e.code}\n \t@ ${e.jsPath}:${e.startLine}-${e.endLine}`).join("---------------\n")))}else if(i._.includes("get-dev-source-map"))await ci.getDevSourceMap({project:o,robot:parseInt(i.robot,10),sourceMapSavePath:i.sourceMapSavePath}),log.info(`save sourcemap.zip to ${i.sourceMapSavePath} successfully`);else if(i._.includes("check-code-quality")){const e=await ci.checkCodeQuality(o);i.savePath?(fs_extra_1.default.ensureDirSync(path_1.default.dirname(i.savePath)),fs_extra_1.default.writeFileSync(i.savePath,JSON.stringify(e)),log.info(`save json format report to ${i.savePath} successfully`)):console.log(e)}}}function formatCompileSetting(e){if(!0!==e.useProjectConfig)for(const o in e)void 0===e[o]&&(e[o]=!1)}run().then(()=>{log.log("done"),process.exit(0)},e=>{console.error(e),process.exit(1)});
|