From 261f6e484b5408f1392925b53f2608f51b665671 Mon Sep 17 00:00:00 2001 From: 72161674 Date: Wed, 30 Aug 2023 14:12:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9C=A8=E7=BA=BF=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/demo/scripts/gen/template.ux | 2 +- .../templates/app/demo/src/CardDemo/index.ux | 30 ------- .../templates/app/demo/src/Demo/index.ux | 55 ------------ .../app/demo/src/DemoDetail/index.ux | 34 ------- .../app/demo/src/assets/styles/variables.scss | 6 +- .../templates/app/demo/src/manifest.json | 16 ++-- .../app/demo/src/pages/Demo/index.ux | 12 +-- .../app/demo/src/pages/DemoDetail/index.ux | 17 ++-- .../CardDemo/assets/logo_card.png} | Bin .../src/widgets/CardDemo/assets/styles.scss | 17 ++++ .../app/demo/src/widgets/CardDemo/index.ux | 83 ++++++++++++++++++ .../src/plugins/sign-online-plugin.js | 83 ++++++++++++++++++ .../hap-packager/src/subpackages/service.js | 2 +- packages/hap-packager/src/webpack.post.js | 17 ++++ .../src/compilation-config.js | 1 + packages/hap-shared-utils/src/config.js | 5 +- packages/hap-toolkit/.gitignore | 1 + packages/hap-toolkit/src/commands/compile.js | 18 +++- .../__snapshots__/hap.test.js.snap | 14 ++- 19 files changed, 260 insertions(+), 153 deletions(-) delete mode 100644 packages/hap-dsl-xvm/templates/app/demo/src/CardDemo/index.ux delete mode 100644 packages/hap-dsl-xvm/templates/app/demo/src/Demo/index.ux delete mode 100644 packages/hap-dsl-xvm/templates/app/demo/src/DemoDetail/index.ux rename packages/hap-dsl-xvm/templates/app/demo/src/{Common/logo.png => widgets/CardDemo/assets/logo_card.png} (100%) create mode 100644 packages/hap-dsl-xvm/templates/app/demo/src/widgets/CardDemo/assets/styles.scss create mode 100644 packages/hap-dsl-xvm/templates/app/demo/src/widgets/CardDemo/index.ux create mode 100644 packages/hap-packager/src/plugins/sign-online-plugin.js diff --git a/packages/hap-dsl-xvm/templates/app/demo/scripts/gen/template.ux b/packages/hap-dsl-xvm/templates/app/demo/scripts/gen/template.ux index a03f05f4..f0a18263 100644 --- a/packages/hap-dsl-xvm/templates/app/demo/scripts/gen/template.ux +++ b/packages/hap-dsl-xvm/templates/app/demo/scripts/gen/template.ux @@ -24,7 +24,7 @@ export default { .wrapper { @include flex-box-mixins(column, center, center); .title { - font-size: 8 * $size-factor; + font-size: 18 * $size-factor; text-align: center; color: $black; } diff --git a/packages/hap-dsl-xvm/templates/app/demo/src/CardDemo/index.ux b/packages/hap-dsl-xvm/templates/app/demo/src/CardDemo/index.ux deleted file mode 100644 index c6864944..00000000 --- a/packages/hap-dsl-xvm/templates/app/demo/src/CardDemo/index.ux +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - diff --git a/packages/hap-dsl-xvm/templates/app/demo/src/Demo/index.ux b/packages/hap-dsl-xvm/templates/app/demo/src/Demo/index.ux deleted file mode 100644 index 981bf51c..00000000 --- a/packages/hap-dsl-xvm/templates/app/demo/src/Demo/index.ux +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - diff --git a/packages/hap-dsl-xvm/templates/app/demo/src/DemoDetail/index.ux b/packages/hap-dsl-xvm/templates/app/demo/src/DemoDetail/index.ux deleted file mode 100644 index f90626cf..00000000 --- a/packages/hap-dsl-xvm/templates/app/demo/src/DemoDetail/index.ux +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - diff --git a/packages/hap-dsl-xvm/templates/app/demo/src/assets/styles/variables.scss b/packages/hap-dsl-xvm/templates/app/demo/src/assets/styles/variables.scss index 04a60539..50f54bdf 100644 --- a/packages/hap-dsl-xvm/templates/app/demo/src/assets/styles/variables.scss +++ b/packages/hap-dsl-xvm/templates/app/demo/src/assets/styles/variables.scss @@ -4,6 +4,8 @@ $white: #ffffff; $black: #000000; $grey: #9393aa; $red: #fa0101; -$green: #ffff00; +$yellow: #ffff00; -$size-factor: 5px; +// $size-factor 为 3px,对应的 designWidth 为 1080,长度使用:360的设计稿尺寸数字 * $size-factor +// 如果 designWidth 设置为 360,可修改 $size-factor 为 1px +$size-factor: 3px; diff --git a/packages/hap-dsl-xvm/templates/app/demo/src/manifest.json b/packages/hap-dsl-xvm/templates/app/demo/src/manifest.json index bf7878b3..8127a400 100644 --- a/packages/hap-dsl-xvm/templates/app/demo/src/manifest.json +++ b/packages/hap-dsl-xvm/templates/app/demo/src/manifest.json @@ -23,7 +23,8 @@ }], "template/official": "demo-template", "config": { - "logLevel": "debug" + "logLevel": "debug", + "designWidth": 1080 }, "router": { "entry": "pages/Demo", @@ -36,14 +37,17 @@ } }, "widgets": { - "CardDemo": { - "name": "CardDemo", + "widgets/CardDemo": { + "name": "卡片名称4x2", "description": "快应用卡片展示", "component": "index", - "path": "/CardDemo", + "path": "/widgets/CardDemo", "minPlatformVersion": 1032, - "targetManufactorys": [ - "vivo" + "params": { + "size": "4x2" + }, + "targetManufacturers": [ + "vivo", "OPPO", "xiaomi" ], "features": [] } diff --git a/packages/hap-dsl-xvm/templates/app/demo/src/pages/Demo/index.ux b/packages/hap-dsl-xvm/templates/app/demo/src/pages/Demo/index.ux index d86afc8e..a4f50d1a 100644 --- a/packages/hap-dsl-xvm/templates/app/demo/src/pages/Demo/index.ux +++ b/packages/hap-dsl-xvm/templates/app/demo/src/pages/Demo/index.ux @@ -54,19 +54,19 @@ export default { .wrapper { @include flex-box-mixins(column, center, center); .title { - font-size: 8 * $size-factor; + font-size: 18 * $size-factor; text-align: center; color: $black; } .btn { - width: 90 * $size-factor; - height: 16 * $size-factor; - border-radius: 8 * $size-factor; + width: 150 * $size-factor; + height: 42 * $size-factor; + border-radius: 21 * $size-factor; background-color: $brand; color: $white; - font-size: 30px; - margin-top: 16 * $size-factor; + font-size: 16 * $size-factor; + margin-top: 20 * $size-factor; } } diff --git a/packages/hap-dsl-xvm/templates/app/demo/src/pages/DemoDetail/index.ux b/packages/hap-dsl-xvm/templates/app/demo/src/pages/DemoDetail/index.ux index 8db09d11..4f0a01f9 100644 --- a/packages/hap-dsl-xvm/templates/app/demo/src/pages/DemoDetail/index.ux +++ b/packages/hap-dsl-xvm/templates/app/demo/src/pages/DemoDetail/index.ux @@ -39,24 +39,25 @@ export default { .wrapper { @include flex-box-mixins(column, center, center); - margin: 0 10 * $size-factor; + margin: 0 16 * $size-factor; .title { - font-size: 8 * $size-factor; + font-size: 18 * $size-factor; text-align: center; color: $black; } .desc { - margin-top: 10 * $size-factor; + margin-top: 18 * $size-factor; color: $grey; + font-size: 16 * $size-factor; } .btn { - width: 90 * $size-factor; - height: 16 * $size-factor; - border-radius: 8 * $size-factor; + width: 150 * $size-factor; + height: 42 * $size-factor; + border-radius: 21 * $size-factor; background-color: $brand; color: $white; - font-size: 30px; - margin-top: 16 * $size-factor; + font-size: 16 * $size-factor; + margin-top: 20 * $size-factor; } } diff --git a/packages/hap-dsl-xvm/templates/app/demo/src/Common/logo.png b/packages/hap-dsl-xvm/templates/app/demo/src/widgets/CardDemo/assets/logo_card.png similarity index 100% rename from packages/hap-dsl-xvm/templates/app/demo/src/Common/logo.png rename to packages/hap-dsl-xvm/templates/app/demo/src/widgets/CardDemo/assets/logo_card.png diff --git a/packages/hap-dsl-xvm/templates/app/demo/src/widgets/CardDemo/assets/styles.scss b/packages/hap-dsl-xvm/templates/app/demo/src/widgets/CardDemo/assets/styles.scss new file mode 100644 index 00000000..0a69a616 --- /dev/null +++ b/packages/hap-dsl-xvm/templates/app/demo/src/widgets/CardDemo/assets/styles.scss @@ -0,0 +1,17 @@ +$brand: #09ba07; + +$white: #ffffff; +$black: #000000; +$grey: #9393aa; +$red: #fa0101; +$yellow: #ffff00; + +// $size-factor 为 3px,对应的 designWidth 为 1080,长度使用:360的设计稿尺寸数字 * $size-factor +// 如果 designWidth 设置为 360,可修改 $size-factor 为 1px +$size-factor: 3px; + +@mixin flex-box-mixins($direction: row, $justify: center, $align-items: center) { + flex-direction: $direction; + justify-content: $justify; + align-items: $align-items; +} \ No newline at end of file diff --git a/packages/hap-dsl-xvm/templates/app/demo/src/widgets/CardDemo/index.ux b/packages/hap-dsl-xvm/templates/app/demo/src/widgets/CardDemo/index.ux new file mode 100644 index 00000000..652f7aa7 --- /dev/null +++ b/packages/hap-dsl-xvm/templates/app/demo/src/widgets/CardDemo/index.ux @@ -0,0 +1,83 @@ + + + + + + + + + + diff --git a/packages/hap-packager/src/plugins/sign-online-plugin.js b/packages/hap-packager/src/plugins/sign-online-plugin.js new file mode 100644 index 00000000..cf9325b2 --- /dev/null +++ b/packages/hap-packager/src/plugins/sign-online-plugin.js @@ -0,0 +1,83 @@ +import http from 'http' +import fs from 'fs' +import path from 'path' +import { URL } from 'url' +import { colorconsole } from '@hap-toolkit/shared-utils' + +function SignOnlinePlugin(options) { + this.options = options +} + +SignOnlinePlugin.prototype.apply = function (compiler) { + const options = this.options + + compiler.hooks.done.tapAsync('SignOnlinePlugin', function (stats, cb) { + const requestPath = options.request + if (!requestPath || typeof requestPath !== 'string') { + colorconsole.error(`### App Server ### 请求线上接口无效,请检查`) + cb() + return + } + const ext = options.signOnlineRpks ? 'rpks' : 'rpk' + const pkgName = options.name + const versionName = options.versionName + const noSignFile = `${pkgName}.nosign.${versionName}.${ext}` + + const noSignFilePath = path.join(options.output, noSignFile) + + const distFileName = `${pkgName}.${options.sign}.${versionName}.${ext}` + const distFilePath = path.join(options.output, distFileName) + const distFileStream = fs.createWriteStream(distFilePath) + + let form = null + + const file = fs.createReadStream(noSignFilePath) + + if (options.formData && options.formData(file)) { + form = options.formData(file) + } + + form && Object.assign(options.headers(), form.getHeaders()) + + const url = new URL(requestPath) + const param = { + host: url.hostname, + port: url.port, + path: url.pathname, + method: 'POST', + timeout: 10000, + headers: options.headers + } + const req = http + .request(param, (res) => { + colorconsole.log(`### App Loader ### 请求接口的状态码:${res.statusCode}`) + res.pipe(distFileStream, { end: false }) + res.on('end', (data) => { + if (res.statusCode === 200) { + distFileStream.end() + colorconsole.log( + `### App Loader ### 请求线上签名成功,dist目录生成文件:${distFileName}` + ) + cb() + } + }) + }) + .on('error', (err) => { + colorconsole.error(`### App Server ### 请求线上签名错误,错误信息: ${err.message} $`) + cb(err) + }) + .on('timeout', function () { + colorconsole.warn( + `### App Server ### 请求线上签名网络超时,请检查网络与接口地址 ${ + form + ? '' + : '缺少FormData对象,请在配置文件quickapp.config.js里面定义的params函数返回FormData对象' + }` + ) + req.abort() + }) + form && form.pipe(req) + }) +} + +export default SignOnlinePlugin diff --git a/packages/hap-packager/src/subpackages/service.js b/packages/hap-packager/src/subpackages/service.js index fe8093b7..e066465c 100644 --- a/packages/hap-packager/src/subpackages/service.js +++ b/packages/hap-packager/src/subpackages/service.js @@ -77,7 +77,7 @@ function allocateResourceToPackages(files, base, fullPackage, subPackages, build files.forEach((fileBuildPath) => { const fileAbsPath = path.join(base, fileBuildPath) - const fileContentBuffer = fs.readFileSync(fileAbsPath.replace(/\\/g, '/')) + const fileContentBuffer = fs.readFileSync(fileAbsPath) const fileContentDigest = calcDataDigest(fileContentBuffer) // 资源基本信息 const resourceInfo = [fileBuildPath, fileContentBuffer, fileContentDigest] diff --git a/packages/hap-packager/src/webpack.post.js b/packages/hap-packager/src/webpack.post.js index 0226c478..3f9a6625 100644 --- a/packages/hap-packager/src/webpack.post.js +++ b/packages/hap-packager/src/webpack.post.js @@ -19,6 +19,7 @@ import { } from './plugins' import { genPriorities, getBabelConfigJsPath } from './common/utils' import { getSkeletonConfig } from './common/info' +import SignOnlinePlugin from './plugins/sign-online-plugin' /** * 配置关联 @@ -166,6 +167,22 @@ function postHook(webpackConf, defaultsOptions, quickappConfig = {}) { }) ) + if (compileOptionsObject['signOnline']) { + // 发送接口进行线上签名 + webpackConf.plugins.push( + new SignOnlinePlugin({ + signOnlineRpks: compileOptionsObject.signOnlineRpks, + sign: webpackConf.mode === 'development' ? 'debug' : 'release', + name: appPackageName, + versionName, + output: pathDist, + request: globalConfig.signOnLineConfig.signOnLine, + headers: globalConfig.signOnLineConfig.headers, + formData: globalConfig.signOnLineConfig.params + }) + ) + } + // 解决错误信息定位问题 if (compileOptionsObject.matchSourcemap) { webpackConf.plugins.push(new SourcemapFixPlugin()) diff --git a/packages/hap-shared-utils/src/compilation-config.js b/packages/hap-shared-utils/src/compilation-config.js index 8ccca06e..7035ab52 100644 --- a/packages/hap-shared-utils/src/compilation-config.js +++ b/packages/hap-shared-utils/src/compilation-config.js @@ -104,6 +104,7 @@ const compileOptionsObject = { */ function mergeCompileOptionsObject(argopts) { // TODO release memeory, use optimize-prop only + compileOptionsObject.devtool = argopts.devtool ? argopts.devtool : false Object.assign(compileOptionsObject, argopts) } diff --git a/packages/hap-shared-utils/src/config.js b/packages/hap-shared-utils/src/config.js index 9672d4e7..8805eff7 100644 --- a/packages/hap-shared-utils/src/config.js +++ b/packages/hap-shared-utils/src/config.js @@ -22,5 +22,8 @@ export default { // 代码风格规则 isSmartMode: false, // 记录 watch 模式下哪些 .ux 文件对应的 .js 文件改变了 - changedJS: {} + changedJS: {}, + signOnLineConfig: { + signOnLine: '' + } } diff --git a/packages/hap-toolkit/.gitignore b/packages/hap-toolkit/.gitignore index 66a15fba..8c0ad308 100644 --- a/packages/hap-toolkit/.gitignore +++ b/packages/hap-toolkit/.gitignore @@ -6,6 +6,7 @@ Thumbs.db *.iml .idea/ .vscode/ +.history/ node_modules/ !fixtures/deps-app/node_modules/ /lib diff --git a/packages/hap-toolkit/src/commands/compile.js b/packages/hap-toolkit/src/commands/compile.js index b4913093..fed1da56 100644 --- a/packages/hap-toolkit/src/commands/compile.js +++ b/packages/hap-toolkit/src/commands/compile.js @@ -5,7 +5,12 @@ import webpack from 'webpack' import adbCommander from 'adb-commander' -import { setCustomConfig, colorconsole } from '@hap-toolkit/shared-utils' +import { + setCustomConfig, + colorconsole, + globalConfig, + compileOptionsMeta +} from '@hap-toolkit/shared-utils' import genWebpackConf from '../gen-webpack-conf' import { summaryErrors, summaryWarnings } from './utils' @@ -70,6 +75,17 @@ export function compile(platform, mode, watch, options = {}) { const webpackMode = mode === 'prod' ? 'production' : 'development' + if (options.disableSignOnline) { + options['signOnline'] = false + } else if ( + globalConfig.signOnLineConfig.signOnLine.match( + /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/ + ) + ) { + options['signOnline'] = true + options['signMode'] = compileOptionsMeta.signModeEnum.NULL + } + try { const webpackConfig = await genWebpackConf(options, webpackMode) diff --git a/packages/integration-tests/__snapshots__/hap.test.js.snap b/packages/integration-tests/__snapshots__/hap.test.js.snap index 308a3482..c42d9b45 100644 --- a/packages/integration-tests/__snapshots__/hap.test.js.snap +++ b/packages/integration-tests/__snapshots__/hap.test.js.snap @@ -23,15 +23,7 @@ Array [ "src/assets/styles/mixins.scss", "src/assets/styles/style.scss", "src/assets/styles/variables.scss", - "src/CardDemo", - "src/CardDemo/index.ux", - "src/Common", - "src/Common/logo.png", "src/config-phone.json", - "src/Demo", - "src/Demo/index.ux", - "src/DemoDetail", - "src/DemoDetail/index.ux", "src/global.js", "src/helper", "src/helper/ajax.js", @@ -46,5 +38,11 @@ Array [ "src/pages/DemoDetail", "src/pages/DemoDetail/index.ux", "src/sitemap.json", + "src/widgets", + "src/widgets/CardDemo", + "src/widgets/CardDemo/assets", + "src/widgets/CardDemo/assets/logo_card.png", + "src/widgets/CardDemo/assets/styles.scss", + "src/widgets/CardDemo/index.ux", ] `;