feat: init
This commit is contained in:
commit
a8ee21b558
|
|
@ -0,0 +1,106 @@
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const { execSync } = require('child_process')
|
||||||
|
|
||||||
|
const scopes = fs
|
||||||
|
.readdirSync(path.resolve(__dirname, 'src'), { withFileTypes: true })
|
||||||
|
.filter((dirent) => dirent.isDirectory())
|
||||||
|
.map((dirent) => dirent.name.replace(/s$/, ''))
|
||||||
|
|
||||||
|
// precomputed scope
|
||||||
|
const scopeComplete = execSync('git status --porcelain || true')
|
||||||
|
.toString()
|
||||||
|
.trim()
|
||||||
|
.split('\n')
|
||||||
|
.find((r) => ~r.indexOf('M src'))
|
||||||
|
?.replace(/(\/)/g, '%%')
|
||||||
|
?.match(/src%%((\w|-)*)/)?.[1]
|
||||||
|
?.replace(/s$/, '')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
ignores: [(commit) => commit.includes('init')],
|
||||||
|
extends: ['@commitlint/config-conventional'],
|
||||||
|
rules: {
|
||||||
|
'body-leading-blank': [2, 'always'],
|
||||||
|
'footer-leading-blank': [1, 'always'],
|
||||||
|
'header-max-length': [2, 'always', 108],
|
||||||
|
'subject-empty': [2, 'never'],
|
||||||
|
'type-empty': [2, 'never'],
|
||||||
|
'subject-case': [0],
|
||||||
|
'type-enum': [
|
||||||
|
2,
|
||||||
|
'always',
|
||||||
|
[
|
||||||
|
'feat',
|
||||||
|
'fix',
|
||||||
|
'perf',
|
||||||
|
'style',
|
||||||
|
'docs',
|
||||||
|
'test',
|
||||||
|
'refactor',
|
||||||
|
'build',
|
||||||
|
'ci',
|
||||||
|
'chore',
|
||||||
|
'revert',
|
||||||
|
'wip',
|
||||||
|
'workflow',
|
||||||
|
'types',
|
||||||
|
'release',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
prompt: {
|
||||||
|
/** @use `pnpm commit :f` */
|
||||||
|
alias: {
|
||||||
|
f: 'docs: fix typos',
|
||||||
|
r: 'docs: update README',
|
||||||
|
s: 'style: update code format',
|
||||||
|
b: 'build: bump dependencies',
|
||||||
|
c: 'chore: update config',
|
||||||
|
},
|
||||||
|
customScopesAlign: !scopeComplete ? 'top' : 'bottom',
|
||||||
|
defaultScope: scopeComplete,
|
||||||
|
scopes: [...scopes, 'mock'],
|
||||||
|
allowEmptyIssuePrefixs: false,
|
||||||
|
allowCustomIssuePrefixs: false,
|
||||||
|
|
||||||
|
// English
|
||||||
|
typesAppend: [
|
||||||
|
{ value: 'wip', name: 'wip: work in process' },
|
||||||
|
{ value: 'workflow', name: 'workflow: workflow improvements' },
|
||||||
|
{ value: 'types', name: 'types: type definition file changes' },
|
||||||
|
],
|
||||||
|
|
||||||
|
// 中英文对照版
|
||||||
|
// messages: {
|
||||||
|
// type: '选择你要提交的类型 :',
|
||||||
|
// scope: '选择一个提交范围 (可选):',
|
||||||
|
// customScope: '请输入自定义的提交范围 :',
|
||||||
|
// subject: '填写简短精炼的变更描述 :\n',
|
||||||
|
// body: '填写更加详细的变更描述 (可选)。使用 "|" 换行 :\n',
|
||||||
|
// breaking: '列举非兼容性重大的变更 (可选)。使用 "|" 换行 :\n',
|
||||||
|
// footerPrefixsSelect: '选择关联issue前缀 (可选):',
|
||||||
|
// customFooterPrefixs: '输入自定义issue前缀 :',
|
||||||
|
// footer: '列举关联issue (可选) 例如: #31, #I3244 :\n',
|
||||||
|
// confirmCommit: '是否提交或修改commit ?',
|
||||||
|
// },
|
||||||
|
// types: [
|
||||||
|
// { value: 'feat', name: 'feat: 新增功能' },
|
||||||
|
// { value: 'fix', name: 'fix: 修复缺陷' },
|
||||||
|
// { value: 'docs', name: 'docs: 文档变更' },
|
||||||
|
// { value: 'style', name: 'style: 代码格式' },
|
||||||
|
// { value: 'refactor', name: 'refactor: 代码重构' },
|
||||||
|
// { value: 'perf', name: 'perf: 性能优化' },
|
||||||
|
// { value: 'test', name: 'test: 添加疏漏测试或已有测试改动' },
|
||||||
|
// { value: 'build', name: 'build: 构建流程、外部依赖变更 (如升级 npm 包、修改打包配置等)' },
|
||||||
|
// { value: 'ci', name: 'ci: 修改 CI 配置、脚本' },
|
||||||
|
// { value: 'revert', name: 'revert: 回滚 commit' },
|
||||||
|
// { value: 'chore', name: 'chore: 对构建过程或辅助工具和库的更改 (不影响源文件、测试用例)' },
|
||||||
|
// { value: 'wip', name: 'wip: 正在开发中' },
|
||||||
|
// { value: 'workflow', name: 'workflow: 工作流程改进' },
|
||||||
|
// { value: 'types', name: 'types: 类型定义文件修改' },
|
||||||
|
// ],
|
||||||
|
// emptyScopesAlias: 'empty: 不填写',
|
||||||
|
// customScopesAlias: 'custom: 自定义',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*] # 表示所有文件适用
|
||||||
|
charset = utf-8 # 设置文件字符集为 utf-8
|
||||||
|
indent_style = space # 缩进风格(tab | space)
|
||||||
|
indent_size = 2 # 缩进大小
|
||||||
|
end_of_line = lf # 控制换行类型(lf | cr | crlf)
|
||||||
|
trim_trailing_whitespace = true # 去除行首的任意空白字符
|
||||||
|
insert_final_newline = true # 始终在文件末尾插入一个新行
|
||||||
|
|
||||||
|
[*.md] # 表示仅 md 文件适用以下规则
|
||||||
|
max_line_length = off # 关闭最大行长度限制
|
||||||
|
trim_trailing_whitespace = false # 关闭末尾空格修剪
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
src/uni_modules/
|
||||||
|
|
@ -0,0 +1,130 @@
|
||||||
|
{
|
||||||
|
"globals": {
|
||||||
|
"Component": true,
|
||||||
|
"ComponentPublicInstance": true,
|
||||||
|
"ComputedRef": true,
|
||||||
|
"EffectScope": true,
|
||||||
|
"ExtractDefaultPropTypes": true,
|
||||||
|
"ExtractPropTypes": true,
|
||||||
|
"ExtractPublicPropTypes": true,
|
||||||
|
"InjectionKey": true,
|
||||||
|
"PropType": true,
|
||||||
|
"Ref": true,
|
||||||
|
"VNode": true,
|
||||||
|
"WritableComputedRef": true,
|
||||||
|
"computed": true,
|
||||||
|
"createApp": true,
|
||||||
|
"customRef": true,
|
||||||
|
"defineAsyncComponent": true,
|
||||||
|
"defineComponent": true,
|
||||||
|
"effectScope": true,
|
||||||
|
"getCurrentInstance": true,
|
||||||
|
"getCurrentScope": true,
|
||||||
|
"h": true,
|
||||||
|
"inject": true,
|
||||||
|
"isProxy": true,
|
||||||
|
"isReactive": true,
|
||||||
|
"isReadonly": true,
|
||||||
|
"isRef": true,
|
||||||
|
"markRaw": true,
|
||||||
|
"nextTick": true,
|
||||||
|
"onActivated": true,
|
||||||
|
"onAddToFavorites": true,
|
||||||
|
"onBackPress": true,
|
||||||
|
"onBeforeMount": true,
|
||||||
|
"onBeforeUnmount": true,
|
||||||
|
"onBeforeUpdate": true,
|
||||||
|
"onDeactivated": true,
|
||||||
|
"onError": true,
|
||||||
|
"onErrorCaptured": true,
|
||||||
|
"onHide": true,
|
||||||
|
"onLaunch": true,
|
||||||
|
"onLoad": true,
|
||||||
|
"onMounted": true,
|
||||||
|
"onNavigationBarButtonTap": true,
|
||||||
|
"onNavigationBarSearchInputChanged": true,
|
||||||
|
"onNavigationBarSearchInputClicked": true,
|
||||||
|
"onNavigationBarSearchInputConfirmed": true,
|
||||||
|
"onNavigationBarSearchInputFocusChanged": true,
|
||||||
|
"onPageNotFound": true,
|
||||||
|
"onPageScroll": true,
|
||||||
|
"onPullDownRefresh": true,
|
||||||
|
"onReachBottom": true,
|
||||||
|
"onReady": true,
|
||||||
|
"onRenderTracked": true,
|
||||||
|
"onRenderTriggered": true,
|
||||||
|
"onResize": true,
|
||||||
|
"onScopeDispose": true,
|
||||||
|
"onServerPrefetch": true,
|
||||||
|
"onShareAppMessage": true,
|
||||||
|
"onShareTimeline": true,
|
||||||
|
"onShow": true,
|
||||||
|
"onTabItemTap": true,
|
||||||
|
"onThemeChange": true,
|
||||||
|
"onUnhandledRejection": true,
|
||||||
|
"onUnload": true,
|
||||||
|
"onUnmounted": true,
|
||||||
|
"onUpdated": true,
|
||||||
|
"provide": true,
|
||||||
|
"reactive": true,
|
||||||
|
"readonly": true,
|
||||||
|
"ref": true,
|
||||||
|
"resolveComponent": true,
|
||||||
|
"shallowReactive": true,
|
||||||
|
"shallowReadonly": true,
|
||||||
|
"shallowRef": true,
|
||||||
|
"toRaw": true,
|
||||||
|
"toRef": true,
|
||||||
|
"toRefs": true,
|
||||||
|
"toValue": true,
|
||||||
|
"triggerRef": true,
|
||||||
|
"unref": true,
|
||||||
|
"useAttrs": true,
|
||||||
|
"useCssModule": true,
|
||||||
|
"useCssVars": true,
|
||||||
|
"useRequest": true,
|
||||||
|
"useSlots": true,
|
||||||
|
"useUpload": true,
|
||||||
|
"useUpload2": true,
|
||||||
|
"watch": true,
|
||||||
|
"watchEffect": true,
|
||||||
|
"watchPostEffect": true,
|
||||||
|
"watchSyncEffect": true,
|
||||||
|
"DirectiveBinding": true,
|
||||||
|
"MaybeRef": true,
|
||||||
|
"MaybeRefOrGetter": true,
|
||||||
|
"onWatcherCleanup": true,
|
||||||
|
"useId": true,
|
||||||
|
"useModel": true,
|
||||||
|
"useTemplateRef": true,
|
||||||
|
"tabbarList": true,
|
||||||
|
"iphoneBottom": true,
|
||||||
|
"useNavbarWeixin": true,
|
||||||
|
"cities": true,
|
||||||
|
"getCities": true,
|
||||||
|
"useCityInfo": true,
|
||||||
|
"useRules": true,
|
||||||
|
"rules": true,
|
||||||
|
"optionalSubjectList": true,
|
||||||
|
"requireSubjectList": true,
|
||||||
|
"optionalSubject": true,
|
||||||
|
"requireSubject": true,
|
||||||
|
"unSortTypeList": true,
|
||||||
|
"useUnSortType": true,
|
||||||
|
"useUniversityType": true,
|
||||||
|
"useRegionInfo": true,
|
||||||
|
"useUniversityLevel": true,
|
||||||
|
"useNatureList": true,
|
||||||
|
"useUniversityRank": true,
|
||||||
|
"useCityNewTop": true,
|
||||||
|
"useCityNewDetail": true,
|
||||||
|
"newDetail": true,
|
||||||
|
"newsDetail": true,
|
||||||
|
"useNewsList": true,
|
||||||
|
"newsList": true,
|
||||||
|
"useLogin": true,
|
||||||
|
"useWxInfo": true,
|
||||||
|
"useUniversityInfo": true,
|
||||||
|
"universityBaseInfo": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,97 @@
|
||||||
|
module.exports = {
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
es2021: true,
|
||||||
|
node: true,
|
||||||
|
},
|
||||||
|
extends: [
|
||||||
|
'eslint:recommended',
|
||||||
|
'plugin:@typescript-eslint/recommended',
|
||||||
|
'plugin:vue/vue3-essential',
|
||||||
|
// eslint-plugin-import 插件, @see https://www.npmjs.com/package/eslint-plugin-import
|
||||||
|
'plugin:import/recommended',
|
||||||
|
// eslint-config-airbnb-base 插件 已经改用 eslint-config-standard 插件
|
||||||
|
'standard',
|
||||||
|
// 1. 接入 prettier 的规则
|
||||||
|
'prettier',
|
||||||
|
'plugin:prettier/recommended',
|
||||||
|
'./.eslintrc-auto-import.json',
|
||||||
|
],
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
env: {
|
||||||
|
node: true,
|
||||||
|
},
|
||||||
|
files: ['.eslintrc.{js,cjs}'],
|
||||||
|
parserOptions: {
|
||||||
|
sourceType: 'script',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 'latest',
|
||||||
|
parser: '@typescript-eslint/parser',
|
||||||
|
sourceType: 'module',
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
'@typescript-eslint',
|
||||||
|
'vue',
|
||||||
|
// 2. 加入 prettier 的 eslint 插件
|
||||||
|
'prettier',
|
||||||
|
// eslint-import-resolver-typescript 插件,@see https://www.npmjs.com/package/eslint-import-resolver-typescript
|
||||||
|
'import',
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
// 3. 注意要加上这一句,开启 prettier 自动修复的功能
|
||||||
|
'prettier/prettier': 'error',
|
||||||
|
// turn on errors for missing imports
|
||||||
|
'import/no-unresolved': 'off',
|
||||||
|
// 对后缀的检测,否则 import 一个ts文件也会报错,需要手动添加'.ts', 增加了下面的配置后就不用了
|
||||||
|
'import/extensions': [
|
||||||
|
'error',
|
||||||
|
'ignorePackages',
|
||||||
|
{ js: 'never', jsx: 'never', ts: 'never', tsx: 'never' },
|
||||||
|
],
|
||||||
|
// 只允许1个默认导出,关闭,否则不能随意export xxx
|
||||||
|
'import/prefer-default-export': ['off'],
|
||||||
|
'no-console': ['off'],
|
||||||
|
// 'no-unused-vars': ['off'],
|
||||||
|
// '@typescript-eslint/no-unused-vars': ['off'],
|
||||||
|
// 解决vite.config.ts报错问题
|
||||||
|
'import/no-extraneous-dependencies': 'off',
|
||||||
|
'no-plusplus': 'off',
|
||||||
|
'no-shadow': 'off',
|
||||||
|
'vue/multi-word-component-names': 'off',
|
||||||
|
'@typescript-eslint/no-explicit-any': 'off',
|
||||||
|
'no-underscore-dangle': 'off',
|
||||||
|
'no-use-before-define': 'off',
|
||||||
|
'no-undef': 'off',
|
||||||
|
'no-unused-vars': 'off',
|
||||||
|
'no-param-reassign': 'off',
|
||||||
|
'@typescript-eslint/no-unused-vars': 'off',
|
||||||
|
// 避免 `eslint` 对于 `typescript` 函数重载的误报
|
||||||
|
'no-redeclare': 'off',
|
||||||
|
'@typescript-eslint/no-redeclare': 'error',
|
||||||
|
},
|
||||||
|
// eslint-import-resolver-typescript 插件,@see https://www.npmjs.com/package/eslint-import-resolver-typescript
|
||||||
|
settings: {
|
||||||
|
'import/parsers': {
|
||||||
|
'@typescript-eslint/parser': ['.ts', '.tsx'],
|
||||||
|
},
|
||||||
|
'import/resolver': {
|
||||||
|
typescript: {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
$t: true,
|
||||||
|
uni: true,
|
||||||
|
UniApp: true,
|
||||||
|
wx: true,
|
||||||
|
WechatMiniprogram: true,
|
||||||
|
getCurrentPages: true,
|
||||||
|
UniHelper: true,
|
||||||
|
Page: true,
|
||||||
|
App: true,
|
||||||
|
NodeJS: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
name: Auto Merge Base to Other Branches
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- base
|
||||||
|
workflow_dispatch: # 手动触发
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
auto-merge:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
token: ${{ secrets.GH_TOKEN_AUTO_MERGE }}
|
||||||
|
|
||||||
|
- name: Merge base into main
|
||||||
|
run: |
|
||||||
|
git config user.name "GitHub Actions"
|
||||||
|
git config user.email "actions@github.com"
|
||||||
|
git checkout main
|
||||||
|
git merge base --no-ff -m "Auto merge base into main"
|
||||||
|
git push origin main
|
||||||
|
|
||||||
|
- name: Merge base into i18n
|
||||||
|
run: |
|
||||||
|
git config user.name "GitHub Actions"
|
||||||
|
git config user.email "actions@github.com"
|
||||||
|
git checkout i18n
|
||||||
|
git merge base --no-ff -m "Auto merge base into i18n"
|
||||||
|
git push origin i18n
|
||||||
|
|
||||||
|
- name: Merge base into tabbar
|
||||||
|
run: |
|
||||||
|
git config user.name "GitHub Actions"
|
||||||
|
git config user.email "actions@github.com"
|
||||||
|
git checkout tabbar
|
||||||
|
git merge base --no-ff -m "Auto merge base into tabbar"
|
||||||
|
git push origin tabbar
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
# 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?
|
||||||
|
.hbuilderx
|
||||||
|
|
||||||
|
.stylelintcache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
docs/.vitepress/dist
|
||||||
|
docs/.vitepress/cache
|
||||||
|
|
||||||
|
# lock 文件还是不要了,我主要的版本写死就好了
|
||||||
|
# pnpm-lock.yaml
|
||||||
|
# package-lock.json
|
||||||
|
|
||||||
|
# TIPS:如果某些文件已经加入了版本管理,现在重新加入 .gitignore 是不生效的,需要执行下面的操作
|
||||||
|
# `git rm -r --cached .` 然后提交 commit 即可。
|
||||||
|
|
||||||
|
# git rm -r --cached file1 file2 ## 针对某些文件
|
||||||
|
# git rm -r --cached dir1 dir2 ## 针对某些文件夹
|
||||||
|
# git rm -r --cached . ## 针对所有文件
|
||||||
|
|
||||||
|
# 更新 uni-app 官方版本
|
||||||
|
# npx @dcloudio/uvm@latest
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
. "$(dirname -- "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
# Run the commit-msg hook
|
||||||
|
npx --no-install commitlint --edit
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
. "$(dirname -- "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
# Run the pre-commit hook
|
||||||
|
npx --no-install -- lint-staged
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
# registry = https://registry.npmjs.org
|
||||||
|
registry = https://registry.npmmirror.com
|
||||||
|
|
||||||
|
strict-peer-dependencies=false
|
||||||
|
auto-install-peers=true
|
||||||
|
shamefully-hoist=true
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
# unplugin-auto-import 生成的类型文件,每次提交都改变,所以加入这里吧,与 .gitignore 配合使用
|
||||||
|
auto-import.d.ts
|
||||||
|
|
||||||
|
# vite-plugin-uni-pages 生成的类型文件,每次切换分支都一堆不同的,所以直接 .gitignore
|
||||||
|
uni-pages.d.ts
|
||||||
|
|
||||||
|
# 插件生成的文件
|
||||||
|
src/pages.json
|
||||||
|
src/manifest.json
|
||||||
|
|
||||||
|
# 忽略自动生成文件
|
||||||
|
src/service/app/**
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
// @see https://prettier.io/docs/en/options
|
||||||
|
module.exports = {
|
||||||
|
singleQuote: true,
|
||||||
|
printWidth: 100,
|
||||||
|
tabWidth: 2,
|
||||||
|
useTabs: false,
|
||||||
|
semi: false,
|
||||||
|
trailingComma: 'all',
|
||||||
|
endOfLine: 'auto',
|
||||||
|
htmlWhitespaceSensitivity: 'ignore',
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: '*.json',
|
||||||
|
options: {
|
||||||
|
trailingComma: 'none',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
src/uni_modules/
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
// .stylelintrc.cjs
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
extends: [
|
||||||
|
// stylelint-config-standard 替换成了更宽松的 stylelint-config-recommended
|
||||||
|
'stylelint-config-recommended',
|
||||||
|
// stylelint-config-standard-scss 替换成了更宽松的 stylelint-config-recommended-scss
|
||||||
|
'stylelint-config-recommended-scss',
|
||||||
|
'stylelint-config-recommended-vue/scss',
|
||||||
|
'stylelint-config-html/vue',
|
||||||
|
'stylelint-config-recess-order',
|
||||||
|
],
|
||||||
|
plugins: ['stylelint-prettier'],
|
||||||
|
overrides: [
|
||||||
|
// 扫描 .vue/html 文件中的<style>标签内的样式
|
||||||
|
{
|
||||||
|
files: ['**/*.{vue,html}'],
|
||||||
|
customSyntax: 'postcss-html',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['**/*.{css,scss}'],
|
||||||
|
customSyntax: 'postcss-scss',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
// 自定义规则
|
||||||
|
rules: {
|
||||||
|
'prettier/prettier': true,
|
||||||
|
// 允许 global 、export 、v-deep等伪类
|
||||||
|
'selector-pseudo-class-no-unknown': [
|
||||||
|
true,
|
||||||
|
{
|
||||||
|
ignorePseudoClasses: ['global', 'export', 'v-deep', 'deep'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'unit-no-unknown': [
|
||||||
|
true,
|
||||||
|
{
|
||||||
|
ignoreUnits: ['rpx'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
// 处理小程序page标签不认识的问题
|
||||||
|
'selector-type-no-unknown': [
|
||||||
|
true,
|
||||||
|
{
|
||||||
|
ignoreTypes: ['page'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'comment-empty-line-before': 'never', // never|always|always-multi-line|never-multi-line
|
||||||
|
'custom-property-empty-line-before': 'never',
|
||||||
|
'no-empty-source': null,
|
||||||
|
'comment-no-empty': null,
|
||||||
|
'no-duplicate-selectors': null,
|
||||||
|
'scss/comment-no-empty': null,
|
||||||
|
'selector-class-pattern': null,
|
||||||
|
'font-family-no-missing-generic-family-keyword': null,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"vue.volar",
|
||||||
|
"stylelint.vscode-stylelint",
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"antfu.unocss",
|
||||||
|
"antfu.iconify",
|
||||||
|
"evils.uniapp-vscode",
|
||||||
|
"uni-helper.uni-helper-vscode",
|
||||||
|
"uni-helper.uni-app-schemas-vscode",
|
||||||
|
"uni-helper.uni-highlight-vscode",
|
||||||
|
"uni-helper.uni-ui-snippets-vscode",
|
||||||
|
"uni-helper.uni-app-snippets-vscode",
|
||||||
|
"mrmlnc.vscode-json5",
|
||||||
|
"streetsidesoftware.code-spell-checker"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
{
|
||||||
|
// 默认格式化工具选择prettier
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
// 保存的时候自动格式化
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
//开启自动修复
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll": "explicit",
|
||||||
|
"source.fixAll.eslint": "explicit",
|
||||||
|
"source.fixAll.stylelint": "explicit"
|
||||||
|
},
|
||||||
|
// 配置stylelint检查的文件类型范围
|
||||||
|
"stylelint.validate": ["css", "scss", "vue", "html"], // 与package.json的scripts对应
|
||||||
|
"stylelint.enable": true,
|
||||||
|
"css.validate": false,
|
||||||
|
"less.validate": false,
|
||||||
|
"scss.validate": false,
|
||||||
|
"[shellscript]": {
|
||||||
|
"editor.defaultFormatter": "foxundermoon.shell-format"
|
||||||
|
},
|
||||||
|
"[dotenv]": {
|
||||||
|
"editor.defaultFormatter": "foxundermoon.shell-format"
|
||||||
|
},
|
||||||
|
"[vue]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[typescript]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[jsonc]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
// 配置语言的文件关联
|
||||||
|
"files.associations": {
|
||||||
|
"pages.json": "jsonc", // pages.json 可以写注释
|
||||||
|
"manifest.json": "jsonc" // manifest.json 可以写注释
|
||||||
|
},
|
||||||
|
"cSpell.words": [
|
||||||
|
"Aplipay",
|
||||||
|
"climblee",
|
||||||
|
"commitlint",
|
||||||
|
"dcloudio",
|
||||||
|
"iconfont",
|
||||||
|
"qrcode",
|
||||||
|
"refresherrefresh",
|
||||||
|
"scrolltolower",
|
||||||
|
"tabbar",
|
||||||
|
"Toutiao",
|
||||||
|
"unibest",
|
||||||
|
"uvui",
|
||||||
|
"Wechat",
|
||||||
|
"WechatMiniprogram",
|
||||||
|
"Weixin"
|
||||||
|
],
|
||||||
|
"typescript.tsdk": "node_modules\\typescript\\lib",
|
||||||
|
"explorer.fileNesting.enabled": true,
|
||||||
|
"explorer.fileNesting.expand": false,
|
||||||
|
"explorer.fileNesting.patterns": {
|
||||||
|
"package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,LICENSE,.gitattributes,.gitignore,.gitpod.yml,CNAME,.npmrc,.browserslistrc",
|
||||||
|
".eslintrc.cjs": ".eslintignore,.prettierignore,.stylelintignore,.commitlintrc.*,.prettierrc.*,.stylelintrc.*,.eslintrc-auto-import.json,.editorconfig,.commitlint.cjs"
|
||||||
|
},
|
||||||
|
"vetur.validation.template": false,
|
||||||
|
"vetur.validation.script": false,
|
||||||
|
"vetur.validation.style": false,
|
||||||
|
"vetur.experimental.templateInterpolationService": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
{
|
||||||
|
// Place your unibest 工作区 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
|
||||||
|
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
|
||||||
|
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
|
||||||
|
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
|
||||||
|
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
|
||||||
|
// Placeholders with the same ids are connected.
|
||||||
|
// Example:
|
||||||
|
// "Print to console": {
|
||||||
|
// "scope": "javascript,typescript",
|
||||||
|
// "prefix": "log",
|
||||||
|
// "body": [
|
||||||
|
// "console.log('$1');",
|
||||||
|
// "$2"
|
||||||
|
// ],
|
||||||
|
// "description": "Log output to console"
|
||||||
|
// }
|
||||||
|
"Print unibest Vue3 SFC": {
|
||||||
|
"scope": "vue",
|
||||||
|
"prefix": "v3",
|
||||||
|
"body": [
|
||||||
|
"<route lang=\"json5\" type=\"page\">",
|
||||||
|
"{",
|
||||||
|
" layout: 'default',",
|
||||||
|
" style: {",
|
||||||
|
" navigationBarTitleText: '$1',",
|
||||||
|
" },",
|
||||||
|
"}",
|
||||||
|
"</route>\n",
|
||||||
|
"<template>",
|
||||||
|
" <view class=\"\">$2</view>",
|
||||||
|
"</template>\n",
|
||||||
|
"<script lang=\"ts\" setup>",
|
||||||
|
"//$3",
|
||||||
|
"</script>\n",
|
||||||
|
"<style lang=\"scss\" scoped>",
|
||||||
|
"//$4",
|
||||||
|
"</style>\n",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"Print unibest style": {
|
||||||
|
"scope": "vue",
|
||||||
|
"prefix": "st",
|
||||||
|
"body": ["<style lang=\"scss\" scoped>", "//", "</style>\n"],
|
||||||
|
},
|
||||||
|
"Print unibest script": {
|
||||||
|
"scope": "vue",
|
||||||
|
"prefix": "sc",
|
||||||
|
"body": ["<script lang=\"ts\" setup>", "//$3", "</script>\n"],
|
||||||
|
},
|
||||||
|
"Print unibest template": {
|
||||||
|
"scope": "vue",
|
||||||
|
"prefix": "te",
|
||||||
|
"body": ["<template>", " <view class=\"\">$1</view>", "</template>\n"],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2024 菲鸽
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
# 六维生涯
|
||||||
|
|
||||||
|
六维生涯小程序
|
||||||
|
|
||||||
|
## ⚙️ 环境
|
||||||
|
|
||||||
|
- node>=18
|
||||||
|
- pnpm>=7.30
|
||||||
|
- Vue Official>=2.1.10
|
||||||
|
- TypeScript>=5.0
|
||||||
|
|
||||||
|
## 📂 快速开始
|
||||||
|
|
||||||
|
执行 `pnpm create unibest` 创建项目
|
||||||
|
|
||||||
|
执行 `pnpm i` 安装依赖
|
||||||
|
|
||||||
|
执行 `pnpm dev` 运行 `H5`
|
||||||
|
|
||||||
|
## 📦 运行(支持热更新)
|
||||||
|
|
||||||
|
- web平台: `pnpm dev:h5`, 然后打开 [http://localhost:9000/](http://localhost:9000/)。
|
||||||
|
- weixin平台:`pnpm dev:mp-weixin` 然后打开微信开发者工具,导入本地文件夹,选择本项目的`dist/dev/mp-weixin` 文件。
|
||||||
|
- APP平台:`pnpm dev:app`, 然后打开 `HBuilderX`,导入刚刚生成的`dist/dev/app` 文件夹,选择运行到模拟器(开发时优先使用),或者运行的安卓/ios基座。
|
||||||
|
|
||||||
|
## 🔗 发布
|
||||||
|
|
||||||
|
- web平台: `pnpm build:h5`,打包后的文件在 `dist/build/h5`,可以放到web服务器,如nginx运行。如果最终不是放在根目录,可以在 `manifest.config.ts` 文件的 `h5.router.base` 属性进行修改。
|
||||||
|
- weixin平台:`pnpm build:mp-weixin`, 打包后的文件在 `dist/build/mp-weixin`,然后通过微信开发者工具导入,并点击右上角的“上传”按钮进行上传。
|
||||||
|
- APP平台:`pnpm build:app`, 然后打开 `HBuilderX`,导入刚刚生成的`dist/build/app` 文件夹,选择发行 - APP云打包。
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
VITE_APP_TITLE = '六纬生涯'
|
||||||
|
VITE_APP_PORT = 9000
|
||||||
|
|
||||||
|
VITE_UNI_APPID = 'H57F2ACE4'
|
||||||
|
VITE_WX_APPID = 'wxc2399d3aa57174db'
|
||||||
|
|
||||||
|
# h5部署网站的base,配置到 manifest.config.ts 里的 h5.router.base
|
||||||
|
VITE_APP_PUBLIC_BASE=
|
||||||
|
|
||||||
|
VITE_SERVER_BASEURL = 'https://tuiwuv1.ycymedu.com'
|
||||||
|
VITE_STATIC_SERVER_BASEURL = "https://api.static.ycymedu.com"
|
||||||
|
VITE_UPLOAD_BASEURL = 'https://api.v3.ycymedu.com/upload'
|
||||||
|
|
||||||
|
# 有些同学可能需要在微信小程序里面根据 develop、trial、release 分别设置上传地址,参考代码如下。
|
||||||
|
# 下面的变量如果没有设置,会默认使用 VITE_SERVER_BASEURL or VITE_UPLOAD_BASEURL
|
||||||
|
VITE_SERVER_BASEURL__WEIXIN_DEVELOP = 'https://api.v3.ycymedu.com'
|
||||||
|
VITE_SERVER_BASEURL__WEIXIN_TRIAL = 'https://api.v3.ycymedu.com'
|
||||||
|
VITE_SERVER_BASEURL__WEIXIN_RELEASE = 'https://api.v3.ycymedu.com'
|
||||||
|
|
||||||
|
VITE_UPLOAD_BASEURL__WEIXIN_DEVELOP = 'https://api.v3.ycymedu.com'
|
||||||
|
VITE_UPLOAD_BASEURL__WEIXIN_TRIAL = 'https://api.v3.ycymedu.com'
|
||||||
|
VITE_UPLOAD_BASEURL__WEIXIN_RELEASE = 'https://api.v3.ycymedu.com'
|
||||||
|
|
||||||
|
# h5是否需要配置代理
|
||||||
|
VITE_APP_PROXY=false
|
||||||
|
VITE_APP_PROXY_PREFIX = '/api'
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
|
||||||
|
NODE_ENV = 'development'
|
||||||
|
# 是否去除console 和 debugger
|
||||||
|
VITE_DELETE_CONSOLE = false
|
||||||
|
# 是否开启sourcemap
|
||||||
|
VITE_SHOW_SOURCEMAP = true
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
|
||||||
|
NODE_ENV = 'development'
|
||||||
|
# 是否去除console 和 debugger
|
||||||
|
VITE_DELETE_CONSOLE = true
|
||||||
|
# 是否开启sourcemap
|
||||||
|
VITE_SHOW_SOURCEMAP = false
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
# 变量必须以 VITE_ 为前缀才能暴露给外部读取
|
||||||
|
NODE_ENV = 'development'
|
||||||
|
# 是否去除console 和 debugger
|
||||||
|
VITE_DELETE_CONSOLE = false
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html build-time="%BUILD_TIME%">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
||||||
|
<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>unibest</title>
|
||||||
|
<!--preload-links-->
|
||||||
|
<!--app-context-->
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="app"><!--app-html--></div>
|
||||||
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
// manifest.config.ts
|
||||||
|
import { defineManifestConfig } from '@uni-helper/vite-plugin-uni-manifest'
|
||||||
|
import path from 'node:path'
|
||||||
|
import { loadEnv } from 'vite'
|
||||||
|
|
||||||
|
// 获取环境变量的范例
|
||||||
|
const env = loadEnv(process.env.NODE_ENV!, path.resolve(process.cwd(), 'env'))
|
||||||
|
const {
|
||||||
|
VITE_APP_TITLE,
|
||||||
|
VITE_UNI_APPID,
|
||||||
|
VITE_WX_APPID,
|
||||||
|
VITE_APP_PUBLIC_BASE,
|
||||||
|
VITE_FALLBACK_LOCALE,
|
||||||
|
} = env
|
||||||
|
|
||||||
|
export default defineManifestConfig({
|
||||||
|
name: VITE_APP_TITLE,
|
||||||
|
appid: VITE_UNI_APPID,
|
||||||
|
description: '',
|
||||||
|
versionName: '1.0.0',
|
||||||
|
versionCode: '100',
|
||||||
|
transformPx: false,
|
||||||
|
locale: VITE_FALLBACK_LOCALE, // 'zh-Hans'
|
||||||
|
h5: {
|
||||||
|
router: {
|
||||||
|
base: VITE_APP_PUBLIC_BASE,
|
||||||
|
mode: 'history',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
/* 5+App特有相关 */
|
||||||
|
'app-plus': {
|
||||||
|
usingComponents: true,
|
||||||
|
nvueStyleCompiler: 'uni-app',
|
||||||
|
compilerVersion: 3,
|
||||||
|
compatible: {
|
||||||
|
ignoreVersion: true,
|
||||||
|
},
|
||||||
|
splashscreen: {
|
||||||
|
alwaysShowBeforeRender: true,
|
||||||
|
waiting: true,
|
||||||
|
autoclose: true,
|
||||||
|
delay: 0,
|
||||||
|
},
|
||||||
|
/* 模块配置 */
|
||||||
|
modules: {},
|
||||||
|
/* 应用发布信息 */
|
||||||
|
distribute: {
|
||||||
|
/* android打包配置 */
|
||||||
|
android: {
|
||||||
|
minSdkVersion: 30,
|
||||||
|
targetSdkVersion: 30,
|
||||||
|
abiFilters: ['armeabi-v7a', 'arm64-v8a'],
|
||||||
|
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: {},
|
||||||
|
/* 图标配置 */
|
||||||
|
icons: {
|
||||||
|
android: {},
|
||||||
|
ios: {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
/* 小程序特有相关 */
|
||||||
|
'mp-weixin': {
|
||||||
|
appid: VITE_WX_APPID,
|
||||||
|
setting: {
|
||||||
|
urlCheck: false,
|
||||||
|
},
|
||||||
|
usingComponents: true,
|
||||||
|
optimization: {
|
||||||
|
subPackages: true,
|
||||||
|
},
|
||||||
|
// requiredPrivateInfos: ['getLocation'],
|
||||||
|
// requiredBackgroundModes: ['audio'],
|
||||||
|
lazyCodeLoading: 'requiredComponents',
|
||||||
|
// __usePrivacyCheck__: true,
|
||||||
|
},
|
||||||
|
uniStatistics: {
|
||||||
|
enable: false,
|
||||||
|
},
|
||||||
|
vueVersion: '3',
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
import type { GenerateServiceProps } from 'openapi-ts-request'
|
||||||
|
|
||||||
|
export default [
|
||||||
|
{
|
||||||
|
schemaPath: 'http://petstore.swagger.io/v2/swagger.json',
|
||||||
|
serversPath: './src/service/app',
|
||||||
|
requestLibPath: `import request from '@/utils/request';\n import { CustomRequestOptions } from '@/interceptors/request';`,
|
||||||
|
requestOptionsType: 'CustomRequestOptions',
|
||||||
|
isGenReactQuery: true,
|
||||||
|
reactQueryMode: 'vue',
|
||||||
|
isGenJavaScript: false,
|
||||||
|
},
|
||||||
|
] as GenerateServiceProps[]
|
||||||
|
|
@ -0,0 +1,167 @@
|
||||||
|
{
|
||||||
|
"name": "volunteer-4",
|
||||||
|
"type": "commonjs",
|
||||||
|
"version": "2.5.5",
|
||||||
|
"description": "unibest - 最好的 uniapp 开发模板",
|
||||||
|
"author": {
|
||||||
|
"name": "feige996",
|
||||||
|
"zhName": "菲鸽",
|
||||||
|
"email": "1020103647@qq.com",
|
||||||
|
"github": "https://github.com/feige996",
|
||||||
|
"gitee": "https://gitee.com/feige996"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": "https://github.com/feige996/unibest",
|
||||||
|
"repository-gitee": "https://gitee.com/feige996/unibest",
|
||||||
|
"repository-deprecated": "https://github.com/codercup/unibest",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/feige996/unibest/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://feige996.github.io/unibest/",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18",
|
||||||
|
"pnpm": ">=7.30"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"preinstall": "npx only-allow pnpm",
|
||||||
|
"uvm": "npx @dcloudio/uvm@latest",
|
||||||
|
"uvm-rm": "node ./scripts/postupgrade.js",
|
||||||
|
"postuvm": "echo upgrade uni-app success!",
|
||||||
|
"dev:app": "uni -p app",
|
||||||
|
"dev:app-android": "uni -p app-android",
|
||||||
|
"dev:app-ios": "uni -p app-ios",
|
||||||
|
"dev:custom": "uni -p",
|
||||||
|
"dev": "uni",
|
||||||
|
"dev:h5": "uni",
|
||||||
|
"dev:h5:ssr": "uni --ssr",
|
||||||
|
"dev:mp": "uni -p mp-weixin",
|
||||||
|
"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",
|
||||||
|
"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:app": "uni build -p app",
|
||||||
|
"build:app-android": "uni build -p app-android",
|
||||||
|
"build:app-ios": "uni build -p app-ios",
|
||||||
|
"build:custom": "uni build -p",
|
||||||
|
"build:h5": "uni build",
|
||||||
|
"build": "uni build",
|
||||||
|
"build:h5:ssr": "uni build --ssr",
|
||||||
|
"build:mp-alipay": "uni build -p mp-alipay",
|
||||||
|
"build:mp": "uni build -p mp-weixin",
|
||||||
|
"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-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",
|
||||||
|
"prepare": "git init && husky install ",
|
||||||
|
"type-check": "vue-tsc --noEmit",
|
||||||
|
"cz": "czg",
|
||||||
|
"openapi-ts-request": "openapi-ts"
|
||||||
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"**/*.{html,vue,ts,cjs,json,md}": [
|
||||||
|
"prettier --write"
|
||||||
|
],
|
||||||
|
"**/*.{vue,js,ts,jsx,tsx}": [
|
||||||
|
"eslint --cache --fix"
|
||||||
|
],
|
||||||
|
"**/*.{vue,css,scss,html}": [
|
||||||
|
"stylelint --fix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"resolutions": {
|
||||||
|
"bin-wrapper": "npm:bin-wrapper-china"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@dcloudio/uni-app": "3.0.0-4020920240930001",
|
||||||
|
"@dcloudio/uni-app-plus": "3.0.0-4020920240930001",
|
||||||
|
"@dcloudio/uni-components": "3.0.0-4020920240930001",
|
||||||
|
"@dcloudio/uni-h5": "3.0.0-4020920240930001",
|
||||||
|
"@dcloudio/uni-mp-weixin": "3.0.0-4020920240930001",
|
||||||
|
"@tanstack/vue-query": "^5.62.16",
|
||||||
|
"abortcontroller-polyfill": "^1.7.8",
|
||||||
|
"dayjs": "1.11.10",
|
||||||
|
"pinia": "2.0.36",
|
||||||
|
"pinia-plugin-persistedstate": "3.2.1",
|
||||||
|
"pinyin-pro": "^3.26.0",
|
||||||
|
"qs": "6.5.3",
|
||||||
|
"vue": "3.4.21",
|
||||||
|
"wot-design-uni": "^1.4.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@commitlint/cli": "^18.6.1",
|
||||||
|
"@commitlint/config-conventional": "^18.6.3",
|
||||||
|
"@dcloudio/types": "^3.4.14",
|
||||||
|
"@dcloudio/uni-automator": "3.0.0-4020920240930001",
|
||||||
|
"@dcloudio/uni-cli-shared": "3.0.0-4020920240930001",
|
||||||
|
"@dcloudio/uni-stacktracey": "3.0.0-4020920240930001",
|
||||||
|
"@dcloudio/vite-plugin-uni": "3.0.0-4020920240930001",
|
||||||
|
"@esbuild/darwin-arm64": "0.20.2",
|
||||||
|
"@esbuild/darwin-x64": "0.20.2",
|
||||||
|
"@iconify-json/carbon": "^1.2.4",
|
||||||
|
"@rollup/rollup-darwin-x64": "^4.28.0",
|
||||||
|
"@types/node": "^20.17.9",
|
||||||
|
"@types/wechat-miniprogram": "^3.4.8",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
||||||
|
"@typescript-eslint/parser": "^6.21.0",
|
||||||
|
"@uni-helper/uni-types": "1.0.0-alpha.3",
|
||||||
|
"@uni-helper/vite-plugin-uni-layouts": "^0.1.10",
|
||||||
|
"@uni-helper/vite-plugin-uni-manifest": "^0.2.7",
|
||||||
|
"@uni-helper/vite-plugin-uni-pages": "0.2.20",
|
||||||
|
"@uni-helper/vite-plugin-uni-platform": "^0.0.4",
|
||||||
|
"@unocss/preset-legacy-compat": "^0.59.4",
|
||||||
|
"@vue/runtime-core": "^3.5.13",
|
||||||
|
"@vue/tsconfig": "^0.1.3",
|
||||||
|
"autoprefixer": "^10.4.20",
|
||||||
|
"commitlint": "^18.6.1",
|
||||||
|
"czg": "^1.9.4",
|
||||||
|
"eslint": "^8.57.1",
|
||||||
|
"eslint-config-prettier": "^9.1.0",
|
||||||
|
"eslint-config-standard": "^17.1.0",
|
||||||
|
"eslint-import-resolver-typescript": "^3.7.0",
|
||||||
|
"eslint-plugin-import": "^2.31.0",
|
||||||
|
"eslint-plugin-prettier": "^5.2.1",
|
||||||
|
"eslint-plugin-vue": "^9.32.0",
|
||||||
|
"husky": "^8.0.3",
|
||||||
|
"lint-staged": "^15.2.10",
|
||||||
|
"openapi-ts-request": "^1.1.2",
|
||||||
|
"postcss": "^8.4.49",
|
||||||
|
"postcss-html": "^1.7.0",
|
||||||
|
"postcss-scss": "^4.0.9",
|
||||||
|
"rollup-plugin-visualizer": "^5.12.0",
|
||||||
|
"sass": "1.77.8",
|
||||||
|
"stylelint": "^16.11.0",
|
||||||
|
"stylelint-config-html": "^1.1.0",
|
||||||
|
"stylelint-config-recess-order": "^4.6.0",
|
||||||
|
"stylelint-config-recommended": "^14.0.1",
|
||||||
|
"stylelint-config-recommended-scss": "^14.1.0",
|
||||||
|
"stylelint-config-recommended-vue": "^1.5.0",
|
||||||
|
"stylelint-prettier": "^5.0.2",
|
||||||
|
"svg-sprite-loader": "^6.0.11",
|
||||||
|
"terser": "^5.36.0",
|
||||||
|
"typescript": "^5.7.2",
|
||||||
|
"unocss": "^0.58.9",
|
||||||
|
"unocss-applet": "^0.7.8",
|
||||||
|
"unplugin-auto-import": "^0.17.8",
|
||||||
|
"vite": "5.2.8",
|
||||||
|
"vite-plugin-restart": "^0.4.2",
|
||||||
|
"vue-tsc": "^1.8.27"
|
||||||
|
},
|
||||||
|
"minimize": {
|
||||||
|
"dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
import { defineUniPages } from '@uni-helper/vite-plugin-uni-pages'
|
||||||
|
|
||||||
|
export default defineUniPages({
|
||||||
|
globalStyle: {
|
||||||
|
navigationBarTextStyle: 'black',
|
||||||
|
navigationBarTitleText: '六纬生涯',
|
||||||
|
navigationBarBackgroundColor: '#fff',
|
||||||
|
backgroundColor: '#F8F8F8',
|
||||||
|
},
|
||||||
|
easycom: {
|
||||||
|
autoscan: true,
|
||||||
|
custom: {
|
||||||
|
'^wd-(.*)': 'wot-design-uni/components/wd-$1/wd-$1.vue',
|
||||||
|
'^(?!z-paging-refresh|z-paging-load-more)z-paging(.*)':
|
||||||
|
'z-paging/components/z-paging$1/z-paging$1.vue',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tabBar: {
|
||||||
|
color: '#7A7E83',
|
||||||
|
selectedColor: '#3370ff',
|
||||||
|
borderStyle: 'white',
|
||||||
|
backgroundColor: '#ffffff',
|
||||||
|
height: '60px',
|
||||||
|
fontSize: '10px',
|
||||||
|
iconWidth: '16px',
|
||||||
|
spacing: '3px',
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
iconPath: '/static/tabBar/news.png',
|
||||||
|
selectedIconPath: '/static/tabBar/news-active.png',
|
||||||
|
pagePath: 'pages/evaluation/index/index',
|
||||||
|
text: '测评',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
iconPath: '/static/tabBar/center.png',
|
||||||
|
selectedIconPath: '/static/tabBar/center-active.png',
|
||||||
|
pagePath: 'pages/ucenter/index/index',
|
||||||
|
text: '我的',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
pages: [],
|
||||||
|
preloadRule: {
|
||||||
|
'pages/evaluation/index/index': {
|
||||||
|
network: 'all',
|
||||||
|
packages: ['pages-evaluation-sub'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
condition: {
|
||||||
|
current: 0,
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
name: '',
|
||||||
|
path: '',
|
||||||
|
query: '',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
})
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"appid": "wxd9369129a1e69342",
|
||||||
|
"compileType": "miniprogram",
|
||||||
|
"libVersion": "3.7.8",
|
||||||
|
"packOptions": {
|
||||||
|
"ignore": [],
|
||||||
|
"include": []
|
||||||
|
},
|
||||||
|
"setting": {
|
||||||
|
"coverView": true,
|
||||||
|
"es6": true,
|
||||||
|
"postcss": true,
|
||||||
|
"minified": true,
|
||||||
|
"enhance": true,
|
||||||
|
"showShadowRootInWxmlPanel": true,
|
||||||
|
"packNpmRelationList": [],
|
||||||
|
"babelSetting": {
|
||||||
|
"ignore": [],
|
||||||
|
"disablePlugins": [],
|
||||||
|
"outputPath": ""
|
||||||
|
},
|
||||||
|
"compileWorklet": false,
|
||||||
|
"uglifyFileName": false,
|
||||||
|
"uploadWithSourceMap": true,
|
||||||
|
"packNpmManually": false,
|
||||||
|
"minifyWXSS": true,
|
||||||
|
"minifyWXML": true,
|
||||||
|
"localPlugins": false,
|
||||||
|
"disableUseStrict": false,
|
||||||
|
"useCompilerPlugins": false,
|
||||||
|
"condition": false,
|
||||||
|
"swc": false,
|
||||||
|
"disableSWC": true
|
||||||
|
},
|
||||||
|
"condition": {},
|
||||||
|
"editorSetting": {
|
||||||
|
"tabIndent": "insertSpaces",
|
||||||
|
"tabSize": 2
|
||||||
|
},
|
||||||
|
"simulatorPluginLibVersion": {}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||||
Loading…
Reference in New Issue