From c3fd275e38b61b0ba1830cf32685957ebb9dc891 Mon Sep 17 00:00:00 2001 From: "liujw155@outlook.com" Date: Wed, 28 May 2025 09:48:29 +0800 Subject: [PATCH] first init --- .gitignore | 23 ++++++++++++++ config/appid.dev.js | 5 +++ config/appid.prod.js | 5 +++ index.html | 20 ++++++++++++ package.json | 69 +++++++++++++++++++++++++++++++++++++++++ shims-uni.d.ts | 10 ++++++ src/App.vue | 17 +++++++++++ src/main.js | 10 ++++++ src/manifest.json | 76 ++++++++++++++++++++++++++++++++++++++++++++++ src/pages.json | 16 ++++++++++ src/pages/index/index.vue | 48 +++++++++++++++++++++++++++++ src/shime-uni.d.ts | 6 ++++ src/static/logo.png | Bin 0 -> 4023 bytes src/uni.scss | 76 ++++++++++++++++++++++++++++++++++++++++++++++ tools/json-editor.js | 53 ++++++++++++++++++++++++++++++++ vite.config.js | 19 ++++++++++++ 16 files changed, 453 insertions(+) create mode 100644 .gitignore create mode 100644 config/appid.dev.js create mode 100644 config/appid.prod.js create mode 100644 index.html create mode 100644 package.json create mode 100644 shims-uni.d.ts create mode 100644 src/App.vue create mode 100644 src/main.js create mode 100644 src/manifest.json create mode 100644 src/pages.json create mode 100644 src/pages/index/index.vue create mode 100644 src/shime-uni.d.ts create mode 100644 src/static/logo.png create mode 100644 src/uni.scss create mode 100644 tools/json-editor.js create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a2f452d --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +*.local + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +pnpm-lock.yaml \ No newline at end of file diff --git a/config/appid.dev.js b/config/appid.dev.js new file mode 100644 index 0000000..e2cad50 --- /dev/null +++ b/config/appid.dev.js @@ -0,0 +1,5 @@ +module.exports = { + 'mp-toutiao': { + appid: 'ttc690b02d599a28ee01-d', + }, +}; \ No newline at end of file diff --git a/config/appid.prod.js b/config/appid.prod.js new file mode 100644 index 0000000..3ad14f0 --- /dev/null +++ b/config/appid.prod.js @@ -0,0 +1,5 @@ +module.exports = { + 'mp-toutiao': { + appid: 'ttc690b02d599a28ee01-p', + }, +}; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..fb81ddc --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..fe93feb --- /dev/null +++ b/package.json @@ -0,0 +1,69 @@ +{ + "name": "uni-preset-vue", + "version": "0.0.0", + "scripts": { + "dev:custom": "uni -p", + "dev:h5": "uni", + "dev:h5:ssr": "uni --ssr", + "dev:mp-alipay": "uni -p mp-alipay", + "dev:mp-baidu": "uni -p mp-baidu", + "dev:mp-jd": "uni -p mp-jd", + "dev:mp-kuaishou": "uni -p mp-kuaishou", + "dev:mp-lark": "uni -p mp-lark", + "dev:mp-qq": "uni -p mp-qq", + "dev:mp-toutiao": "uni -p mp-toutiao --mode dev", + "dev:mp-toutiao-prod": "uni -p mp-toutiao --mode prod", + "dev:mp-harmony": "uni -p mp-harmony", + "dev:mp-weixin": "uni -p mp-weixin", + "dev:mp-xhs": "uni -p mp-xhs", + "dev:quickapp-webview": "uni -p quickapp-webview", + "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", + "dev:quickapp-webview-union": "uni -p quickapp-webview-union", + "build:custom": "uni build -p", + "build:h5": "uni build", + "build:h5:ssr": "uni build --ssr", + "build:mp-alipay": "uni build -p mp-alipay", + "build:mp-baidu": "uni build -p mp-baidu", + "build:mp-jd": "uni build -p mp-jd", + "build:mp-kuaishou": "uni build -p mp-kuaishou", + "build:mp-lark": "uni build -p mp-lark", + "build:mp-qq": "uni build -p mp-qq", + "build:mp-toutiao": "uni build -p mp-toutiao", + "build:mp-harmony": "uni build -p mp-harmony", + "build:mp-weixin": "uni build -p mp-weixin", + "build:mp-xhs": "uni build -p mp-xhs", + "build:quickapp-webview": "uni build -p quickapp-webview", + "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", + "build:quickapp-webview-union": "uni build -p quickapp-webview-union" + }, + "dependencies": { + "@dcloudio/uni-app": "3.0.0-4060420250429001", + "@dcloudio/uni-app-harmony": "3.0.0-4060420250429001", + "@dcloudio/uni-app-plus": "3.0.0-4060420250429001", + "@dcloudio/uni-components": "3.0.0-4060420250429001", + "@dcloudio/uni-h5": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-alipay": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-baidu": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-harmony": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-jd": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-kuaishou": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-lark": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-qq": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-toutiao": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-weixin": "3.0.0-4060420250429001", + "@dcloudio/uni-mp-xhs": "3.0.0-4060420250429001", + "@dcloudio/uni-quickapp-webview": "3.0.0-4060420250429001", + "jsonc-parser": "^3.3.1", + "vue": "^3.4.21", + "vue-i18n": "^9.1.9" + }, + "devDependencies": { + "@dcloudio/types": "^3.4.8", + "@dcloudio/uni-automator": "3.0.0-4060420250429001", + "@dcloudio/uni-cli-shared": "3.0.0-4060420250429001", + "@dcloudio/uni-stacktracey": "3.0.0-4060420250429001", + "@dcloudio/vite-plugin-uni": "3.0.0-4060420250429001", + "@vue/runtime-core": "^3.4.21", + "vite": "5.2.8" + } +} diff --git a/shims-uni.d.ts b/shims-uni.d.ts new file mode 100644 index 0000000..ed4adcf --- /dev/null +++ b/shims-uni.d.ts @@ -0,0 +1,10 @@ +/// +import 'vue' + +declare module '@vue/runtime-core' { + type Hooks = App.AppInstance & Page.PageInstance; + + interface ComponentCustomOptions extends Hooks { + + } +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..52dd89d --- /dev/null +++ b/src/App.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..0f3a925 --- /dev/null +++ b/src/main.js @@ -0,0 +1,10 @@ +import { + createSSRApp +} from "vue"; +import App from "./App.vue"; +export function createApp() { + const app = createSSRApp(App); + return { + app, + }; +} diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..f91cb95 --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,76 @@ +{ + "name" : "", + "appid" : "", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "appid" : "ttc690b02d599a28ee01-d", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "uniStatistics": { + "enable": false + }, + "vueVersion" : "3" +} diff --git a/src/pages.json b/src/pages.json new file mode 100644 index 0000000..1aea851 --- /dev/null +++ b/src/pages.json @@ -0,0 +1,16 @@ +{ + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "uni-app" + } + } + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + } +} diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue new file mode 100644 index 0000000..6ea68cd --- /dev/null +++ b/src/pages/index/index.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/shime-uni.d.ts b/src/shime-uni.d.ts new file mode 100644 index 0000000..b3d3cc9 --- /dev/null +++ b/src/shime-uni.d.ts @@ -0,0 +1,6 @@ +export {}; + +declare module "vue" { + type Hooks = App.AppInstance & Page.PageInstance; + interface ComponentCustomOptions extends Hooks {} +} \ No newline at end of file diff --git a/src/static/logo.png b/src/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b5771e209bb677e2ebd5ff766ad5ee11790f305a GIT binary patch literal 4023 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 SYs}WS&%*SCNx89m_ 修改 ${fieldPath.join('.')} = ${JSON.stringify(newValue)}`); + } catch (err) { + console.error(`[json-editor] ❌ 修改失败: ${err.message}`); + } +} + +/** + * 应用 jsonc-parser 的编辑操作 + * @param {string} text + * @param {import('jsonc-parser').Edit[]} edits + * @returns {string} + */ +function applyEdits(text, edits) { + edits.sort((a, b) => b.offset - a.offset); + for (const edit of edits) { + text = text.slice(0, edit.offset) + edit.content + text.slice(edit.offset + edit.length); + } + return text; +} + +module.exports = { + updateJsonFileField, +}; diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..4924938 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import uni from '@dcloudio/vite-plugin-uni'; +import path from 'path'; +import { updateJsonFileField } from './tools/json-editor.js'; +// https://vitejs.dev/config/ +export default defineConfig(({ mode }) =>{ + console.log('当前模式:', mode); + const configAppidPath = path.resolve(__dirname, `config/appid.${mode}.js`); + const appidConfig = require(configAppidPath); + const manifestPath = path.resolve(__dirname, 'src/manifest.json'); + for (const [platform, config] of Object.entries(appidConfig)) { + updateJsonFileField(manifestPath, [platform, 'appid'], config.appid); + } + return { + plugins: [ + uni(), + ], + } +}) \ No newline at end of file