create-bubbles 0.0.11 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/index.js +3 -3
  2. package/package.json +41 -38
  3. package/template-react-rsbuild/.env +2 -2
  4. package/template-react-rsbuild/.gitignore +7 -0
  5. package/template-react-rsbuild/.npmrc +1 -0
  6. package/template-react-rsbuild/.prettierignore +33 -33
  7. package/template-react-rsbuild/.prettierrc +17 -17
  8. package/template-react-rsbuild/.vscode/settings.json +21 -0
  9. package/template-react-rsbuild/README.md +29 -29
  10. package/template-react-rsbuild/biome.json +102 -102
  11. package/template-react-rsbuild/commitlint.config.js +1 -1
  12. package/template-react-rsbuild/index.html +6 -6
  13. package/template-react-rsbuild/lefthook.yml +14 -14
  14. package/template-react-rsbuild/package.json +40 -39
  15. package/template-react-rsbuild/rsbuild.config.ts +34 -28
  16. package/template-react-rsbuild/src/App.tsx +9 -9
  17. package/template-react-rsbuild/src/components/Loading/PageLoading.tsx +11 -11
  18. package/template-react-rsbuild/src/env.d.ts +1 -1
  19. package/template-react-rsbuild/src/index.tsx +20 -20
  20. package/template-react-rsbuild/src/pages/home/index.tsx +5 -26
  21. package/template-react-rsbuild/src/router/index.tsx +27 -27
  22. package/template-react-rsbuild/src/store/modules/user.ts +11 -11
  23. package/template-react-rsbuild/src/styles/index.css +16 -16
  24. package/template-react-rsbuild/src/types/auto-import.d.ts +47 -47
  25. package/template-react-rsbuild/src/utils/request/axios.ts +82 -82
  26. package/template-react-rsbuild/src/utils/request/index.ts +77 -77
  27. package/template-react-rsbuild/tsconfig.json +29 -29
  28. package/template-react-rsbuild/uno.config.ts +8 -8
  29. package/template-vue-rsbuild/.env +2 -2
  30. package/template-vue-rsbuild/.gitignore +10 -0
  31. package/template-vue-rsbuild/.npmrc +1 -0
  32. package/template-vue-rsbuild/.prettierignore +4 -4
  33. package/template-vue-rsbuild/.prettierrc +18 -17
  34. package/template-vue-rsbuild/.vscode/settings.json +7 -0
  35. package/template-vue-rsbuild/README.md +29 -29
  36. package/template-vue-rsbuild/biome.json +102 -113
  37. package/template-vue-rsbuild/index.html +6 -6
  38. package/template-vue-rsbuild/lefthook.yml +11 -0
  39. package/template-vue-rsbuild/package.json +32 -31
  40. package/template-vue-rsbuild/rsbuild.config.ts +35 -28
  41. package/template-vue-rsbuild/src/App.vue +3 -29
  42. package/template-vue-rsbuild/src/index.ts +15 -15
  43. package/template-vue-rsbuild/src/router/modules/index.tsx +2 -2
  44. package/template-vue-rsbuild/src/store/index.ts +7 -7
  45. package/template-vue-rsbuild/src/store/modules/user.ts +16 -16
  46. package/template-vue-rsbuild/src/styles/index.css +16 -16
  47. package/template-vue-rsbuild/src/types/auto-import.d.ts +91 -91
  48. package/template-vue-rsbuild/src/types/env.d.ts +17 -0
  49. package/template-vue-rsbuild/src/utils/request/axios.ts +83 -83
  50. package/template-vue-rsbuild/src/utils/request/index.ts +77 -77
  51. package/template-vue-rsbuild/src/views/home/index.vue +11 -13
  52. package/template-vue-rsbuild/tsconfig.json +29 -29
  53. package/template-vue-rsbuild/uno.config.ts +9 -9
  54. package/template-vue-rsbuild-eslint/.env +3 -0
  55. package/template-vue-rsbuild-eslint/.gitignore +13 -0
  56. package/template-vue-rsbuild-eslint/.prettierignore +4 -0
  57. package/template-vue-rsbuild-eslint/.prettierrc +17 -0
  58. package/{template-vue-rsbuild → template-vue-rsbuild-eslint}/.vscode/extensions.json +3 -3
  59. package/template-vue-rsbuild-eslint/README.md +29 -0
  60. package/template-vue-rsbuild-eslint/biome.json +110 -0
  61. package/template-vue-rsbuild-eslint/index.html +7 -0
  62. package/template-vue-rsbuild-eslint/package.json +31 -0
  63. package/template-vue-rsbuild-eslint/postcss.config.mjs +5 -0
  64. package/template-vue-rsbuild-eslint/public/.gitkeep +0 -0
  65. package/template-vue-rsbuild-eslint/rsbuild.config.ts +28 -0
  66. package/template-vue-rsbuild-eslint/src/App.vue +29 -0
  67. package/{template-vue-rsbuild → template-vue-rsbuild-eslint}/src/env.d.ts +5 -5
  68. package/{template-vue-rsbuild → template-vue-rsbuild-eslint}/src/index.css +6 -6
  69. package/template-vue-rsbuild-eslint/src/index.ts +15 -0
  70. package/template-vue-rsbuild-eslint/src/router/guard/index.tsx +6 -0
  71. package/template-vue-rsbuild-eslint/src/router/guard/permissionGuard.ts +8 -0
  72. package/template-vue-rsbuild-eslint/src/router/index.tsx +14 -0
  73. package/template-vue-rsbuild-eslint/src/router/modules/index.tsx +10 -0
  74. package/template-vue-rsbuild-eslint/src/store/index.ts +7 -0
  75. package/template-vue-rsbuild-eslint/src/store/modules/user.ts +16 -0
  76. package/template-vue-rsbuild-eslint/src/styles/index.css +16 -0
  77. package/template-vue-rsbuild-eslint/src/types/auto-import.d.ts +91 -0
  78. package/template-vue-rsbuild-eslint/src/utils/request/axios.ts +83 -0
  79. package/template-vue-rsbuild-eslint/src/utils/request/index.ts +77 -0
  80. package/template-vue-rsbuild-eslint/src/views/home/index.vue +13 -0
  81. package/template-vue-rsbuild-eslint/tsconfig.json +29 -0
  82. package/template-vue-rsbuild-eslint/uno.config.ts +9 -0
  83. package/template-react-rsbuild/postcss.config.mjs +0 -5
  84. package/template-vue-rsbuild/postcss.config.mjs +0 -5
  85. /package/{template-react-rsbuild/index.en-US.md → template-vue-rsbuild-eslint/.env.development} +0 -0
  86. /package/{template-react-rsbuild/index.zh-CN.md → template-vue-rsbuild-eslint/.env.production} +0 -0
