commit
c3fd275e38
16 changed files with 453 additions and 0 deletions
-
23.gitignore
-
5config/appid.dev.js
-
5config/appid.prod.js
-
20index.html
-
69package.json
-
10shims-uni.d.ts
-
17src/App.vue
-
10src/main.js
-
76src/manifest.json
-
16src/pages.json
-
48src/pages/index/index.vue
-
6src/shime-uni.d.ts
-
BINsrc/static/logo.png
-
76src/uni.scss
-
53tools/json-editor.js
-
19vite.config.js
@ -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 |
@ -0,0 +1,5 @@ |
|||||
|
module.exports = { |
||||
|
'mp-toutiao': { |
||||
|
appid: 'ttc690b02d599a28ee01-d', |
||||
|
}, |
||||
|
}; |
@ -0,0 +1,5 @@ |
|||||
|
module.exports = { |
||||
|
'mp-toutiao': { |
||||
|
appid: 'ttc690b02d599a28ee01-p', |
||||
|
}, |
||||
|
}; |
@ -0,0 +1,20 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8" /> |
||||
|
<script> |
||||
|
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || |
||||
|
CSS.supports('top: constant(a)')) |
||||
|
document.write( |
||||
|
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + |
||||
|
(coverSupport ? ', viewport-fit=cover' : '') + '" />') |
||||
|
</script> |
||||
|
<title></title> |
||||
|
<!--preload-links--> |
||||
|
<!--app-context--> |
||||
|
</head> |
||||
|
<body> |
||||
|
<div id="app"><!--app-html--></div> |
||||
|
<script type="module" src="/src/main.js"></script> |
||||
|
</body> |
||||
|
</html> |
@ -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" |
||||
|
} |
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
/// <reference types='@dcloudio/types' />
|
||||
|
import 'vue' |
||||
|
|
||||
|
declare module '@vue/runtime-core' { |
||||
|
type Hooks = App.AppInstance & Page.PageInstance; |
||||
|
|
||||
|
interface ComponentCustomOptions extends Hooks { |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,17 @@ |
|||||
|
<script> |
||||
|
export default { |
||||
|
onLaunch: function () { |
||||
|
console.log('App Launch') |
||||
|
}, |
||||
|
onShow: function () { |
||||
|
console.log('App Show') |
||||
|
}, |
||||
|
onHide: function () { |
||||
|
console.log('App Hide') |
||||
|
}, |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
/*每个页面公共css */ |
||||
|
</style> |
@ -0,0 +1,10 @@ |
|||||
|
import { |
||||
|
createSSRApp |
||||
|
} from "vue"; |
||||
|
import App from "./App.vue"; |
||||
|
export function createApp() { |
||||
|
const app = createSSRApp(App); |
||||
|
return { |
||||
|
app, |
||||
|
}; |
||||
|
} |
@ -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" : [ |
||||
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.VIBRATE\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", |
||||
|
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.CAMERA\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", |
||||
|
"<uses-feature android:name=\"android.hardware.camera\"/>", |
||||
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" |
||||
|
] |
||||
|
}, |
||||
|
/* 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" |
||||
|
} |
@ -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" |
||||
|
} |
||||
|
} |
@ -0,0 +1,48 @@ |
|||||
|
<template> |
||||
|
<view class="content"> |
||||
|
<image class="logo" src="/static/logo.png"></image> |
||||
|
<view class="text-area"> |
||||
|
<text class="title">{{ title }}</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
title: 'Hello', |
||||
|
} |
||||
|
}, |
||||
|
onLoad() {}, |
||||
|
methods: {}, |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
.content { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
} |
||||
|
|
||||
|
.logo { |
||||
|
height: 200rpx; |
||||
|
width: 200rpx; |
||||
|
margin-top: 200rpx; |
||||
|
margin-left: auto; |
||||
|
margin-right: auto; |
||||
|
margin-bottom: 50rpx; |
||||
|
} |
||||
|
|
||||
|
.text-area { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
} |
||||
|
|
||||
|
.title { |
||||
|
font-size: 36rpx; |
||||
|
color: #8f8f94; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,6 @@ |
|||||
|
export {}; |
||||
|
|
||||
|
declare module "vue" { |
||||
|
type Hooks = App.AppInstance & Page.PageInstance; |
||||
|
interface ComponentCustomOptions extends Hooks {} |
||||
|
} |
After Width: 72 | Height: 72 | Size: 3.9 KiB |
@ -0,0 +1,76 @@ |
|||||
|
/** |
||||
|
* 这里是uni-app内置的常用样式变量 |
||||
|
* |
||||
|
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 |
||||
|
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App |
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
/** |
||||
|
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 |
||||
|
* |
||||
|
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 |
||||
|
*/ |
||||
|
|
||||
|
/* 颜色变量 */ |
||||
|
|
||||
|
/* 行为相关颜色 */ |
||||
|
$uni-color-primary: #007aff; |
||||
|
$uni-color-success: #4cd964; |
||||
|
$uni-color-warning: #f0ad4e; |
||||
|
$uni-color-error: #dd524d; |
||||
|
|
||||
|
/* 文字基本颜色 */ |
||||
|
$uni-text-color: #333; // 基本色 |
||||
|
$uni-text-color-inverse: #fff; // 反色 |
||||
|
$uni-text-color-grey: #999; // 辅助灰色,如加载更多的提示信息 |
||||
|
$uni-text-color-placeholder: #808080; |
||||
|
$uni-text-color-disable: #c0c0c0; |
||||
|
|
||||
|
/* 背景颜色 */ |
||||
|
$uni-bg-color: #fff; |
||||
|
$uni-bg-color-grey: #f8f8f8; |
||||
|
$uni-bg-color-hover: #f1f1f1; // 点击状态颜色 |
||||
|
$uni-bg-color-mask: rgba(0, 0, 0, 0.4); // 遮罩颜色 |
||||
|
|
||||
|
/* 边框颜色 */ |
||||
|
$uni-border-color: #c8c7cc; |
||||
|
|
||||
|
/* 尺寸变量 */ |
||||
|
|
||||
|
/* 文字尺寸 */ |
||||
|
$uni-font-size-sm: 12px; |
||||
|
$uni-font-size-base: 14px; |
||||
|
$uni-font-size-lg: 16; |
||||
|
|
||||
|
/* 图片尺寸 */ |
||||
|
$uni-img-size-sm: 20px; |
||||
|
$uni-img-size-base: 26px; |
||||
|
$uni-img-size-lg: 40px; |
||||
|
|
||||
|
/* Border Radius */ |
||||
|
$uni-border-radius-sm: 2px; |
||||
|
$uni-border-radius-base: 3px; |
||||
|
$uni-border-radius-lg: 6px; |
||||
|
$uni-border-radius-circle: 50%; |
||||
|
|
||||
|
/* 水平间距 */ |
||||
|
$uni-spacing-row-sm: 5px; |
||||
|
$uni-spacing-row-base: 10px; |
||||
|
$uni-spacing-row-lg: 15px; |
||||
|
|
||||
|
/* 垂直间距 */ |
||||
|
$uni-spacing-col-sm: 4px; |
||||
|
$uni-spacing-col-base: 8px; |
||||
|
$uni-spacing-col-lg: 12px; |
||||
|
|
||||
|
/* 透明度 */ |
||||
|
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 |
||||
|
|
||||
|
/* 文章场景相关 */ |
||||
|
$uni-color-title: #2c405a; // 文章标题颜色 |
||||
|
$uni-font-size-title: 20px; |
||||
|
$uni-color-subtitle: #555; // 二级标题颜色 |
||||
|
$uni-font-size-subtitle: 18px; |
||||
|
$uni-color-paragraph: #3f536e; // 文章段落颜色 |
||||
|
$uni-font-size-paragraph: 15px; |
@ -0,0 +1,53 @@ |
|||||
|
const fs = require('fs'); |
||||
|
const { parse, modify } = require('jsonc-parser'); |
||||
|
const path = require('path'); |
||||
|
|
||||
|
/** |
||||
|
* 通用 JSONC 文件字段修改器(支持注释、嵌套路径) |
||||
|
* @param {string} filePath - JSON 或 JSONC 文件路径 |
||||
|
* @param {string[]} fieldPath - 要修改的字段路径,如 ['a', 'b', 'c'] |
||||
|
* @param {any} newValue - 要写入的新值 |
||||
|
* @param {object} [options] - 可选项 |
||||
|
* @param {number} [options.tabSize=2] - 缩进空格数 |
||||
|
*/ |
||||
|
function updateJsonFileField(filePath, fieldPath, newValue, options = {}) { |
||||
|
const tabSize = options.tabSize || 2; |
||||
|
if (!fs.existsSync(filePath)) { |
||||
|
console.warn(`[json-editor] ⚠️ 文件不存在: ${filePath}`); |
||||
|
return; |
||||
|
} |
||||
|
try { |
||||
|
const raw = fs.readFileSync(filePath, 'utf-8'); |
||||
|
parse(raw); // 验证是否为合法 JSONC
|
||||
|
|
||||
|
const edits = modify(raw, fieldPath, newValue, { |
||||
|
formattingOptions: { |
||||
|
insertSpaces: true, |
||||
|
tabSize, |
||||
|
}, |
||||
|
}); |
||||
|
const updated = applyEdits(raw, edits); |
||||
|
fs.writeFileSync(filePath, updated, 'utf-8'); |
||||
|
console.log(`[json-editor] ✅ ${path.basename(filePath)} -> 修改 ${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, |
||||
|
}; |
@ -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(), |
||||
|
], |
||||
|
} |
||||
|
}) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue