br-dionysus 0.0.1

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 (66) hide show
  1. package/.idea/dionysus.iml +12 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/vcs.xml +6 -0
  4. package/LICENSE +21 -0
  5. package/README.md +0 -0
  6. package/build/base.config.ts +20 -0
  7. package/build/doc.config.ts +10 -0
  8. package/build/lib.config.ts +31 -0
  9. package/dist/index.css +1 -0
  10. package/dist/my-kit.es.js +254 -0
  11. package/dist/my-kit.umd.js +2 -0
  12. package/dist/packages/Button/index.d.ts +4 -0
  13. package/dist/packages/Button/src/index.vue.d.ts +4 -0
  14. package/dist/packages/Foo/index.d.ts +4 -0
  15. package/dist/packages/TabPage/index.d.ts +4 -0
  16. package/dist/packages/TabPage/src/index.vue.d.ts +70 -0
  17. package/dist/packages/index.d.ts +11 -0
  18. package/dist/src/env.d.ts +11 -0
  19. package/docs/assets/README.04f9b87a.js +1 -0
  20. package/docs/assets/README.e027c703.js +1 -0
  21. package/docs/assets/index.55b9c1a5.js +1 -0
  22. package/docs/assets/index.f005ac77.css +1 -0
  23. package/docs/assets/vendor.234e3e3c.js +12 -0
  24. package/docs/index.html +16 -0
  25. package/docs/packages/Button/docs/README.md +9 -0
  26. package/docs/packages/Button/docs/demo.vue +11 -0
  27. package/docs/packages/Button/index.ts +10 -0
  28. package/docs/packages/Button/src/index.vue +26 -0
  29. package/docs/packages/Foo/docs/README.md +28 -0
  30. package/docs/packages/Foo/docs/demo.vue +5 -0
  31. package/docs/packages/Foo/index.ts +12 -0
  32. package/docs/packages/Foo/src/index.vue +15 -0
  33. package/docs/packages/index.ts +23 -0
  34. package/docs/packages/list.json +14 -0
  35. package/index.html +13 -0
  36. package/package.json +30 -0
  37. package/packages/Button/docs/README.md +9 -0
  38. package/packages/Button/docs/demo.vue +11 -0
  39. package/packages/Button/index.ts +10 -0
  40. package/packages/Button/src/index.vue +26 -0
  41. package/packages/Foo/docs/README.md +28 -0
  42. package/packages/Foo/docs/demo.vue +5 -0
  43. package/packages/Foo/index.ts +12 -0
  44. package/packages/Foo/src/index.vue +15 -0
  45. package/packages/TabPage/index.ts +10 -0
  46. package/packages/TabPage/src/index.vue +499 -0
  47. package/packages/index.ts +26 -0
  48. package/packages/list.json +20 -0
  49. package/script/copyDir.js +7 -0
  50. package/script/genNewComp/.template/docs/README.md.tpl +28 -0
  51. package/script/genNewComp/.template/docs/demo.vue.tpl +5 -0
  52. package/script/genNewComp/.template/index.ts.tpl +12 -0
  53. package/script/genNewComp/.template/install.ts.tpl +20 -0
  54. package/script/genNewComp/.template/router.ts.tpl +25 -0
  55. package/script/genNewComp/.template/src/index.vue.tpl +15 -0
  56. package/script/genNewComp/index.js +9 -0
  57. package/script/genNewComp/infoCollector.js +63 -0
  58. package/script/genNewComp/tplReplacer.js +95 -0
  59. package/src/App.vue +46 -0
  60. package/src/assets/markdown.css +273 -0
  61. package/src/assets/prism.css +429 -0
  62. package/src/components/Preview.vue +101 -0
  63. package/src/env.d.ts +11 -0
  64. package/src/main.ts +12 -0
  65. package/src/router.ts +35 -0
  66. package/tsconfig.json +30 -0
