From a8163874dcc2b1ca826b12a28e606c9d7898911c Mon Sep 17 00:00:00 2001 From: kailong321200875 <321200875@qq.com> Date: Sat, 16 Oct 2021 09:40:39 +0800 Subject: [PATCH] =?UTF-8?q?wip:=20vite=E7=89=88=E9=87=8D=E6=9E=84=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 9 + .env.base | 2 + .env.dev | 2 + .env.pro | 2 + .env.test | 2 + .eslintignore | 7 + .eslintrc.js | 322 + .gitignore | 1 + .husky/.gitignore | 1 + .husky/commit-msg | 4 + .husky/common.sh | 9 + .husky/lintstagedrc.js | 8 + .husky/pre-commit | 10 + .postcssrc.js | 8 + .prettierignore | 7 + .prettierrc.js | 19 + .stylelintignore | 4 + commitlint.config.js | 29 + components.d.ts | 25 +- index.html | 133 +- package.json | 81 +- public/favicon.ico | Bin 4286 -> 4286 bytes public/logo.png | Bin 0 -> 2187 bytes src/App.vue | 53 +- src/assets/icons/404.svg | 1 + src/assets/icons/UI.svg | 1 + src/assets/icons/bottom.svg | 1 + src/assets/icons/bug.svg | 1 + src/assets/icons/chart.svg | 1 + src/assets/icons/clipboard.svg | 1 + src/assets/icons/close.svg | 1 + src/assets/icons/component.svg | 1 + src/assets/icons/dashboard.svg | 1 + src/assets/icons/documentation.svg | 1 + src/assets/icons/drag.svg | 1 + src/assets/icons/edit.svg | 1 + src/assets/icons/email.svg | 1 + src/assets/icons/example.svg | 1 + src/assets/icons/excel.svg | 1 + src/assets/icons/exit-fullscreen.svg | 1 + src/assets/icons/eye-open.svg | 1 + src/assets/icons/eye.svg | 1 + src/assets/icons/form.svg | 1 + src/assets/icons/fullscreen.svg | 1 + src/assets/icons/guide.svg | 1 + src/assets/icons/icon.svg | 1 + src/assets/icons/international.svg | 1 + src/assets/icons/language.svg | 1 + src/assets/icons/layout-classic.svg | 39 + src/assets/icons/layout-top.svg | 39 + src/assets/icons/layout-topLeft.svg | 39 + src/assets/icons/left.svg | 1 + src/assets/icons/link.svg | 1 + src/assets/icons/list.svg | 1 + src/assets/icons/lock.svg | 1 + src/assets/icons/magnify.svg | 1 + src/assets/icons/message.svg | 1 + src/assets/icons/money.svg | 1 + src/assets/icons/nested.svg | 1 + src/assets/icons/password.svg | 1 + src/assets/icons/pdf.svg | 1 + src/assets/icons/people.svg | 1 + src/assets/icons/peoples.svg | 1 + src/assets/icons/qq.svg | 1 + src/assets/icons/refresh.svg | 1 + src/assets/icons/right.svg | 1 + src/assets/icons/rotate.svg | 1 + src/assets/icons/scaleX.svg | 1 + src/assets/icons/scaleY.svg | 1 + src/assets/icons/search.svg | 1 + src/assets/icons/shopping.svg | 1 + src/assets/icons/shrink.svg | 1 + src/assets/icons/size.svg | 1 + src/assets/icons/star.svg | 1 + src/assets/icons/sure.svg | 1 + src/assets/icons/tab.svg | 1 + src/assets/icons/table.svg | 1 + src/assets/icons/theme.svg | 1 + src/assets/icons/top.svg | 1 + src/assets/icons/tree.svg | 1 + src/assets/icons/user.svg | 1 + src/assets/icons/wechat.svg | 1 + src/assets/icons/zip.svg | 1 + src/assets/img/404.png | Bin 0 -> 98071 bytes src/assets/img/404_cloud.png | Bin 0 -> 4766 bytes src/assets/img/avatar.gif | Bin 0 -> 6334 bytes src/assets/img/default-avatar.png | Bin 0 -> 4097 bytes src/assets/img/login-bg.jpg | Bin 0 -> 460261 bytes src/assets/img/logo.png | Bin 0 -> 2187 bytes src/axios-config/config.ts | 50 + src/axios-config/index.ts | 32 + src/axios-config/request.ts | 70 + src/components/Error/404.vue | 246 + src/components/HelloWorld.vue | 52 - src/components/Message/index.ts | 23 + src/components/ParentView/index.vue | 16 + src/components/ParentView/useCache.ts | 55 + src/components/Redirect/index.vue | 16 + src/components/SvgIcon/index.vue | 41 + src/components/index.ts | 6 + src/env.d.ts | 8 +- src/global.d.ts | 20 + src/hooks/event/useScrollTo.ts | 61 + src/hooks/web/useCache.ts | 17 + src/hooks/web/useClipboard.ts | 31 + src/hooks/web/useFullscreen.ts | 9 + src/hooks/web/useIntro.ts | 10 + src/hooks/web/useTitle.ts | 20 + src/hooks/web/useWatermark.ts | 55 + src/hooks/work/useWork.ts | 235 + src/layout/components/AppMain/index.vue | 22 + src/layout/components/Backtop/index.vue | 7 + .../components/Breadcrumb/Breadcrumb.vue | 87 + .../components/Breadcrumb/BreadcrumbItem.vue | 42 + src/layout/components/Breadcrumb/index.vue | 108 + src/layout/components/Hamburger/index.vue | 46 + src/layout/components/Logo/index.vue | 85 + src/layout/components/MenuTab/index.vue | 113 + src/layout/components/Screenfull/index.vue | 53 + src/layout/components/Setting/index.vue | 262 + src/layout/components/Sider/Item.vue | 29 + src/layout/components/Sider/SiderItem.vue | 121 + src/layout/components/Sider/index.vue | 127 + src/layout/components/TagsView/ScrollPane.vue | 115 + src/layout/components/TagsView/index.vue | 392 ++ src/layout/components/UserInfo/index.vue | 70 + src/layout/index.vue | 30 + src/layout/modules/Classic.vue | 117 + src/layout/modules/LeftTop.vue | 125 + src/layout/modules/Top.vue | 106 + src/layout/modules/style.less | 338 + src/main.ts | 28 +- src/mock/example/index.ts | 131 + src/mock/index.ts | 64 + src/mock/role/admin-role.ts | 668 ++ src/mock/role/index.ts | 100 + src/mock/role/test-role.ts | 500 ++ src/mock/user/index.ts | 71 + src/permission.ts | 50 + src/router/index.ts | 662 ++ src/router/types.ts | 21 + src/router/utils.ts | 27 + src/store/index.ts | 10 + src/store/modules/app.ts | 155 + src/store/modules/permission.ts | 179 + src/store/modules/tags-view.ts | 204 + src/styles/index.less | 4 + src/styles/reset.css | 147 + src/styles/sidebar.less | 274 + src/styles/transition.less | 32 + src/styles/var.less | 54 + src/styles/variables.less | 0 src/utils/animation.ts | 51 + src/utils/dom-uitls.ts | 289 + src/utils/form-rules.ts | 90 + src/utils/index.ts | 208 + src/utils/responsive.ts | 110 + src/utils/validate.ts | 84 + src/views/dashboard/index.vue | 5 + src/views/login/api.ts | 9 + src/views/login/index.vue | 206 + stylelint.config.js | 210 + tsconfig.json | 19 +- vite.config.ts | 63 +- yarn.lock | 6187 ++++++++++++++++- 165 files changed, 15146 insertions(+), 145 deletions(-) create mode 100644 .editorconfig create mode 100644 .env.base create mode 100644 .env.dev create mode 100644 .env.pro create mode 100644 .env.test create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .husky/.gitignore create mode 100644 .husky/commit-msg create mode 100644 .husky/common.sh create mode 100644 .husky/lintstagedrc.js create mode 100644 .husky/pre-commit create mode 100644 .postcssrc.js create mode 100644 .prettierignore create mode 100644 .prettierrc.js create mode 100644 .stylelintignore create mode 100644 commitlint.config.js create mode 100644 public/logo.png create mode 100644 src/assets/icons/404.svg create mode 100644 src/assets/icons/UI.svg create mode 100644 src/assets/icons/bottom.svg create mode 100644 src/assets/icons/bug.svg create mode 100644 src/assets/icons/chart.svg create mode 100644 src/assets/icons/clipboard.svg create mode 100644 src/assets/icons/close.svg create mode 100644 src/assets/icons/component.svg create mode 100644 src/assets/icons/dashboard.svg create mode 100644 src/assets/icons/documentation.svg create mode 100644 src/assets/icons/drag.svg create mode 100644 src/assets/icons/edit.svg create mode 100644 src/assets/icons/email.svg create mode 100644 src/assets/icons/example.svg create mode 100644 src/assets/icons/excel.svg create mode 100644 src/assets/icons/exit-fullscreen.svg create mode 100644 src/assets/icons/eye-open.svg create mode 100644 src/assets/icons/eye.svg create mode 100644 src/assets/icons/form.svg create mode 100644 src/assets/icons/fullscreen.svg create mode 100644 src/assets/icons/guide.svg create mode 100644 src/assets/icons/icon.svg create mode 100644 src/assets/icons/international.svg create mode 100644 src/assets/icons/language.svg create mode 100644 src/assets/icons/layout-classic.svg create mode 100644 src/assets/icons/layout-top.svg create mode 100644 src/assets/icons/layout-topLeft.svg create mode 100644 src/assets/icons/left.svg create mode 100644 src/assets/icons/link.svg create mode 100644 src/assets/icons/list.svg create mode 100644 src/assets/icons/lock.svg create mode 100644 src/assets/icons/magnify.svg create mode 100644 src/assets/icons/message.svg create mode 100644 src/assets/icons/money.svg create mode 100644 src/assets/icons/nested.svg create mode 100644 src/assets/icons/password.svg create mode 100644 src/assets/icons/pdf.svg create mode 100644 src/assets/icons/people.svg create mode 100644 src/assets/icons/peoples.svg create mode 100644 src/assets/icons/qq.svg create mode 100644 src/assets/icons/refresh.svg create mode 100644 src/assets/icons/right.svg create mode 100644 src/assets/icons/rotate.svg create mode 100644 src/assets/icons/scaleX.svg create mode 100644 src/assets/icons/scaleY.svg create mode 100644 src/assets/icons/search.svg create mode 100644 src/assets/icons/shopping.svg create mode 100644 src/assets/icons/shrink.svg create mode 100644 src/assets/icons/size.svg create mode 100644 src/assets/icons/star.svg create mode 100644 src/assets/icons/sure.svg create mode 100644 src/assets/icons/tab.svg create mode 100644 src/assets/icons/table.svg create mode 100644 src/assets/icons/theme.svg create mode 100644 src/assets/icons/top.svg create mode 100644 src/assets/icons/tree.svg create mode 100644 src/assets/icons/user.svg create mode 100644 src/assets/icons/wechat.svg create mode 100644 src/assets/icons/zip.svg create mode 100644 src/assets/img/404.png create mode 100644 src/assets/img/404_cloud.png create mode 100644 src/assets/img/avatar.gif create mode 100644 src/assets/img/default-avatar.png create mode 100644 src/assets/img/login-bg.jpg create mode 100644 src/assets/img/logo.png create mode 100644 src/axios-config/config.ts create mode 100644 src/axios-config/index.ts create mode 100644 src/axios-config/request.ts create mode 100644 src/components/Error/404.vue delete mode 100644 src/components/HelloWorld.vue create mode 100644 src/components/Message/index.ts create mode 100644 src/components/ParentView/index.vue create mode 100644 src/components/ParentView/useCache.ts create mode 100644 src/components/Redirect/index.vue create mode 100644 src/components/SvgIcon/index.vue create mode 100644 src/components/index.ts create mode 100644 src/global.d.ts create mode 100644 src/hooks/event/useScrollTo.ts create mode 100644 src/hooks/web/useCache.ts create mode 100644 src/hooks/web/useClipboard.ts create mode 100644 src/hooks/web/useFullscreen.ts create mode 100644 src/hooks/web/useIntro.ts create mode 100644 src/hooks/web/useTitle.ts create mode 100644 src/hooks/web/useWatermark.ts create mode 100644 src/hooks/work/useWork.ts create mode 100644 src/layout/components/AppMain/index.vue create mode 100644 src/layout/components/Backtop/index.vue create mode 100644 src/layout/components/Breadcrumb/Breadcrumb.vue create mode 100644 src/layout/components/Breadcrumb/BreadcrumbItem.vue create mode 100644 src/layout/components/Breadcrumb/index.vue create mode 100644 src/layout/components/Hamburger/index.vue create mode 100644 src/layout/components/Logo/index.vue create mode 100644 src/layout/components/MenuTab/index.vue create mode 100644 src/layout/components/Screenfull/index.vue create mode 100644 src/layout/components/Setting/index.vue create mode 100644 src/layout/components/Sider/Item.vue create mode 100644 src/layout/components/Sider/SiderItem.vue create mode 100644 src/layout/components/Sider/index.vue create mode 100644 src/layout/components/TagsView/ScrollPane.vue create mode 100644 src/layout/components/TagsView/index.vue create mode 100644 src/layout/components/UserInfo/index.vue create mode 100644 src/layout/index.vue create mode 100644 src/layout/modules/Classic.vue create mode 100644 src/layout/modules/LeftTop.vue create mode 100644 src/layout/modules/Top.vue create mode 100644 src/layout/modules/style.less create mode 100644 src/mock/example/index.ts create mode 100644 src/mock/index.ts create mode 100644 src/mock/role/admin-role.ts create mode 100644 src/mock/role/index.ts create mode 100644 src/mock/role/test-role.ts create mode 100644 src/mock/user/index.ts create mode 100644 src/permission.ts create mode 100644 src/router/index.ts create mode 100644 src/router/types.ts create mode 100644 src/router/utils.ts create mode 100644 src/store/index.ts create mode 100644 src/store/modules/app.ts create mode 100644 src/store/modules/permission.ts create mode 100644 src/store/modules/tags-view.ts create mode 100644 src/styles/index.less create mode 100644 src/styles/reset.css create mode 100644 src/styles/sidebar.less create mode 100644 src/styles/transition.less create mode 100644 src/styles/var.less create mode 100644 src/styles/variables.less create mode 100644 src/utils/animation.ts create mode 100644 src/utils/dom-uitls.ts create mode 100644 src/utils/form-rules.ts create mode 100644 src/utils/index.ts create mode 100644 src/utils/responsive.ts create mode 100644 src/utils/validate.ts create mode 100644 src/views/dashboard/index.vue create mode 100644 src/views/login/api.ts create mode 100644 src/views/login/index.vue create mode 100644 stylelint.config.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..9d08a1a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.env.base b/.env.base new file mode 100644 index 0000000..e23386c --- /dev/null +++ b/.env.base @@ -0,0 +1,2 @@ +NODE_ENV=development +VITE_API_BASEPATH='base' \ No newline at end of file diff --git a/.env.dev b/.env.dev new file mode 100644 index 0000000..1045aa3 --- /dev/null +++ b/.env.dev @@ -0,0 +1,2 @@ +NODE_ENV=production +VITE_API_BASEPATH='dev' \ No newline at end of file diff --git a/.env.pro b/.env.pro new file mode 100644 index 0000000..3106ea5 --- /dev/null +++ b/.env.pro @@ -0,0 +1,2 @@ +NODE_ENV=production +VITE_API_BASEPATH='pro' \ No newline at end of file diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..11d2241 --- /dev/null +++ b/.env.test @@ -0,0 +1,2 @@ +NODE_ENV=production +VITE_API_BASEPATH='test' \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..6a5a795 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,7 @@ +/build/ +/config/ +/dist/ +/*.js +/*.d.ts +/test/unit/coverage/ +/node_modules/* diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..dadd082 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,322 @@ +// @ts-check +const { defineConfig } = require('eslint-define-config') +module.exports = defineConfig({ + root: true, + env: { + browser: true, + node: true, + es6: true + }, + parser: 'vue-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser', + ecmaVersion: 2020, + sourceType: 'module', + jsxPragma: 'React', + ecmaFeatures: { + jsx: true + } + }, + extends: [ + 'plugin:vue/vue3-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + 'plugin:prettier/recommended', + 'plugin:jest/recommended' + ], + rules: { + '@typescript-eslint/ban-ts-ignore': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-empty-function': 'off', + 'vue/custom-event-name-casing': 'off', + 'no-use-before-define': 'off', + // 'no-use-before-define': [ + // 'error', + // { + // functions: false, + // classes: true, + // }, + // ], + '@typescript-eslint/no-use-before-define': 'off', + // '@typescript-eslint/no-use-before-define': [ + // 'error', + // { + // functions: false, + // classes: true, + // }, + // ], + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-unused-vars': [2], + '@typescript-eslint/no-extra-semi': 'off', + 'no-unused-vars': [2], + 'prefer-rest-params': 'off', + 'prefer-spread': 'off', + 'space-before-function-paren': 'off', + 'vue/html-indent': 'off', + 'vue/html-self-closing': [ + 'error', + { + html: { + void: 'always', + normal: 'never', + component: 'always' + }, + svg: 'always', + math: 'always' + } + ], + 'vue/max-attributes-per-line': [ + 2, + { + singleline: 10, + multiline: { + max: 1, + allowFirstLine: false + } + } + ], + 'vue/singleline-html-element-content-newline': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/name-property-casing': ['error', 'PascalCase'], + 'vue/no-v-html': 'off', + 'accessor-pairs': 2, + 'jsx-quotes': ['error', 'prefer-double'], + 'arrow-spacing': [ + 2, + { + before: true, + after: true + } + ], + 'block-spacing': [2, 'always'], + 'brace-style': [ + 2, + '1tbs', + { + allowSingleLine: true + } + ], + camelcase: [ + 0, + { + properties: 'always' + } + ], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [ + 2, + { + before: false, + after: true + } + ], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + curly: [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + eqeqeq: [ + 'error', + 'always', + { + null: 'ignore' + } + ], + 'generator-star-spacing': [ + 2, + { + before: true, + after: true + } + ], + 'handle-callback-err': [2, '^(err|error)$'], + indent: [ + 'off', + 2, + { + SwitchCase: 1 + } + ], + 'key-spacing': [ + 2, + { + beforeColon: false, + afterColon: true + } + ], + 'keyword-spacing': [ + 2, + { + before: true, + after: true + } + ], + 'new-cap': [ + 2, + { + newIsCap: true, + capIsNew: false + } + ], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [ + 2, + { + allowLoop: false, + allowSwitch: false + } + ], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [ + 2, + { + max: 1 + } + ], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 0, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [ + 2, + { + defaultAssignment: false + } + ], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-useless-call': 'off', + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [ + 2, + { + initialized: 'never' + } + ], + 'operator-linebreak': [ + 2, + 'after', + { + overrides: { + '?': 'before', + ':': 'before' + } + } + ], + 'padded-blocks': [2, 'never'], + quotes: [ + 2, + 'single', + { + avoidEscape: true, + allowTemplateLiterals: true + } + ], + semi: [2, 'never'], + 'semi-spacing': [ + 2, + { + before: false, + after: true + } + ], + 'space-before-blocks': [2, 'always'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [ + 2, + { + words: true, + nonwords: false + } + ], + 'spaced-comment': [ + 2, + 'always', + { + markers: ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] + } + ], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + yoda: [2, 'never'], + 'prefer-const': 2, + 'no-debugger': 0, + 'object-curly-spacing': [ + 2, + 'always', + { + objectsInObjects: false + } + ], + 'array-bracket-spacing': [2, 'never'], + 'vue/no-use-v-if-with-v-for': 'off' + } +}) diff --git a/.gitignore b/.gitignore index d451ff1..227d10b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules dist dist-ssr *.local +components.d.ts diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 0000000..31354ec --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 0000000..44c73fd --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +yarn commitlint --edit "$1" diff --git a/.husky/common.sh b/.husky/common.sh new file mode 100644 index 0000000..9d5129b --- /dev/null +++ b/.husky/common.sh @@ -0,0 +1,9 @@ +#!/bin/sh +command_exists () { + command -v "$1" >/dev/null 2>&1 +} + +# Workaround for Windows 10, Git Bash and Yarn +if command_exists winpty && test -t 1; then + exec < /dev/tty +fi diff --git a/.husky/lintstagedrc.js b/.husky/lintstagedrc.js new file mode 100644 index 0000000..2cff139 --- /dev/null +++ b/.husky/lintstagedrc.js @@ -0,0 +1,8 @@ +module.exports = { + '*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'], + '{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': ['prettier --write--parser json'], + 'package.json': ['prettier --write'], + '*.vue': ['prettier --write', 'stylelint --fix'], + '*.{scss,less,styl,css,html}': ['stylelint --fix', 'prettier --write'], + '*.md': ['prettier --write'] +} diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..c7d15f2 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,10 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" +. "$(dirname "$0")/common.sh" + +[ -n "$CI" ] && exit 0 + +# Format and submit code according to lintstagedrc.js configuration +npm run lint:lint-staged + +npm run lint:pretty diff --git a/.postcssrc.js b/.postcssrc.js new file mode 100644 index 0000000..8d55f64 --- /dev/null +++ b/.postcssrc.js @@ -0,0 +1,8 @@ +// https://github.com/michael-ciniawsky/postcss-load-config + +module.exports = { + plugins: { + // to edit target browsers: use "browserslist" field in package.json + autoprefixer: {} + } +} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..c7fc53c --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +/node_modules/** +/dist/ +/dist* +/public/* +/docs/* +/vite.config.ts +/src/env.d.ts \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..c3eeecd --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,19 @@ +module.exports = { + printWidth: 100, + tabWidth: 2, + useTabs: false, + semi: false, + vueIndentScriptAndStyle: false, + singleQuote: true, + quoteProps: 'as-needed', + bracketSpacing: true, + trailingComma: 'none', + jsxSingleQuote: false, + arrowParens: 'always', + insertPragma: false, + requirePragma: false, + proseWrap: 'never', + htmlWhitespaceSensitivity: 'strict', + endOfLine: 'lf', + rangeStart: 0 +} diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000..9102993 --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,4 @@ +/dist/* +/public/* +public/* +/dist* diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..a97eb25 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,29 @@ +module.exports = { + extends: ['@commitlint/config-conventional'], + rules: { + 'type-enum': [ + 2, + 'always', + [ + 'feat', // 新功能(feature) + 'fix', // 修补bug + 'docs', // 文档(documentation) + 'style', // 格式、样式(不影响代码运行的变动) + 'refactor', // 重构(即不是新增功能,也不是修改BUG的代码) + 'perf', // 优化相关,比如提升性能、体验 + 'test', // 添加测试 + 'build', // 编译相关的修改,对项目构建或者依赖的改动 + 'ci', // 持续集成修改 + 'chore', // 构建过程或辅助工具的变动 + 'revert', // 回滚到上一个版本 + 'workflow', // 工作流改进 + 'mod', // 不确定分类的修改 + 'wip', // 开发中 + 'types', // 类型修改 + 'release' // 版本发布 + ] + ], + 'subject-full-stop': [0, 'never'], + 'subject-case': [0, 'never'] + } +} diff --git a/components.d.ts b/components.d.ts index 06ce378..675a22d 100644 --- a/components.d.ts +++ b/components.d.ts @@ -4,11 +4,30 @@ declare module 'vue' { export interface GlobalComponents { + 404: typeof import('C:/Users/Saber/Documents/HBuilderProjects/vue-element-plus-admin/src/components/Error/404.vue')['default'] + ElBacktop: typeof import('element-plus/es')['ElBacktop'] ElButton: typeof import('element-plus/es')['ElButton'] - ElLink: typeof import('element-plus/es')['ElLink'] - ElTag: typeof import('element-plus/es')['ElTag'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] HelloWorld: typeof import('C:/Users/Saber/Documents/HBuilderProjects/vue-element-plus-admin/src/components/HelloWorld.vue')['default'] + ParentView: typeof import('C:/Users/Saber/Documents/HBuilderProjects/vue-element-plus-admin/src/components/ParentView/index.vue')['default'] + Redirect: typeof import('C:/Users/Saber/Documents/HBuilderProjects/vue-element-plus-admin/src/components/Redirect/index.vue')['default'] + SvgIcon: typeof import('C:/Users/Saber/Documents/HBuilderProjects/vue-element-plus-admin/src/components/SvgIcon/index.vue')['default'] } } -export { } +export {} diff --git a/index.html b/index.html index 11603f8..2be74d8 100644 --- a/index.html +++ b/index.html @@ -4,10 +4,139 @@ -