@varlet/cli 1.27.16 → 1.27.17-alpha.1656907860130

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 (210) hide show
  1. package/LICENCE +21 -21
  2. package/README.en-US.md +401 -401
  3. package/README.md +396 -396
  4. package/generators/base/.prettierignore +9 -9
  5. package/generators/base/.prettierrc +5 -5
  6. package/generators/base/README.md +82 -82
  7. package/generators/base/babel.config.js +10 -10
  8. package/generators/base/public/highlight.css +1 -1
  9. package/generators/base/public/logo.svg +1 -1
  10. package/generators/base/shims/shims-md.d.ts +4 -4
  11. package/generators/base/shims/shims-vue.d.ts +6 -6
  12. package/generators/base/tsconfig.json +13 -13
  13. package/generators/config/default/base/docs/home.zh-CN.md +10 -10
  14. package/generators/config/default/base/package.json +1 -0
  15. package/generators/config/default/base/types/basicComponent.d.ts +7 -7
  16. package/generators/config/default/base/types/button.d.ts +12 -12
  17. package/generators/config/default/base/types/index.d.ts +6 -6
  18. package/generators/config/default/base/varlet.config.js +110 -110
  19. package/generators/config/default/sfc/src/button/Button.vue +30 -30
  20. package/generators/config/default/sfc/src/button/__tests__/index.spec.js +7 -7
  21. package/generators/config/default/sfc/src/button/button.less +14 -14
  22. package/generators/config/default/sfc/src/button/docs/zh-CN.md +47 -47
  23. package/generators/config/default/sfc/src/button/example/BasicUse.vue +7 -7
  24. package/generators/config/default/sfc/src/button/example/ModifyColor.vue +7 -7
  25. package/generators/config/default/sfc/src/button/example/index.vue +13 -13
  26. package/generators/config/default/sfc/src/button/index.ts +10 -10
  27. package/generators/config/default/tsx/src/button/Button.tsx +31 -31
  28. package/generators/config/default/tsx/src/button/__tests__/index.spec.js +7 -7
  29. package/generators/config/default/tsx/src/button/button.less +14 -14
  30. package/generators/config/default/tsx/src/button/docs/zh-CN.md +47 -47
  31. package/generators/config/default/tsx/src/button/example/BasicUse.vue +7 -7
  32. package/generators/config/default/tsx/src/button/example/ModifyColor.vue +7 -7
  33. package/generators/config/default/tsx/src/button/example/index.vue +13 -13
  34. package/generators/config/default/tsx/src/button/index.ts +10 -10
  35. package/generators/config/i18n/base/docs/home.en-US.md +11 -11
  36. package/generators/config/i18n/base/docs/home.zh-CN.md +10 -10
  37. package/generators/config/i18n/base/package.json +1 -0
  38. package/generators/config/i18n/base/types/basicComponent.d.ts +7 -7
  39. package/generators/config/i18n/base/types/button.d.ts +12 -12
  40. package/generators/config/i18n/base/types/index.d.ts +7 -7
  41. package/generators/config/i18n/base/types/locale.d.ts +24 -24
  42. package/generators/config/i18n/base/varlet.config.js +122 -122
  43. package/generators/config/i18n/sfc/src/button/Button.vue +36 -36
  44. package/generators/config/i18n/sfc/src/button/__tests__/index.spec.js +7 -7
  45. package/generators/config/i18n/sfc/src/button/button.less +14 -14
  46. package/generators/config/i18n/sfc/src/button/docs/en-US.md +34 -34
  47. package/generators/config/i18n/sfc/src/button/docs/zh-CN.md +34 -34
  48. package/generators/config/i18n/sfc/src/button/example/BasicUse.vue +11 -11
  49. package/generators/config/i18n/sfc/src/button/example/ModifyColor.vue +11 -11
  50. package/generators/config/i18n/sfc/src/button/example/index.vue +13 -13
  51. package/generators/config/i18n/sfc/src/button/example/locale/en-US.ts +5 -5
  52. package/generators/config/i18n/sfc/src/button/example/locale/index.ts +23 -23
  53. package/generators/config/i18n/sfc/src/button/example/locale/zh-CN.ts +5 -5
  54. package/generators/config/i18n/sfc/src/button/index.ts +10 -10
  55. package/generators/config/i18n/sfc/src/locale/__tests__/index.spec.js +51 -51
  56. package/generators/config/i18n/sfc/src/locale/docs/en-US.md +26 -26
  57. package/generators/config/i18n/sfc/src/locale/docs/zh-CN.md +25 -25
  58. package/generators/config/i18n/sfc/src/locale/en-US.d.ts +5 -5
  59. package/generators/config/i18n/sfc/src/locale/en-US.ts +7 -7
  60. package/generators/config/i18n/sfc/src/locale/index.ts +67 -67
  61. package/generators/config/i18n/sfc/src/locale/zh-CN.d.ts +5 -5
  62. package/generators/config/i18n/sfc/src/locale/zh-CN.ts +7 -7
  63. package/generators/config/i18n/tsx/src/button/Button.tsx +35 -35
  64. package/generators/config/i18n/tsx/src/button/__tests__/index.spec.js +7 -7
  65. package/generators/config/i18n/tsx/src/button/button.less +14 -14
  66. package/generators/config/i18n/tsx/src/button/docs/en-US.md +34 -34
  67. package/generators/config/i18n/tsx/src/button/docs/zh-CN.md +34 -34
  68. package/generators/config/i18n/tsx/src/button/example/BasicUse.vue +11 -11
  69. package/generators/config/i18n/tsx/src/button/example/ModifyColor.vue +11 -11
  70. package/generators/config/i18n/tsx/src/button/example/index.vue +13 -13
  71. package/generators/config/i18n/tsx/src/button/example/locale/en-US.ts +5 -5
  72. package/generators/config/i18n/tsx/src/button/example/locale/index.ts +23 -23
  73. package/generators/config/i18n/tsx/src/button/example/locale/zh-CN.ts +5 -5
  74. package/generators/config/i18n/tsx/src/button/index.ts +10 -10
  75. package/generators/config/i18n/tsx/src/locale/__tests__/index.spec.js +51 -51
  76. package/generators/config/i18n/tsx/src/locale/docs/en-US.md +26 -26
  77. package/generators/config/i18n/tsx/src/locale/docs/zh-CN.md +25 -25
  78. package/generators/config/i18n/tsx/src/locale/en-US.d.ts +5 -5
  79. package/generators/config/i18n/tsx/src/locale/en-US.ts +7 -7
  80. package/generators/config/i18n/tsx/src/locale/index.ts +67 -67
  81. package/generators/config/i18n/tsx/src/locale/zh-CN.d.ts +5 -5
  82. package/generators/config/i18n/tsx/src/locale/zh-CN.ts +7 -7
  83. package/lib/commands/build.d.ts +1 -1
  84. package/lib/commands/build.js +67 -67
  85. package/lib/commands/changelog.d.ts +6 -6
  86. package/lib/commands/changelog.js +27 -27
  87. package/lib/commands/commitLint.d.ts +1 -1
  88. package/lib/commands/commitLint.js +21 -21
  89. package/lib/commands/compile.d.ts +5 -5
  90. package/lib/commands/compile.js +119 -119
  91. package/lib/commands/create.d.ts +3 -3
  92. package/lib/commands/create.js +132 -132
  93. package/lib/commands/dev.d.ts +3 -3
  94. package/lib/commands/dev.js +123 -123
  95. package/lib/commands/gen.d.ts +1 -1
  96. package/lib/commands/gen.js +112 -112
  97. package/lib/commands/jest.d.ts +8 -8
  98. package/lib/commands/jest.js +81 -81
  99. package/lib/commands/lint.d.ts +1 -1
  100. package/lib/commands/lint.js +123 -123
  101. package/lib/commands/preview.d.ts +1 -1
  102. package/lib/commands/preview.js +74 -74
  103. package/lib/commands/release.d.ts +3 -3
  104. package/lib/commands/release.js +267 -269
  105. package/lib/compiler/compileModule.d.ts +5 -5
  106. package/lib/compiler/compileModule.js +186 -186
  107. package/lib/compiler/compileSFC.d.ts +2 -2
  108. package/lib/compiler/compileSFC.js +132 -132
  109. package/lib/compiler/compileScript.d.ts +17 -17
  110. package/lib/compiler/compileScript.js +202 -202
  111. package/lib/compiler/compileSiteEntry.d.ts +13 -13
  112. package/lib/compiler/compileSiteEntry.js +237 -237
  113. package/lib/compiler/compileStyle.d.ts +11 -11
  114. package/lib/compiler/compileStyle.js +101 -101
  115. package/lib/compiler/compileTemplateHighlight.d.ts +10 -10
  116. package/lib/compiler/compileTemplateHighlight.js +193 -193
  117. package/lib/compiler/compileTypes.d.ts +2 -2
  118. package/lib/compiler/compileTypes.js +88 -88
  119. package/lib/config/babel.config.d.ts +2 -2
  120. package/lib/config/babel.config.js +31 -31
  121. package/lib/config/babel.sfc.transform.d.ts +1 -1
  122. package/lib/config/babel.sfc.transform.js +18 -18
  123. package/lib/config/jest.config.d.ts +1 -1
  124. package/lib/config/jest.config.js +36 -36
  125. package/lib/config/jest.media.mock.js +2 -2
  126. package/lib/config/jest.style.mock.js +2 -2
  127. package/lib/config/varlet.config.d.ts +1 -1
  128. package/lib/config/varlet.config.js +24 -24
  129. package/lib/config/vite.config.d.ts +5 -5
  130. package/lib/config/vite.config.js +162 -162
  131. package/lib/index.d.ts +2 -2
  132. package/lib/index.js +83 -83
  133. package/lib/shared/constant.d.ts +43 -43
  134. package/lib/shared/constant.js +50 -50
  135. package/lib/shared/fsUtils.d.ts +12 -12
  136. package/lib/shared/fsUtils.js +108 -108
  137. package/lib/shared/logger.d.ts +7 -7
  138. package/lib/shared/logger.js +20 -20
  139. package/package.json +7 -8
  140. package/preset.js +3 -3
  141. package/site/components/button/Button.vue +84 -84
  142. package/site/components/button/button.less +183 -183
  143. package/site/components/button/index.ts +10 -10
  144. package/site/components/button/props.ts +70 -70
  145. package/site/components/cell/Cell.vue +42 -42
  146. package/site/components/cell/cell.less +74 -74
  147. package/site/components/cell/index.ts +10 -10
  148. package/site/components/cell/props.ts +27 -27
  149. package/site/components/code-example/CodeExample.vue +143 -143
  150. package/site/components/code-example/codeExample.less +41 -41
  151. package/site/components/code-example/index.ts +10 -10
  152. package/site/components/context/index.ts +17 -17
  153. package/site/components/context/lock.ts +103 -103
  154. package/site/components/context/zIndex.ts +20 -20
  155. package/site/components/icon/Icon.vue +68 -68
  156. package/site/components/icon/icon.less +26 -26
  157. package/site/components/icon/index.ts +10 -10
  158. package/site/components/icon/props.ts +24 -24
  159. package/site/components/loading/Loading.vue +55 -55
  160. package/site/components/loading/index.ts +10 -10
  161. package/site/components/loading/loading.less +420 -420
  162. package/site/components/loading/props.ts +37 -37
  163. package/site/components/progress/Progress.vue +108 -108
  164. package/site/components/progress/index.ts +10 -10
  165. package/site/components/progress/progress.less +98 -98
  166. package/site/components/progress/props.ts +55 -55
  167. package/site/components/ripple/index.ts +167 -167
  168. package/site/components/ripple/ripple.less +17 -17
  169. package/site/components/snackbar/Snackbar.vue +38 -38
  170. package/site/components/snackbar/core.vue +117 -117
  171. package/site/components/snackbar/index.tsx +270 -270
  172. package/site/components/snackbar/props.ts +94 -94
  173. package/site/components/snackbar/snackbar.less +135 -135
  174. package/site/components/styles/common.less +64 -64
  175. package/site/components/styles/elevation.less +126 -126
  176. package/site/components/styles/var.less +27 -27
  177. package/site/components/utils/components.ts +69 -69
  178. package/site/components/utils/elements.ts +85 -85
  179. package/site/index.html +49 -49
  180. package/site/mobile/App.vue +291 -291
  181. package/site/mobile/components/AppHome.vue +134 -134
  182. package/site/mobile/components/AppType.vue +22 -22
  183. package/site/mobile/components/app-bar/AppBar.vue +69 -69
  184. package/site/mobile/components/app-bar/appBar.less +56 -56
  185. package/site/mobile/components/app-bar/index.ts +10 -10
  186. package/site/mobile/components/app-bar/props.ts +25 -25
  187. package/site/mobile/components/styles/common.less +64 -64
  188. package/site/mobile/components/styles/elevation.less +126 -126
  189. package/site/mobile/components/styles/var.less +27 -27
  190. package/site/mobile/main.ts +74 -74
  191. package/site/mobile.html +41 -41
  192. package/site/module.d.ts +5 -5
  193. package/site/pc/App.vue +43 -43
  194. package/site/pc/Layout.vue +397 -397
  195. package/site/pc/components/AnimationBox.vue +45 -45
  196. package/site/pc/components/AppHeader.vue +355 -355
  197. package/site/pc/components/AppMobile.vue +54 -54
  198. package/site/pc/components/AppSidebar.vue +134 -134
  199. package/site/pc/components/LogoAnimation.vue +119 -119
  200. package/site/pc/floating.ts +9 -9
  201. package/site/pc/main.ts +94 -94
  202. package/site/pc/pages/index/index.less +194 -194
  203. package/site/pc/pages/index/index.vue +128 -125
  204. package/site/pc/pages/index/locale/en-US.ts +3 -5
  205. package/site/pc/pages/index/locale/zh-CN.ts +3 -5
  206. package/site/tsconfig.json +11 -11
  207. package/site/useProgress.ts +75 -75
  208. package/site/utils.ts +153 -153
  209. package/tsconfig.json +14 -14
  210. package/varlet.default.config.js +151 -145
