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