@@ -0,0 +1,63 @@
1
+ const inquirer = require('inquirer')
2
+ const fs = require('fs-extra')
3
+ const { resolve } = require('path')
4
+
5
+ const listFilePath = '../../packages/list.json'
6
+
7
+ const RegxMap = {
8
+ IS_COMP_NAME: /^[A-Z]/,
9
+ IS_COMP_ZH_NAME: /^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])+$/
10
+ }
11
+
12
+ const kebabCase = string => string
13
+ .replace(/([a-z])([A-Z])/g, "$1-$2")
14
+ .replace(/[\s_]+/g, '-')
15
+ .toLowerCase();
16
+
17
+ module.exports = async () => {
18
+ const meta = await inquirer
19
+ .prompt([
20
+ {
21
+ type: 'input',
22
+ message: '请输入你要新建的组件名(纯英文,大写开头):',
23
+ name: 'compName',
24
+ validate(answer) {
25
+ const done = this.async()
26
+ const validateRes = RegxMap.IS_COMP_NAME.test(answer)
27
+ if (!validateRes) {
28
+ done('请按要求输入正确的组件名!')
29
+ return
30
+ }
31
+ const listData = fs.readJSONSync(resolve(__dirname, listFilePath))
32
+ if (listData.find(item => item.compName === answer)) {
33
+ done('已存在同名组件,请确认后更换名字再重试。')
34
+ return
35
+ }
36
+ done(null, true)
37
+ }
38
+ },
39
+ {
40
+ type: 'input',
41
+ message: '请输入你要新建的组件名(中文):',
42
+ name: 'compZhName',
43
+ validate(answer) {
44
+ const done = this.async()
45
+ const validateRes = RegxMap.IS_COMP_ZH_NAME.test(answer)
46
+ if (!validateRes) {
47
+ done('请按要求输入正确的组件名!')
48
+ return
49
+ }
50
+ done(null, true)
51
+ }
52
+ },
53
+ {
54
+ type: 'input',
55
+ message: '请输入组件的功能描述:',
56
+ name: 'compDesc',
57
+ default: '默认:这是一个新组件'
58
+ }
59
+ ])
60
+ const { compName } = meta
61
+ meta.compClassName = kebabCase(compName)
62
+ return meta
63
+ }
@@ -0,0 +1,95 @@
1
+ const fs = require('fs-extra')
2
+ const handlebars = require('handlebars')
3
+ const { resolve } = require('path')
4
+
5
+ const getTplFilePath = (meta) => ({
6
+ // docs 目录
7
+ readme: {
8
+ from: './.template/docs/README.md.tpl',
9
+ to: `../../packages/${meta.compName}/docs/README.md`
10
+ },
11
+ demo: {
12
+ from: './.template/docs/demo.vue.tpl',
13
+ to: `../../packages/${meta.compName}/docs/demo.vue`
14
+ },
15
+ // src 目录
16
+ vue: {
17
+ from: './.template/src/index.vue.tpl',
18
+ to: `../../packages/${meta.compName}/src/index.vue`
19
+ },
20
+ // 根目录
21
+ install: {
22
+ from: './.template/index.ts.tpl',
23
+ to: `../../packages/${meta.compName}/index.ts`
24
+ },
25
+ })
26
+
27
+ const compFilesTplReplacer = (meta) => {
28
+ const filePaths = getTplFilePath(meta)
29
+ Object.keys(filePaths).forEach(key => {
30
+ const fileTpl = fs.readFileSync(resolve(__dirname, filePaths[key].from), 'utf-8')
31
+ const fileContent = handlebars.compile(fileTpl)(meta)
32
+ fs.outputFile(resolve(__dirname, filePaths[key].to), fileContent, err => {
33
+ if (err) console.log(err)
34
+ })
35
+ })
36
+ }
37
+
38
+ // 读取 packages/list.json 并更新
39
+ const listJsonTplReplacer = (meta) => {
40
+ const listFilePath = '../../packages/list.json'
41
+ const listFileTpl = fs.readFileSync(resolve(__dirname, listFilePath), 'utf-8')
42
+ const listFileContent = JSON.parse(listFileTpl)
43
+ listFileContent.push(meta)
44
+ const newListFileContentFile = JSON.stringify(listFileContent, null, 2)
45
+ fs.writeFile(resolve(__dirname, listFilePath), newListFileContentFile, err => {
46
+ if (err) console.log(err)
47
+ })
48
+ return listFileContent
49
+ }
50
+
51
+ // 更新 router.ts
52
+ const routerTplReplacer = (listFileContent) => {
53
+ const routerFileFrom = './.template/router.ts.tpl'
54
+ const routerFileTo = '../../src/router.ts'
55
+ const routerFileTpl = fs.readFileSync(resolve(__dirname, routerFileFrom), 'utf-8')
56
+ const routerMeta = {
57
+ routes: listFileContent.map(comp => {
58
+ return `{
59
+ title: '${comp.compZhName}',
60
+ name: '${comp.compName}',
61
+ path: '/components/${comp.compName}',
62
+ component: () => import('packages/${comp.compName}/docs/README.md'),
63
+ }`
64
+ })
65
+ }
66
+ const routerFileContent = handlebars.compile(routerFileTpl, { noEscape: true })(routerMeta)
67
+ fs.outputFile(resolve(__dirname, routerFileTo), routerFileContent, err => {
68
+ if (err) console.log(err)
69
+ })
70
+ }
71
+
72
+ // 更新 install.ts
73
+ const installTsTplReplacer = (listFileContent) => {
74
+ const installFileFrom = './.template/install.ts.tpl'
75
+ const installFileTo = '../../packages/index.ts' // 这里没有写错,别慌
76
+ const installFileTpl = fs.readFileSync(resolve(__dirname, installFileFrom), 'utf-8')
77
+ const installMeta = {
78
+ importPlugins: listFileContent.map(({ compName }) => `import { ${compName}Plugin } from './${compName}';`).join('\n'),
79
+ installPlugins: listFileContent.map(({ compName }) => `${compName}Plugin.install?.(app);`).join('\n '),
80
+ exportPlugins: listFileContent.map(({ compName }) => `export * from './${compName}'`).join('\n'),
81
+ }
82
+ const installFileContent = handlebars.compile(installFileTpl, { noEscape: true })(installMeta)
83
+ fs.outputFile(resolve(__dirname, installFileTo), installFileContent, err => {
84
+ if (err) console.log(err)
85
+ })
86
+ }
87
+
88
+ module.exports = (meta) => {
89
+ compFilesTplReplacer(meta)
90
+ const listFileContent = listJsonTplReplacer(meta)
91
+ routerTplReplacer(listFileContent)
92
+ installTsTplReplacer(listFileContent)
93
+
94
+ console.log(`组件新建完毕,请前往 packages/${meta.compName} 目录进行开发`);
95
+ }
package/src/App.vue ADDED
@@ -0,0 +1,46 @@
1
+ <template>
2
+ <div class="my-kit-doc">
3
+ <aside>
4
+ <router-link v-for="(link, index) in data.links" :key="index" :to="link.path">{{ link.name }}</router-link>
5
+ </aside>
6
+ <main>
7
+ <router-view></router-view>
8
+ </main>
9
+ </div>
10
+ </template>
11
+
12
+ <script setup>
13
+ import ComponentList from 'packages/list.json';
14
+ import { reactive } from 'vue'
15
+
16
+ const data = reactive({
17
+ links: ComponentList.map(item => ({
18
+ path: `/components/${item.compName}`,
19
+ name: item.compZhName
20
+ }))
21
+ })
22
+ </script>
23
+
24
+ <style lang="less">
25
+ html,
26
+ body {
27
+ margin: 0;
28
+ padding: 0;
29
+ }
30
+ .my-kit-doc {
31
+ display: flex;
32
+ min-height: 100vh;
33
+ aside {
34
+ width: 200px;
35
+ padding: 15px;
36
+ border-right: 1px solid #ccc;
37
+ display: flex;
38
+ flex-direction: column;
39
+ }
40
+ main {
41
+ width: 100%;
42
+ flex: 1;
43
+ padding: 15px;
44
+ }
45
+ }
46
+ </style>
@@ -0,0 +1,273 @@
1
+ :root {
2
+ --side-bar-bg-color: #fff;
3
+ --control-text-color: #777;
4
+ --font-sans-serif: 'Ubuntu', 'Source Sans Pro', sans-serif !important;
5
+ --font-monospace: 'Fira Code', 'Roboto Mono', monospace !important;
6
+ }
7
+
8
+ html {
9
+ font-size: 16px;
10
+ }
11
+
12
+ body {
13
+ font-family: var(--font-sans-serif);
14
+ color: #34495e;
15
+ -webkit-font-smoothing: antialiased;
16
+ line-height: 1.6rem;
17
+ letter-spacing: 0;
18
+ margin: 0;
19
+ overflow-x: hidden;
20
+ }
21
+
22
+ body > *:first-child {
23
+ margin-top: 0 !important;
24
+ }
25
+
26
+ body > *:last-child {
27
+ margin-bottom: 0 !important;
28
+ }
29
+
30
+ a {
31
+ color: #42b983;
32
+ font-weight: 600;
33
+ padding: 0 2px;
34
+ text-decoration: none;
35
+ }
36
+
37
+ h1,
38
+ h2,
39
+ h3,
40
+ h4,
41
+ h5,
42
+ h6 {
43
+ position: relative;
44
+ margin-top: 1rem;
45
+ margin-bottom: 1rem;
46
+ font-weight: bold;
47
+ line-height: 1.4;
48
+ cursor: text;
49
+ }
50
+
51
+ h1:hover a.anchor,
52
+ h2:hover a.anchor,
53
+ h3:hover a.anchor,
54
+ h4:hover a.anchor,
55
+ h5:hover a.anchor,
56
+ h6:hover a.anchor {
57
+ text-decoration: none;
58
+ }
59
+
60
+ h1 tt,
61
+ h1 code {
62
+ font-size: inherit !important;
63
+ }
64
+
65
+ h2 tt,
66
+ h2 code {
67
+ font-size: inherit !important;
68
+ }
69
+
70
+ h3 tt,
71
+ h3 code {
72
+ font-size: inherit !important;
73
+ }
74
+
75
+ h4 tt,
76
+ h4 code {
77
+ font-size: inherit !important;
78
+ }
79
+
80
+ h5 tt,
81
+ h5 code {
82
+ font-size: inherit !important;
83
+ }
84
+
85
+ h6 tt,
86
+ h6 code {
87
+ font-size: inherit !important;
88
+ }
89
+
90
+ h2 a,
91
+ h3 a {
92
+ color: #34495e;
93
+ }
94
+
95
+ h1 {
96
+ padding-bottom: .4rem;
97
+ font-size: 2.2rem;
98
+ line-height: 1.3;
99
+ }
100
+
101
+ h2 {
102
+ font-size: 1.75rem;
103
+ line-height: 1.225;
104
+ margin: 35px 0 15px;
105
+ padding-bottom: 0.5em;
106
+ border-bottom: 1px solid #ddd;
107
+ }
108
+
109
+ h3 {
110
+ font-size: 1.4rem;
111
+ line-height: 1.43;
112
+ margin: 20px 0 7px;
113
+ }
114
+
115
+ h4 {
116
+ font-size: 1.2rem;
117
+ }
118
+
119
+ h5 {
120
+ font-size: 1rem;
121
+ }
122
+
123
+ h6 {
124
+ font-size: 1rem;
125
+ color: #777;
126
+ }
127
+
128
+ p,
129
+ blockquote,
130
+ ul,
131
+ ol,
132
+ dl,
133
+ table {
134
+ margin: 0.8em 0;
135
+ }
136
+
137
+ li > ol,
138
+ li > ul {
139
+ margin: 0 0;
140
+ }
141
+
142
+ hr {
143
+ height: 2px;
144
+ padding: 0;
145
+ margin: 16px 0;
146
+ background-color: #e7e7e7;
147
+ border: 0 none;
148
+ overflow: hidden;
149
+ box-sizing: content-box;
150
+ }
151
+
152
+ body > h2:first-child {
153
+ margin-top: 0;
154
+ padding-top: 0;
155
+ }
156
+
157
+ body > h1:first-child {
158
+ margin-top: 0;
159
+ padding-top: 0;
160
+ }
161
+
162
+ body > h1:first-child + h2 {
163
+ margin-top: 0;
164
+ padding-top: 0;
165
+ }
166
+
167
+ body > h3:first-child,
168
+ body > h4:first-child,
169
+ body > h5:first-child,
170
+ body > h6:first-child {
171
+ margin-top: 0;
172
+ padding-top: 0;
173
+ }
174
+
175
+ a:first-child h1,
176
+ a:first-child h2,
177
+ a:first-child h3,
178
+ a:first-child h4,
179
+ a:first-child h5,
180
+ a:first-child h6 {
181
+ margin-top: 0;
182
+ padding-top: 0;
183
+ }
184
+
185
+ h1 p,
186
+ h2 p,
187
+ h3 p,
188
+ h4 p,
189
+ h5 p,
190
+ h6 p {
191
+ margin-top: 0;
192
+ }
193
+
194
+ li p.first {
195
+ display: inline-block;
196
+ }
197
+
198
+ ul,
199
+ ol {
200
+ padding-left: 30px;
201
+ }
202
+
203
+ ul:first-child,
204
+ ol:first-child {
205
+ margin-top: 0;
206
+ }
207
+
208
+ ul:last-child,
209
+ ol:last-child {
210
+ margin-bottom: 0;
211
+ }
212
+
213
+ blockquote {
214
+ border-left: 4px solid #42b983;
215
+ padding: 10px 15px;
216
+ color: #777;
217
+ background-color: rgba(66, 185, 131, .1);
218
+ }
219
+
220
+ table {
221
+ padding: 0;
222
+ word-break: initial;
223
+ }
224
+
225
+ table tr {
226
+ border-top: 1px solid #dfe2e5;
227
+ margin: 0;
228
+ padding: 0;
229
+ }
230
+
231
+ table tr:nth-child(2n),
232
+ thead {
233
+ background-color: #fafafa;
234
+ }
235
+
236
+ table tr th {
237
+ font-weight: bold;
238
+ border: 1px solid #dfe2e5;
239
+ border-bottom: 0;
240
+ text-align: left;
241
+ margin: 0;
242
+ padding: 6px 13px;
243
+ }
244
+
245
+ table tr td {
246
+ border: 1px solid #dfe2e5;
247
+ text-align: left;
248
+ margin: 0;
249
+ padding: 6px 13px;
250
+ }
251
+
252
+ table tr th:first-child,
253
+ table tr td:first-child {
254
+ margin-top: 0;
255
+ }
256
+
257
+ table tr th:last-child,
258
+ table tr td:last-child {
259
+ margin-bottom: 0;
260
+ }
261
+
262
+ code {
263
+ color: #476582;
264
+ padding: 0.25rem 0.5rem;
265
+ margin: 0;
266
+ font-size: .85em;
267
+ background-color: rgba(27,31,35,.05);
268
+ border-radius: 3px;
269
+ }
270
+
271
+ pre {
272
+ max-height: 500px;
273
+ }