Bladeren bron

Merge pull request #109 from handongccc/main

feat(commitlintrc): 优化git提交方式|修改文件折叠显示
菲鸽 1 jaar geleden
bovenliggende
commit
931c4a3bc6
4 gewijzigde bestanden met toevoegingen van 123 en 53 verwijderingen
  1. 106 0
      .commitlintrc.cjs
  2. 14 1
      .vscode/settings.json
  3. 0 51
      commitlint.config.cjs
  4. 3 1
      package.json

+ 106 - 0
.commitlintrc.cjs

@@ -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:     自定义',
+  },
+}

+ 14 - 1
.vscode/settings.json

@@ -48,5 +48,18 @@
     "uvui",
     "WechatMiniprogram"
   ],
-  "typescript.tsdk": "node_modules\\typescript\\lib"
+  "typescript.tsdk": "node_modules\\typescript\\lib",
+  // 控制相关文件嵌套展示
+  "explorer.fileNesting.enabled": true,
+  "explorer.fileNesting.expand": false,
+  "explorer.fileNesting.patterns": {
+    "*.ts": "$(capture).test.ts, $(capture).test.tsx",
+    "*.tsx": "$(capture).test.ts, $(capture).test.tsx",
+    "*.env": "$(capture).env.*",
+    "CHANGELOG.md": "CHANGELOG*",
+    "package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,LICENSE,.gitattributes,.gitignore,.gitpod.yml,CNAME,README*,.npmrc,.browserslistrc",
+    ".eslintrc.cjs": ".eslintignore,.prettierignore,.stylelintignore,.commitlintrc.*,.prettierrc.*,.stylelintrc.*,.eslintrc-auto-import.json,.editorconfig,.commitlint.cjs",
+    "vite.config.ts": "tsconfig.*.json,uno.config.ts,tsconfig.json,uni-pages.d.ts",
+    "manifest.config.ts": "manifest.config.ts,pages.config.ts"
+  }
 }

+ 0 - 51
commitlint.config.cjs

@@ -1,51 +0,0 @@
-// commitlint.config.cjs
-
-module.exports = {
-  extends: ['@commitlint/config-conventional'],
-  rules: {
-    // 'body-leading-blank': [2, 'always'], // 主体前有空行,默认就是 always
-    // 'footer-leading-blank': [2, 'always'], // 末行前有空行,默认就是 always
-    // 'header-max-length': [2, 'always', 108], // 首行最大长度,默认就是 always,72
-    // 'subject-empty': [2, 'never'], // 标题不可为空,默认就是 never
-    // 'type-empty': [2, 'never'], // 类型不可为空,默认就是 never
-
-    // 允许的类型
-    'type-enum': [
-      2,
-      'always',
-      [
-        'build', // 构造工具、外部依赖(webpack、npm)
-        'chore', // 不涉及 src、test 的其他修改(构建过程或辅助工具的变更)
-        'ci', // 修改项目继续集成流程(Travis,Jenkins,GitLab CI,Circle等)
-        'docs', // 文档
-        'feat', // 新增功能
-        'fix', // bug 修复
-        'perf', // 性能优化
-        'refactor', // 重构
-        'revert', // 回退
-        'style', // 代码风格(不影响代码含义)
-        'test', // 测试
-
-        // 下面几个是自定义新增的
-        'wip', // 开发中
-        'refine', // 小优化,没有到 refactor 的程度
-      ],
-    ],
-  },
-}
-
-// @see https://commitlint.js.org/#/reference-rules?id=type-enum
-// 默认值为:
-// [
-//   'build',
-//   'chore',
-//   'ci',
-//   'docs',
-//   'feat',
-//   'fix',
-//   'perf',
-//   'refactor',
-//   'revert',
-//   'style',
-//   'test',
-// ];

+ 3 - 1
package.json

@@ -62,7 +62,8 @@
     "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"
+    "type-check": "vue-tsc --noEmit",
+    "cz": "czg"
   },
   "lint-staged": {
     "**/*.{html,vue,ts,cjs,json,md}": [
@@ -93,6 +94,7 @@
     "@dcloudio/uni-mp-weixin": "3.0.0-4010420240430001",
     "@dcloudio/uni-mp-xhs": "3.0.0-4010420240430001",
     "@dcloudio/uni-quickapp-webview": "3.0.0-4010420240430001",
+    "czg": "^1.9.2",
     "dayjs": "1.11.10",
     "pinia": "2.0.36",
     "pinia-plugin-persistedstate": "3.2.1",