@@ -1,77 +1,77 @@
1
- import type { AxiosRequestConfig } from 'axios'
2
-
3
- import request, { type CustomConfig } from './axios'
4
-
5
- interface createAxiosType {
6
- get: <T = any>(
7
- config: {
8
- url: string
9
- params?: AxiosRequestConfig['params']
10
- config?: AxiosRequestConfig<any>
11
- },
12
- option?: CustomConfig,
13
- ) => Promise<T>
14
- post: <T = any>(
15
- config: {
16
- url: string
17
- data?: AxiosRequestConfig['data']
18
- params?: AxiosRequestConfig['params']
19
- config?: AxiosRequestConfig<any>
20
- },
21
- option?: CustomConfig,
22
- ) => Promise<T>
23
- put: <T = any>(
24
- config: {
25
- url: string
26
- data?: AxiosRequestConfig['data']
27
- config?: AxiosRequestConfig<any>
28
- },
29
- option?: CustomConfig,
30
- ) => Promise<T>
31
- delete: <T = any>(
32
- config: {
33
- url: string
34
- data?: AxiosRequestConfig['data']
35
- config?: AxiosRequestConfig<any>
36
- },
37
- option?: CustomConfig,
38
- ) => Promise<T>
39
- }
40
-
41
- const createAxios: createAxiosType = {
42
- get: (config, option) =>
43
- request(option).get(config.url, {
44
- params: config.params,
45
- ...config?.config,
46
- }),
47
- post: (
48
- config: {
49
- url: string
50
- params?: Record<string, string>
51
- data?: any
52
- config?: AxiosRequestConfig<any>
53
- },
54
- option?: CustomConfig,
55
- ) => {
56
- let url = config.url
57
- if (config.params instanceof Object) {
58
- url += '?'
59
- const entries = Object.entries(config.params)
60
- for (let i = 0; i < entries.length; i++) {
61
- const [key, value] = entries[i]
62
- url += `${key}=${value}${i < entries.length - 1 ? '&' : ''}`
63
- }
64
- }
65
- return request(option).post(url, config?.data, config?.config)
66
- },
67
- put: (
68
- config: { url: string; data?: any; config?: AxiosRequestConfig<any> },
69
- option?: CustomConfig,
70
- ) => request(option).put(config.url, config?.data, config?.config),
71
- delete: (
72
- config: { url: string; config?: AxiosRequestConfig<any> },
73
- customConfig?: CustomConfig,
74
- ) => request(customConfig).delete(config.url, config?.config),
75
- }
76
-
77
- export default createAxios
1
+ import type { AxiosRequestConfig } from 'axios'
2
+
3
+ import request, { type CustomConfig } from './axios'
4
+
5
+ interface createAxiosType {
6
+ get: <T = any>(
7
+ config: {
8
+ url: string
9
+ params?: AxiosRequestConfig['params']
10
+ config?: AxiosRequestConfig<any>
11
+ },
12
+ option?: CustomConfig,
13
+ ) => Promise<T>
14
+ post: <T = any>(
15
+ config: {
16
+ url: string
17
+ data?: AxiosRequestConfig['data']
18
+ params?: AxiosRequestConfig['params']
19
+ config?: AxiosRequestConfig<any>
20
+ },
21
+ option?: CustomConfig,
22
+ ) => Promise<T>
23
+ put: <T = any>(
24
+ config: {
25
+ url: string
26
+ data?: AxiosRequestConfig['data']
27
+ config?: AxiosRequestConfig<any>
28
+ },
29
+ option?: CustomConfig,
30
+ ) => Promise<T>
31
+ delete: <T = any>(
32
+ config: {
33
+ url: string
34
+ data?: AxiosRequestConfig['data']
35
+ config?: AxiosRequestConfig<any>
36
+ },
37
+ option?: CustomConfig,
38
+ ) => Promise<T>
39
+ }
40
+
41
+ const createAxios: createAxiosType = {
42
+ get: (config, option) =>
43
+ request(option).get(config.url, {
44
+ params: config.params,
45
+ ...config?.config,
46
+ }),
47
+ post: (
48
+ config: {
49
+ url: string
50
+ params?: Record<string, string>
51
+ data?: any
52
+ config?: AxiosRequestConfig<any>
53
+ },
54
+ option?: CustomConfig,
55
+ ) => {
56
+ let url = config.url
57
+ if (config.params instanceof Object) {
58
+ url += '?'
59
+ const entries = Object.entries(config.params)
60
+ for (let i = 0; i < entries.length; i++) {
61
+ const [key, value] = entries[i]
62
+ url += `${key}=${value}${i < entries.length - 1 ? '&' : ''}`
63
+ }
64
+ }
65
+ return request(option).post(url, config?.data, config?.config)
66
+ },
67
+ put: (
68
+ config: { url: string; data?: any; config?: AxiosRequestConfig<any> },
69
+ option?: CustomConfig,
70
+ ) => request(option).put(config.url, config?.data, config?.config),
71
+ delete: (
72
+ config: { url: string; config?: AxiosRequestConfig<any> },
73
+ customConfig?: CustomConfig,
74
+ ) => request(customConfig).delete(config.url, config?.config),
75
+ }
76
+
77
+ export default createAxios
@@ -1,29 +1,29 @@
1
- {
2
- "compilerOptions": {
3
- "lib": ["DOM", "ES2020"],
4
- "jsx": "react-jsx",
5
- "target": "ES2020",
6
- "noEmit": true,
7
- "skipLibCheck": true,
8
- "useDefineForClassFields": true,
9
-
10
- /* modules */
11
- "module": "ESNext",
12
- "isolatedModules": true,
13
- "resolveJsonModule": true,
14
- "moduleResolution": "Bundler",
15
- "allowImportingTsExtensions": true,
16
-
17
- /* type checking */
18
- "strict": true,
19
- "noUnusedLocals": true,
20
- "noUnusedParameters": true,
21
-
22
- "baseUrl": "./",
23
- "paths": {
24
- "@/*": ["src/*"]
25
- }
26
- },
27
- "include": ["src"],
28
- "exclude": ["node_modules", "dist"]
29
- }
1
+ {
2
+ "compilerOptions": {
3
+ "lib": ["DOM", "ES2020"],
4
+ "jsx": "react-jsx",
5
+ "target": "ES2020",
6
+ "noEmit": true,
7
+ "skipLibCheck": true,
8
+ "useDefineForClassFields": true,
9
+
10
+ /* modules */
11
+ "module": "ESNext",
12
+ "isolatedModules": true,
13
+ "resolveJsonModule": true,
14
+ "moduleResolution": "Bundler",
15
+ "allowImportingTsExtensions": true,
16
+
17
+ /* type checking */
18
+ "strict": true,
19
+ "noUnusedLocals": true,
20
+ "noUnusedParameters": true,
21
+
22
+ "baseUrl": "./",
23
+ "paths": {
24
+ "@/*": ["src/*"]
25
+ }
26
+ },
27
+ "include": ["src"],
28
+ "exclude": ["node_modules", "dist"]
29
+ }
@@ -1,8 +1,8 @@
1
- import { defineConfig, presetUno } from 'unocss';
2
-
3
- export default defineConfig({
4
- content: {
5
- filesystem: ['**/*.{html,js,ts,jsx,tsx,vue,svelte,astro}'],
6
- },
7
- presets: [presetUno()],
8
- });
1
+ import { defineConfig, presetWind3 } from 'unocss'
2
+
3
+ export default defineConfig({
4
+ content: {
5
+ filesystem: ['**/*.{html,js,ts,jsx,tsx,vue,svelte,astro}'],
6
+ },
7
+ presets: [presetWind3()],
8
+ })
@@ -1,3 +1,3 @@
1
- # port
2
- PUBLIC_PORT = 9200
1
+ # port
2
+ PUBLIC_PORT = 9200
3
3
  PUBLIC_PATH = '/'