package/README.en-US.md CHANGED
@@ -1,402 +1,402 @@
1
- # @varlet/cli
2
-
3
- The out-of-the-box `Vue3 component library` rapid prototyping tool provides a series of commands and tools to solve the problem of component library development
4
-
5
- ### Feature
6
-
7
- - 1.Out-of-the-box component library development environment
8
- - 2.Out-of-the-box component library compilation tool, support exporting `esm` and `umd` two module codes
9
- - 3.Component library document site based on configuration files, support Baidu statistics and theme customization
10
- - 4.Supports `single file component (sfc)` and `tsx, jsx` two styles of component library writing styles
11
- - 5.Code inspection tool out of the box
12
- - 6.Unit testing tools out of the box
13
- - 7.Out-of-the-box code publishing tool, publish to npm and github, and automatically generate a change log
14
- - 8.Support `Typescript`
15
- - 9.Support `Dark Mode`
16
- - 10.Based on `pnpm`
17
-
18
- ### Quickstart
19
-
20
- `@varlet/cli` has built-in `single file component (sfc)` and `tsx, jsx` two styles of component library project templates, which can be directly generated by the `gen` command.
21
- To help users directly enter the development of the component itself, it is recommended to use `pnpm` as a package management tool.
22
-
23
- ```shell
24
- # Install command line tools
25
- pnpm add @varlet/cli -g
26
- # Use the gen command to generate the project
27
- varlet-cli gen projectName
28
- cd projectName
29
- pnpm install
30
- pnpm dev
31
- ```
32
-
33
- Then by simply modifying some basic information of the component library template,
34
- you can start the development of the component library
35
-
36
- ## Advanced customization
37
-
38
- ### Configuration file
39
-
40
- The `varlet.config.js` in the project root directory is used to manage the specific details of the entire component library project
41
-
42
- | Parameter | Description | Type | Default |
43
- | ----- | -------------- | -------- | ---------- |
44
- | `host` | Development server host | _number_ | `localhost` |
45
- | `port` | Development server port | _number_ | `8080` |
46
- | `name` | Full name of the component library | _string_ | `Varlet` |
47
- | `namespace` | Component library namespace, Will be used as a component prefix | _string_ | `var` |
48
- | `title` | The title of the component library in the document | _string_ | `VARLET` |
49
- | `logo` | The logo of the component library in the document | _string_ | `-` |
50
- | `defaultLanguage` | Document default language | _string_ | `zh-CN` |
51
- | `useMobile` | Whether to display the right mobile phone preview | _boolean_ | `false` |
52
- | `themes` | Document themes | _SiteThemes_ | `-` |
53
- | `darkThemes` | Document dark mode themes | _SiteThemes_ | `-` |
54
- | `highlight` | Document code snippet style related | _SiteHighlight_ | `-` |
55
- | `analysis` | Document statistics related | _SiteAnalysis_ | `-` |
56
- | `pc` | PC-side document structure configuration | _SitePC_ | `-` |
57
- | `mobile` | Mobile document structure configuration | _SiteMobile_ | `-` |
58
- | `moduleCompatible` | Module compatible config | _Record<string, string>_ | `-` |
59
-
60
- #### Module Compatible
61
-
62
- Some external dependencies may need to be compatible with module syntax to achieve the purpose of compiling correctly to `commonjs` and `esmodule`. For example, the wording of `esmodule` of `dayjs` is
63
-
64
- ```js
65
- import dayjs from 'dayjs/esm'
66
- ```
67
-
68
- In order to build `commonjs`, the writing method is
69
-
70
- ```js
71
- import * as dayjs from 'dayjs'
72
- ```
73
-
74
- In the project, we embrace the first way of writing the `esmodule` module, and make the following configuration for adaptation
75
-
76
- ```js
77
- // varlet.config.js
78
- module.exports = {
79
- moduleCompatible: {
80
- "import dayjs from 'dayjs/esm'\n": "import * as dayjs from 'dayjs'\n"
81
- }
82
- }
83
- ```
84
-
85
- #### SiteThemes
86
-
87
- Theme variables are related,
88
- because the default theme variables may be modified from time to time,
89
- subject to the theme of the `varlet` official document
90
-
91
- | Variable |
92
- | ----- |
93
- | `color-body` |
94
- | `color-bar` |
95
- | `color-sub-bar` |
96
- | `color-text` |
97
- | `color-sub-text` |
98
- | `color-border` |
99
- | `color-shadow` |
100
- | `color-introduce-border` |
101
- | `color-primary` |
102
- | `color-link` |
103
- | `color-type` |
104
- | `color-progress` |
105
- | `color-progress-track` |
106
- | `color-side-bar` |
107
- | `color-side-bar-active-background` |
108
- | `color-app-bar` |
109
- | `color-nav-button-hover-background` |
110
- | `color-mobile-cell-hover` |
111
- | `color-pc-language-active` |
112
- | `color-pc-language-active-background` |
113
- | `color-mobile-language-active` |
114
- | `color-mobile-language-active-background` |
115
- | `color-hl-background` |
116
- | `color-hl-code` |
117
- | `color-hl-border` |
118
- | `color-hl-group-a` |
119
- | `color-hl-group-b` |
120
- | `color-hl-group-c` |
121
- | `color-hl-group-d` |
122
- | `color-hl-group-e` |
123
- | `color-hl-group-f` |
124
- | `color-hl-group-g` |
125
- | `color-hl-group-h` |
126
- | `color-hl-group-i` |
127
-
128
- #### SiteHighlight
129
-
130
- Code snippets are highlighted, based on [highlight.js](https://highlightjs.org/)
131
-
132
- | Parameter | Description | Type | Default |
133
- | ----- | -------------- | -------- | ---------- |
134
- | `style` | highlight css link | _string_ | `-` |
135
-
136
- #### SiteAnalysis
137
-
138
- Statistics related to buried points
139
-
140
- | Parameter | Description | Type | Default |
141
- | ----- | -------------- | -------- | ---------- |
142
- | `baidu` | Baidu statistics script address | _string_ | `-` |
143
-
144
- #### SitePC, SiteMobile
145
-
146
- The document structure is partly related, and the example configuration is as follows
147
-
148
- ```js
149
- module.exports = {
150
- defaultLanguage: 'en-US',
151
- pc: {
152
- redirect: '/home',
153
- title: {
154
- 'en-US': 'A components library',
155
- },
156
- header: {
157
- darkMode: null,
158
- i18n: null,
159
- github: 'https://github.com/varletjs/varlet',
160
- },
161
- menu: [
162
- {
163
- text: {
164
- 'en-US': 'Develop Guide',
165
- },
166
- // Sidebar menu directory
167
- type: 1,
168
- },
169
- {
170
- text: {
171
- 'en-US': 'Basic Intro',
172
- },
173
- doc: 'home',
174
- // Index the md document in the root directory of the project
175
- type: 3,
176
- },
177
- {
178
- text: {
179
- 'en-US': 'Basic Component',
180
- },
181
- type: 1,
182
- },
183
- {
184
- text: {
185
- 'en-US': 'Button',
186
- },
187
- doc: 'button',
188
- // Md document in the root directory of the index component
189
- type: 2,
190
- },
191
- ],
192
- },
193
- mobile: {
194
- redirect: '/home',
195
- title: {
196
- 'en-US': 'A components library',
197
- },
198
- header: {
199
- darkMode: null,
200
- i18n: null,
201
- playground: null,
202
- github: 'https://github.com/varletjs/varlet',
203
- },
204
- },
205
- }
206
- ```
207
-
208
- ### Commands Intro
209
-
210
- #### Start the development server
211
-
212
- ```shell
213
- varlet-cli dev
214
- ```
215
-
216
- #### Build documentation site
217
-
218
- ```shell
219
- varlet-cli build
220
- ```
221
-
222
- #### Preview documentation site
223
-
224
- ```shell
225
- varlet-cli preview
226
- ```
227
-
228
- #### Build component library code
229
-
230
- ```shell
231
- varlet-cli compile
232
- ```
233
-
234
- #### Perform all unit tests
235
-
236
- ```shell
237
- varlet-cli test
238
- ```
239
-
240
- #### Execute unit tests in watch mode
241
-
242
- ```shell
243
- varlet-cli test -w
244
- or
245
- varlet-cli test -wa
246
- ```
247
-
248
- #### Lint code
249
-
250
- ```shell
251
- varlet-cli lint
252
- ```
253
-
254
- #### Lint commit message
255
-
256
- ```shell
257
- varlet-cli commit-lint
258
- ```
259
-
260
- #### Generate changelog
261
-
262
- ```shell
263
- varlet-cli changelog
264
- ```
265
-
266
- #### Release component library
267
-
268
- ```shell
269
- varlet-cli release
270
- ```
271
-
272
- #### Generate a project template
273
- ```shell
274
- varlet-cli gen <projectName>
275
- ```
276
-
277
- ### babel
278
-
279
- To configure `babel`, first specify the target browser in `package.json`
280
-
281
- ```json
282
- {
283
- "browserslist": [
284
- "Chrome >= 51",
285
- "iOS >= 10"
286
- ]
287
- }
288
- ```
289
-
290
- create `babel.config,js`
291
-
292
- ```js
293
- // babel.config.js
294
- module.exports = {
295
- presets: [
296
- [
297
- '@varlet/cli/preset',
298
- {
299
- loose: process.env.NODE_ENV === 'compile',
300
- },
301
- ],
302
- ],
303
- }
304
- ```
305
-
306
- ### git and npm
307
-
308
- #### git-hook
309
-
310
- `simple-git-hooks`, `lint-staged` cooperate with `eslint`, `stylelint`, `varlet-cli commit-lint` to check before commit,
311
- `package.json` configuration is as follows
312
-
313
- ```json
314
- {
315
- "simple-git-hooks": {
316
- "pre-commit": "pnpm exec lint-staged --allow-empty --concurrent false",
317
- "commit-msg": "npx --no-install varlet-cli commit-lint $1"
318
- },
319
- "lint-staged": {
320
- "*.{ts,tsx,js,vue,less}": "prettier --write",
321
- "*.{ts,tsx,js,vue}": "eslint --fix",
322
- "*.{vue,css,less}": "stylelint --fix"
323
- },
324
- "eslintConfig": {
325
- "root": true,
326
- "ignorePatterns": [
327
- "es/**",
328
- "umd/**",
329
- "site/**",
330
- "public/**",
331
- "src/*/__tests__/**",
332
- ".varlet/**"
333
- ],
334
- "extends": [
335
- "@varlet"
336
- ]
337
- },
338
- "stylelint": {
339
- "extends": [
340
- "@varlet/stylelint-config"
341
- ],
342
- "ignoreFiles": [
343
- "es/**",
344
- "umd/**",
345
- "site/**",
346
- "coverage/**",
347
- "public/**",
348
- "highlight/**"
349
- ]
350
- }
351
- }
352
- ```
353
-
354
- Mount Git Hooks
355
-
356
- ```shell
357
- npx simple-git-hooks
358
- ```
359
-
360
- create `.prettierignore`
361
-
362
- ```text
363
- // .prettierignore
364
- coverage/**
365
- es/**
366
- umd/**
367
- site/**
368
- public/**
369
- src/*/__tests__/**
370
- *.md
371
- ```
372
-
373
- ### typescript
374
-
375
- create `tsconfig.json`
376
-
377
- ```json
378
- {
379
- "compilerOptions": {
380
- "strict": true,
381
- "downlevelIteration": true,
382
- "declaration": true,
383
- "skipLibCheck": true,
384
- "esModuleInterop": true,
385
- "allowJs": true,
386
- "lib": ["esnext", "dom"],
387
- "allowSyntheticDefaultImports": true,
388
- "jsx": "preserve"
389
- }
390
- }
391
- ```
392
-
393
- #### Note before release
394
-
395
- - 1.The registry of npm must set to the official npm mirror
396
- - 2.The npm must execute the login command for user login
397
-
398
- ### Contributors
399
-
400
- <a href="https://github.com/varletjs/varlet/graphs/contributors">
401
- <img src="https://contrib.rocks/image?repo=haoziqaq/varlet" />
1
+ # @varlet/cli
2
+
3
+ The out-of-the-box `Vue3 component library` rapid prototyping tool provides a series of commands and tools to solve the problem of component library development
4
+
5
+ ### Feature
6
+
7
+ - 1.Out-of-the-box component library development environment
8
+ - 2.Out-of-the-box component library compilation tool, support exporting `esm` and `umd` two module codes
9
+ - 3.Component library document site based on configuration files, support Baidu statistics and theme customization
10
+ - 4.Supports `single file component (sfc)` and `tsx, jsx` two styles of component library writing styles
11
+ - 5.Code inspection tool out of the box
12
+ - 6.Unit testing tools out of the box
13
+ - 7.Out-of-the-box code publishing tool, publish to npm and github, and automatically generate a change log
14
+ - 8.Support `Typescript`
15
+ - 9.Support `Dark Mode`
16
+ - 10.Based on `pnpm`
17
+
18
+ ### Quickstart
19
+
20
+ `@varlet/cli` has built-in `single file component (sfc)` and `tsx, jsx` two styles of component library project templates, which can be directly generated by the `gen` command.
21
+ To help users directly enter the development of the component itself, it is recommended to use `pnpm` as a package management tool.
22
+
23
+ ```shell
24
+ # Install command line tools
25
+ pnpm add @varlet/cli -g
26
+ # Use the gen command to generate the project
27
+ varlet-cli gen projectName
28
+ cd projectName
29
+ pnpm install
30
+ pnpm dev
31
+ ```
32
+
33
+ Then by simply modifying some basic information of the component library template,
34
+ you can start the development of the component library
35
+
36
+ ## Advanced customization
37
+
38
+ ### Configuration file
39
+
40
+ The `varlet.config.js` in the project root directory is used to manage the specific details of the entire component library project
41
+
42
+ | Parameter | Description | Type | Default |
43
+ | ----- | -------------- | -------- | ---------- |
44
+ | `host` | Development server host | _number_ | `localhost` |
45
+ | `port` | Development server port | _number_ | `8080` |
46
+ | `name` | Full name of the component library | _string_ | `Varlet` |
47
+ | `namespace` | Component library namespace, Will be used as a component prefix | _string_ | `var` |
48
+ | `title` | The title of the component library in the document | _string_ | `VARLET` |
49
+ | `logo` | The logo of the component library in the document | _string_ | `-` |
50
+ | `defaultLanguage` | Document default language | _string_ | `zh-CN` |
51
+ | `useMobile` | Whether to display the right mobile phone preview | _boolean_ | `false` |
52
+ | `themes` | Document themes | _SiteThemes_ | `-` |
53
+ | `darkThemes` | Document dark mode themes | _SiteThemes_ | `-` |
54
+ | `highlight` | Document code snippet style related | _SiteHighlight_ | `-` |
55
+ | `analysis` | Document statistics related | _SiteAnalysis_ | `-` |
56
+ | `pc` | PC-side document structure configuration | _SitePC_ | `-` |
57
+ | `mobile` | Mobile document structure configuration | _SiteMobile_ | `-` |
58
+ | `moduleCompatible` | Module compatible config | _Record<string, string>_ | `-` |
59
+
60
+ #### Module Compatible
61
+
62
+ Some external dependencies may need to be compatible with module syntax to achieve the purpose of compiling correctly to `commonjs` and `esmodule`. For example, the wording of `esmodule` of `dayjs` is
63
+
64
+ ```js
65
+ import dayjs from 'dayjs/esm'
66
+ ```
67
+
68
+ In order to build `commonjs`, the writing method is
69
+
70
+ ```js
71
+ import * as dayjs from 'dayjs'
72
+ ```
73
+
74
+ In the project, we embrace the first way of writing the `esmodule` module, and make the following configuration for adaptation
75
+
76
+ ```js
77
+ // varlet.config.js
78
+ module.exports = {
79
+ moduleCompatible: {
80
+ "import dayjs from 'dayjs/esm'\n": "import * as dayjs from 'dayjs'\n"
81
+ }
82
+ }
83
+ ```
84
+
85
+ #### SiteThemes
86
+
87
+ Theme variables are related,
88
+ because the default theme variables may be modified from time to time,
89
+ subject to the theme of the `varlet` official document
90
+
91
+ | Variable |
92
+ | ----- |
93
+ | `color-body` |
94
+ | `color-bar` |
95
+ | `color-sub-bar` |
96
+ | `color-text` |
97
+ | `color-sub-text` |
98
+ | `color-border` |
99
+ | `color-shadow` |
100
+ | `color-introduce-border` |
101
+ | `color-primary` |
102
+ | `color-link` |
103
+ | `color-type` |
104
+ | `color-progress` |
105
+ | `color-progress-track` |
106
+ | `color-side-bar` |
107
+ | `color-side-bar-active-background` |
108
+ | `color-app-bar` |
109
+ | `color-nav-button-hover-background` |
110
+ | `color-mobile-cell-hover` |
111
+ | `color-pc-language-active` |
112
+ | `color-pc-language-active-background` |
113
+ | `color-mobile-language-active` |
114
+ | `color-mobile-language-active-background` |
115
+ | `color-hl-background` |
116
+ | `color-hl-code` |
117
+ | `color-hl-border` |
118
+ | `color-hl-group-a` |
119
+ | `color-hl-group-b` |
120
+ | `color-hl-group-c` |
121
+ | `color-hl-group-d` |
122
+ | `color-hl-group-e` |
123
+ | `color-hl-group-f` |
124
+ | `color-hl-group-g` |
125
+ | `color-hl-group-h` |
126
+ | `color-hl-group-i` |
127
+
128
+ #### SiteHighlight
129
+
130
+ Code snippets are highlighted, based on [highlight.js](https://highlightjs.org/)
131
+
132
+ | Parameter | Description | Type | Default |
133
+ | ----- | -------------- | -------- | ---------- |
134
+ | `style` | highlight css link | _string_ | `-` |
135
+
136
+ #### SiteAnalysis
137
+
138
+ Statistics related to buried points
139
+
140
+ | Parameter | Description | Type | Default |
141
+ | ----- | -------------- | -------- | ---------- |
142
+ | `baidu` | Baidu statistics script address | _string_ | `-` |
143
+
144
+ #### SitePC, SiteMobile
145
+
146
+ The document structure is partly related, and the example configuration is as follows
147
+
148
+ ```js
149
+ module.exports = {
150
+ defaultLanguage: 'en-US',
151
+ pc: {
152
+ redirect: '/home',
153
+ title: {
154
+ 'en-US': 'A components library',
155
+ },
156
+ header: {
157
+ darkMode: null,
158
+ i18n: null,
159
+ github: 'https://github.com/varletjs/varlet',
160
+ },
161
+ menu: [
162
+ {
163
+ text: {
164
+ 'en-US': 'Develop Guide',
165
+ },
166
+ // Sidebar menu directory
167
+ type: 1,
168
+ },
169
+ {
170
+ text: {
171
+ 'en-US': 'Basic Intro',
172
+ },
173
+ doc: 'home',
174
+ // Index the md document in the root directory of the project
175
+ type: 3,
176
+ },
177
+ {
178
+ text: {
179
+ 'en-US': 'Basic Component',
180
+ },
181
+ type: 1,
182
+ },
183
+ {
184
+ text: {
185
+ 'en-US': 'Button',
186
+ },
187
+ doc: 'button',
188
+ // Md document in the root directory of the index component
189
+ type: 2,
190
+ },
191
+ ],
192
+ },
193
+ mobile: {
194
+ redirect: '/home',
195
+ title: {
196
+ 'en-US': 'A components library',
197
+ },
198
+ header: {
199
+ darkMode: null,
200
+ i18n: null,
201
+ playground: null,
202
+ github: 'https://github.com/varletjs/varlet',
203
+ },
204
+ },
205
+ }
206
+ ```
207
+
208
+ ### Commands Intro
209
+
210
+ #### Start the development server
211
+
212
+ ```shell
213
+ varlet-cli dev
214
+ ```
215
+
216
+ #### Build documentation site
217
+
218
+ ```shell
219
+ varlet-cli build
220
+ ```
221
+
222
+ #### Preview documentation site
223
+
224
+ ```shell
225
+ varlet-cli preview
226
+ ```
227
+
228
+ #### Build component library code
229
+
230
+ ```shell
231
+ varlet-cli compile
232
+ ```
233
+
234
+ #### Perform all unit tests
235
+
236
+ ```shell
237
+ varlet-cli test
238
+ ```
239
+
240
+ #### Execute unit tests in watch mode
241
+
242
+ ```shell
243
+ varlet-cli test -w
244
+ or
245
+ varlet-cli test -wa
246
+ ```
247
+
248
+ #### Lint code
249
+
250
+ ```shell
251
+ varlet-cli lint
252
+ ```
253
+
254
+ #### Lint commit message
255
+
256
+ ```shell
257
+ varlet-cli commit-lint
258
+ ```
259
+
260
+ #### Generate changelog
261
+
262
+ ```shell
263
+ varlet-cli changelog
264
+ ```
265
+
266
+ #### Release component library
267
+
268
+ ```shell
269
+ varlet-cli release
270
+ ```
271
+
272
+ #### Generate a project template
273
+ ```shell
274
+ varlet-cli gen <projectName>
275
+ ```
276
+
277
+ ### babel
278
+
279
+ To configure `babel`, first specify the target browser in `package.json`
280
+
281
+ ```json
282
+ {
283
+ "browserslist": [
284
+ "Chrome >= 51",
285
+ "iOS >= 10"
286
+ ]
287
+ }
288
+ ```
289
+
290
+ create `babel.config,js`
291
+
292
+ ```js
293
+ // babel.config.js
294
+ module.exports = {
295
+ presets: [
296
+ [
297
+ '@varlet/cli/preset',
298
+ {
299
+ loose: process.env.NODE_ENV === 'compile',
300
+ },
301
+ ],
302
+ ],
303
+ }
304
+ ```
305
+
306
+ ### git and npm
307
+
308
+ #### git-hook
309
+
310
+ `simple-git-hooks`, `lint-staged` cooperate with `eslint`, `stylelint`, `varlet-cli commit-lint` to check before commit,
311
+ `package.json` configuration is as follows
312
+
313
+ ```json
314
+ {
315
+ "simple-git-hooks": {
316
+ "pre-commit": "pnpm exec lint-staged --allow-empty --concurrent false",
317
+ "commit-msg": "npx --no-install varlet-cli commit-lint $1"
318
+ },
319
+ "lint-staged": {
320
+ "*.{ts,tsx,js,vue,less}": "prettier --write",
321
+ "*.{ts,tsx,js,vue}": "eslint --fix",
322
+ "*.{vue,css,less}": "stylelint --fix"
323
+ },
324
+ "eslintConfig": {
325
+ "root": true,
326
+ "ignorePatterns": [
327
+ "es/**",
328
+ "umd/**",
329
+ "site/**",
330
+ "public/**",
331
+ "src/*/__tests__/**",
332
+ ".varlet/**"
333
+ ],
334
+ "extends": [
335
+ "@varlet"
336
+ ]
337
+ },
338
+ "stylelint": {
339
+ "extends": [
340
+ "@varlet/stylelint-config"
341
+ ],
342
+ "ignoreFiles": [
343
+ "es/**",
344
+ "umd/**",
345
+ "site/**",
346
+ "coverage/**",
347
+ "public/**",
348
+ "highlight/**"
349
+ ]
350
+ }
351
+ }
352
+ ```
353
+
354
+ Mount Git Hooks
355
+
356
+ ```shell
357
+ npx simple-git-hooks
358
+ ```
359
+
360
+ create `.prettierignore`
361
+
362
+ ```text
363
+ // .prettierignore
364
+ coverage/**
365
+ es/**
366
+ umd/**
367
+ site/**
368
+ public/**
369
+ src/*/__tests__/**
370
+ *.md
371
+ ```
372
+
373
+ ### typescript
374
+
375
+ create `tsconfig.json`
376
+
377
+ ```json
378
+ {
379
+ "compilerOptions": {
380
+ "strict": true,
381
+ "downlevelIteration": true,
382
+ "declaration": true,
383
+ "skipLibCheck": true,
384
+ "esModuleInterop": true,
385
+ "allowJs": true,
386
+ "lib": ["esnext", "dom"],
387
+ "allowSyntheticDefaultImports": true,
388
+ "jsx": "preserve"
389
+ }
390
+ }
391
+ ```
392
+
393
+ #### Note before release
394
+
395
+ - 1.The registry of npm must set to the official npm mirror
396
+ - 2.The npm must execute the login command for user login
397
+
398
+ ### Contributors
399
+
400
+ <a href="https://github.com/varletjs/varlet/graphs/contributors">
401
+ <img src="https://contrib.rocks/image?repo=haoziqaq/varlet" />
402
402
  </a>