@@ -0,0 +1,10 @@
1
+ node_modules
2
+ *.local
3
+ *.lock
4
+
5
+ # Build files
6
+ dist
7
+
8
+ # 压缩文件
9
+ *.rar
10
+ *.zip
@@ -0,0 +1 @@
1
+ registry=https://registry.npmmirror.com/
@@ -1,4 +1,4 @@
1
- # Lock files
2
- package-lock.json
3
- pnpm-lock.yaml
4
- yarn.lock
1
+ # Lock files
2
+ package-lock.json
3
+ pnpm-lock.yaml
4
+ yarn.lock
@@ -1,17 +1,18 @@
1
- {
2
- "singleQuote": true,
3
- "jsxSingleQuote": false,
4
- "trailingComma": "all",
5
- "printWidth": 100,
6
- "proseWrap": "never",
7
- "importOrder": ["^(vue|vue-router)$", "^([a-z]|@[a-z])", "", ".*"],
8
- "plugins": ["@ianvs/prettier-plugin-sort-imports"],
9
- "overrides": [
10
- {
11
- "files": ".prettierrc",
12
- "options": {
13
- "parser": "json"
14
- }
15
- }
16
- ]
17
- }
1
+ {
2
+ "singleQuote": true,
3
+ "jsxSingleQuote": false,
4
+ "trailingComma": "all",
5
+ "printWidth": 100,
6
+ "proseWrap": "never",
7
+ "semi": false,
8
+ "importOrder": ["^(vue|vue-router)$", "^([a-z]|@[a-z])", "", ".*"],
9
+ "plugins": ["@ianvs/prettier-plugin-sort-imports"],
10
+ "overrides": [
11
+ {
12
+ "files": ".prettierrc",
13
+ "options": {
14
+ "parser": "json"
15
+ }
16
+ }
17
+ ]
18
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "editor.formatOnSave": true,
3
+ "editor.defaultFormatter": "biomejs.biome",
4
+ "[vue]": {
5
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
6
+ }
7
+ }
@@ -1,29 +1,29 @@
1
- # Rsbuild project
2
-
3
- ## Setup
4
-
5
- Install the dependencies:
6
-
7
- ```bash
8
- pnpm install
9
- ```
10
-
11
- ## Get started
12
-
13
- Start the dev server:
14
-
15
- ```bash
16
- pnpm dev
17
- ```
18
-
19
- Build the app for production:
20
-
21
- ```bash
22
- pnpm build
23
- ```
24
-
25
- Preview the production build locally:
26
-
27
- ```bash
28
- pnpm preview
29
- ```
1
+ # Rsbuild project
2
+
3
+ ## Setup
4
+
5
+ Install the dependencies:
6
+
7
+ ```bash
8
+ pnpm install
9
+ ```
10
+
11
+ ## Get started
12
+
13
+ Start the dev server:
14
+
15
+ ```bash
16
+ pnpm dev
17
+ ```
18
+
19
+ Build the app for production:
20
+
21
+ ```bash
22
+ pnpm build
23
+ ```
24
+
25
+ Preview the production build locally:
26
+
27
+ ```bash
28
+ pnpm preview
29
+ ```
@@ -1,113 +1,102 @@
1
- {
2
- "files": {
3
- "ignoreUnknown": true,
4
- "ignore": [
5
- ".dumi/tmp*",
6
- ".dumi/scripts/clarity.js",
7
- "dist/*",
8
- "es/**/*",
9
- "lib/**/*",
10
- "_site/**/*",
11
- "node_modules",
12
- "server",
13
- "scripts/previewEditor/**/*",
14
- "package.json"
15
- ]
16
- },
17
- "formatter": {
18
- "enabled": true,
19
- "indentStyle": "space",
20
- "lineWidth": 100,
21
- "indentWidth": 2
22
- },
23
- "javascript": {
24
- "formatter": {
25
- "quoteStyle": "single",
26
- "semicolons": "asNeeded"
27
- }
28
- },
29
- "organizeImports": {
30
- "enabled": false
31
- },
32
- "linter": {
33
- "rules": {
34
- "style": {
35
- "useImportType": "off",
36
- "useNumberNamespace": "off",
37
- "useNodejsImportProtocol": "off",
38
- "noNonNullAssertion": "off",
39
- "noUnusedTemplateLiteral": "off"
40
- },
41
- "complexity": {
42
- "noUselessTypeConstraint": "off",
43
- "noForEach": "off"
44
- },
45
- "correctness": {
46
- "useExhaustiveDependencies": "off"
47
- },
48
- "suspicious": {
49
- "noGlobalIsNan": "off",
50
- "noGlobalIsFinite": "off",
51
- "noExplicitAny": "off",
52
- "noArrayIndexKey": "off",
53
- "noConfusingVoidType": "off",
54
- "noThenProperty": "off"
55
- },
56
- "performance": {
57
- "noDelete": "off",
58
- "noAccumulatingSpread": "off"
59
- },
60
- "a11y": {
61
- "noAriaHiddenOnFocusable": "off",
62
- "noLabelWithoutControl": "off",
63
- "useFocusableInteractive": "off",
64
- "useKeyWithClickEvents": "off",
65
- "useSemanticElements": "off"
66
- }
67
- }
68
- },
69
- "css": {
70
- "formatter": {
71
- "quoteStyle": "single"
72
- }
73
- },
74
- "overrides": [
75
- {
76
- "include": ["**/*.test.ts", "**/*.test.tsx", "tests/**/*", "scripts/**/*", ".dumi/**/*"],
77
- "linter": {
78
- "rules": {
79
- "style": {
80
- "noParameterAssign": "off"
81
- },
82
- "suspicious": {
83
- "noThenProperty": "off",
84
- "noImplicitAnyLet": "off"
85
- },
86
- "complexity": {
87
- "noUselessFragments": "off"
88
- },
89
- "a11y": {
90
- "useValidAnchor": "off",
91
- "useAnchorContent": "off",
92
- "useKeyWithClickEvents": "off"
93
- }
94
- }
95
- }
96
- },
97
- {
98
- "include": ["components/*/demo/*"],
99
- "linter": {
100
- "rules": {
101
- "correctness": {
102
- "noVoidTypeReturn": "off"
103
- },
104
- "a11y": {
105
- "useValidAnchor": "off",
106
- "useAnchorContent": "off",
107
- "useKeyWithClickEvents": "off"
108
- }
109
- }
110
- }
111
- }
112
- ]
113
- }
1
+ {
2
+ "files": {
3
+ "ignoreUnknown": true,
4
+ "ignore": ["dist/*", "node_modules", "package.json"]
5
+ },
6
+ "formatter": {
7
+ "enabled": true,
8
+ "indentStyle": "space",
9
+ "lineWidth": 100,
10
+ "indentWidth": 2
11
+ },
12
+ "javascript": {
13
+ "formatter": {
14
+ "quoteStyle": "single",
15
+ "semicolons": "asNeeded"
16
+ }
17
+ },
18
+ "organizeImports": {
19
+ "enabled": false
20
+ },
21
+ "linter": {
22
+ "rules": {
23
+ "style": {
24
+ "useImportType": "off",
25
+ "useNumberNamespace": "off",
26
+ "useNodejsImportProtocol": "off",
27
+ "noNonNullAssertion": "off",
28
+ "noUnusedTemplateLiteral": "off"
29
+ },
30
+ "complexity": {
31
+ "noUselessTypeConstraint": "off",
32
+ "noForEach": "off"
33
+ },
34
+ "correctness": {
35
+ "useExhaustiveDependencies": "off"
36
+ },
37
+ "suspicious": {
38
+ "noGlobalIsNan": "off",
39
+ "noGlobalIsFinite": "off",
40
+ "noExplicitAny": "off",
41
+ "noArrayIndexKey": "off",
42
+ "noConfusingVoidType": "off",
43
+ "noThenProperty": "off"
44
+ },
45
+ "performance": {
46
+ "noDelete": "off",
47
+ "noAccumulatingSpread": "off"
48
+ },
49
+ "a11y": {
50
+ "noAriaHiddenOnFocusable": "off",
51
+ "noLabelWithoutControl": "off",
52
+ "useFocusableInteractive": "off",
53
+ "useKeyWithClickEvents": "off",
54
+ "useSemanticElements": "off"
55
+ }
56
+ }
57
+ },
58
+ "css": {
59
+ "formatter": {
60
+ "quoteStyle": "single"
61
+ }
62
+ },
63
+ "overrides": [
64
+ {
65
+ "include": ["**/*.test.ts", "**/*.test.tsx", "tests/**/*", "scripts/**/*", ".dumi/**/*"],
66
+ "linter": {
67
+ "rules": {
68
+ "style": {
69
+ "noParameterAssign": "off"
70
+ },
71
+ "suspicious": {
72
+ "noThenProperty": "off",
73
+ "noImplicitAnyLet": "off"
74
+ },
75
+ "complexity": {
76
+ "noUselessFragments": "off"
77
+ },
78
+ "a11y": {
79
+ "useValidAnchor": "off",
80
+ "useAnchorContent": "off",
81
+ "useKeyWithClickEvents": "off"
82
+ }
83
+ }
84
+ }
85
+ },
86
+ {
87
+ "include": ["components/*/demo/*"],
88
+ "linter": {
89
+ "rules": {
90
+ "correctness": {
91
+ "noVoidTypeReturn": "off"
92
+ },
93
+ "a11y": {
94
+ "useValidAnchor": "off",
95
+ "useAnchorContent": "off",
96
+ "useKeyWithClickEvents": "off"
97
+ }
98
+ }
99
+ }
100
+ }
101
+ ]
102
+ }
@@ -1,7 +1,7 @@
1
- <!doctype html>
2
- <html>
3
- <head></head>
4
- <body>
5
- <div id="<%= mountId %>"></div>
6
- </body>
1
+ <!doctype html>
2
+ <html>
3
+ <head></head>
4
+ <body>
5
+ <div id="<%= mountId %>"></div>
6
+ </body>
7
7
  </html>
@@ -0,0 +1,11 @@
1
+ pre-commit:
2
+ commands:
3
+ check:
4
+ glob: '*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc,vue}'
5
+ run: npx @biomejs/biome check --write --no-errors-on-unmatched --files-ignore-unknown=true --colors=off {staged_files}
6
+ stage_fixed: true
7
+
8
+ commit-msg:
9
+ commands:
10
+ 'lint commit message':
11
+ run: npx commitlint --edit {1}