@varlet/cli 2.0.0-alpha.1663499244572 → 2.0.0-alpha.1664031123039

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 (229) hide show
  1. package/LICENCE +21 -21
  2. package/README.en-US.md +401 -401
  3. package/README.md +396 -396
  4. package/lib/commands/build.d.ts +1 -1
  5. package/lib/commands/build.js +67 -18
  6. package/lib/commands/changelog.d.ts +6 -6
  7. package/lib/commands/changelog.js +27 -26
  8. package/lib/commands/commitLint.d.ts +1 -1
  9. package/lib/commands/commitLint.js +21 -50
  10. package/lib/commands/compile.d.ts +7 -7
  11. package/lib/commands/compile.js +119 -43
  12. package/lib/commands/create.d.ts +8 -8
  13. package/lib/commands/create.js +166 -90
  14. package/lib/commands/dev.d.ts +5 -5
  15. package/lib/commands/dev.js +123 -44
  16. package/lib/commands/gen.d.ts +8 -8
  17. package/lib/commands/gen.js +135 -85
  18. package/lib/commands/jest.d.ts +8 -0
  19. package/lib/commands/jest.js +85 -0
  20. package/lib/commands/lint.d.ts +1 -1
  21. package/lib/commands/lint.js +123 -48
  22. package/lib/commands/preview.d.ts +1 -1
  23. package/lib/commands/preview.js +74 -23
  24. package/lib/commands/release.d.ts +5 -5
  25. package/lib/commands/release.js +270 -132
  26. package/lib/commands/vite.d.ts +3 -3
  27. package/lib/commands/vite.js +69 -20
  28. package/lib/compiler/compileModule.d.ts +5 -5
  29. package/lib/compiler/compileModule.js +190 -79
  30. package/lib/compiler/compileSFC.d.ts +2 -2
  31. package/lib/compiler/compileSFC.js +135 -86
  32. package/lib/compiler/compileScript.d.ts +17 -17
  33. package/lib/compiler/compileScript.js +194 -152
  34. package/lib/compiler/compileSiteEntry.d.ts +13 -13
  35. package/lib/compiler/compileSiteEntry.js +237 -140
  36. package/lib/compiler/compileStyle.d.ts +11 -11
  37. package/lib/compiler/compileStyle.js +91 -43
  38. package/lib/compiler/compileTemplateHighlight.d.ts +10 -10
  39. package/lib/compiler/compileTemplateHighlight.js +193 -145
  40. package/lib/compiler/compileTypes.d.ts +2 -2
  41. package/lib/compiler/compileTypes.js +85 -49
  42. package/lib/config/babel.config.d.ts +2 -2
  43. package/lib/config/babel.config.js +31 -30
  44. package/lib/config/babel.sfc.transform.d.ts +1 -1
  45. package/lib/config/babel.sfc.transform.js +18 -18
  46. package/lib/config/jest.config.d.ts +1 -0
  47. package/lib/config/jest.config.js +37 -0
  48. package/lib/config/jest.media.mock.d.ts +0 -0
  49. package/lib/config/jest.media.mock.js +2 -0
  50. package/lib/config/jest.style.mock.d.ts +0 -0
  51. package/lib/config/jest.style.mock.js +2 -0
  52. package/lib/config/varlet.config.d.ts +1 -1
  53. package/lib/config/varlet.config.js +24 -23
  54. package/lib/config/vite.config.d.ts +5 -5
  55. package/lib/config/vite.config.js +162 -157
  56. package/lib/index.d.ts +2 -2
  57. package/lib/index.js +102 -84
  58. package/lib/shared/constant.d.ts +43 -44
  59. package/lib/shared/constant.js +50 -51
  60. package/lib/shared/fsUtils.d.ts +12 -12
  61. package/lib/shared/fsUtils.js +108 -61
  62. package/lib/shared/logger.d.ts +8 -8
  63. package/lib/shared/logger.js +23 -23
  64. package/package.json +11 -11
  65. package/preset.js +3 -3
  66. package/site/components/button/Button.vue +106 -106
  67. package/site/components/button/button.less +183 -183
  68. package/site/components/button/index.ts +10 -10
  69. package/site/components/button/props.ts +78 -78
  70. package/site/components/cell/Cell.vue +54 -54
  71. package/site/components/cell/cell.less +78 -78
  72. package/site/components/cell/index.ts +10 -10
  73. package/site/components/cell/props.ts +27 -27
  74. package/site/components/code-example/CodeExample.vue +137 -137
  75. package/site/components/code-example/codeExample.less +41 -41
  76. package/site/components/code-example/index.ts +10 -10
  77. package/site/components/context/index.ts +21 -21
  78. package/site/components/context/lock.ts +92 -92
  79. package/site/components/context/zIndex.ts +20 -20
  80. package/site/components/icon/Icon.vue +75 -75
  81. package/site/components/icon/icon.less +26 -26
  82. package/site/components/icon/index.ts +10 -10
  83. package/site/components/icon/props.ts +24 -24
  84. package/site/components/loading/Loading.vue +84 -84
  85. package/site/components/loading/index.ts +10 -10
  86. package/site/components/loading/loading.less +505 -505
  87. package/site/components/loading/props.ts +42 -42
  88. package/site/components/popup/Popup.tsx +102 -102
  89. package/site/components/popup/index.ts +10 -10
  90. package/site/components/popup/popup.less +125 -125
  91. package/site/components/popup/props.ts +63 -63
  92. package/site/components/progress/Progress.vue +112 -112
  93. package/site/components/progress/index.ts +10 -10
  94. package/site/components/progress/progress.less +101 -101
  95. package/site/components/progress/props.ts +55 -55
  96. package/site/components/ripple/index.ts +188 -188
  97. package/site/components/ripple/ripple.less +20 -20
  98. package/site/components/snackbar/Snackbar.vue +41 -41
  99. package/site/components/snackbar/core.vue +132 -132
  100. package/site/components/snackbar/index.tsx +270 -270
  101. package/site/components/snackbar/props.ts +97 -97
  102. package/site/components/snackbar/snackbar.less +135 -135
  103. package/site/components/styles/common.less +64 -64
  104. package/site/components/styles/elevation.less +126 -126
  105. package/site/components/styles/var.less +27 -27
  106. package/site/components/utils/components.ts +117 -117
  107. package/site/components/utils/elements.ts +102 -102
  108. package/site/index.html +49 -49
  109. package/site/mobile/App.vue +291 -291
  110. package/site/mobile/components/AppHome.vue +134 -134
  111. package/site/mobile/components/AppType.vue +22 -22
  112. package/site/mobile/components/app-bar/AppBar.vue +65 -65
  113. package/site/mobile/components/app-bar/appBar.less +57 -57
  114. package/site/mobile/components/app-bar/index.ts +10 -10
  115. package/site/mobile/components/app-bar/props.ts +25 -25
  116. package/site/mobile/main.ts +78 -78
  117. package/site/mobile.html +41 -41
  118. package/site/module.d.ts +5 -5
  119. package/site/pc/App.vue +43 -43
  120. package/site/pc/Layout.vue +423 -423
  121. package/site/pc/components/AnimationBox.vue +33 -33
  122. package/site/pc/components/AppHeader.vue +368 -368
  123. package/site/pc/components/AppMobile.vue +60 -60
  124. package/site/pc/components/AppSidebar.vue +143 -143
  125. package/site/pc/components/LogoAnimation.vue +117 -117
  126. package/site/pc/floating.ts +9 -9
  127. package/site/pc/main.ts +100 -100
  128. package/site/pc/pages/index/index.less +176 -176
  129. package/site/pc/pages/index/index.vue +130 -130
  130. package/site/pc/pages/index/locale/en-US.ts +1 -1
  131. package/site/pc/pages/index/locale/zh-CN.ts +1 -1
  132. package/site/tsconfig.json +11 -11
  133. package/site/useProgress.ts +72 -72
  134. package/site/utils.ts +165 -167
  135. package/template/create/{tsx.ejs → [ComponentName].tsx.ejs} +13 -13
  136. package/template/create/{vue.ejs → [ComponentName].vue.ejs} +17 -17
  137. package/template/create/{less.ejs → [componentName].less.ejs} +3 -3
  138. package/template/create/__tests__/{index.spec.ejs → index.spec.js.ejs} +13 -8
  139. package/template/create/example/{index.ejs → index.vue.ejs} +15 -15
  140. package/template/create/example/locale/en-US.ts +3 -3
  141. package/template/create/example/locale/index.ts +23 -23
  142. package/template/create/example/locale/zh-CN.ts +3 -3
  143. package/template/create/{index.ejs → index.ts.ejs} +11 -12
  144. package/template/create/props.ts +1 -1
  145. package/template/generators/base/.prettierignore +14 -9
  146. package/template/generators/base/.prettierrc +5 -5
  147. package/template/generators/base/README.md +82 -82
  148. package/template/generators/base/babel.config.js +10 -10
  149. package/template/generators/base/public/logo.svg +30 -1
  150. package/template/generators/base/shims/shims-md.d.ts +4 -4
  151. package/template/generators/base/shims/shims-vue.d.ts +6 -6
  152. package/template/generators/base/tsconfig.json +13 -13
  153. package/template/generators/config/default/base/docs/home.zh-CN.md +2 -10
  154. package/template/generators/config/default/base/package.json +112 -105
  155. package/template/generators/config/default/base/types/basicComponent.d.ts +7 -7
  156. package/template/generators/config/default/base/types/button.d.ts +12 -12
  157. package/template/generators/config/default/base/types/index.d.ts +6 -6
  158. package/template/generators/config/default/base/varlet.config.js +45 -110
  159. package/template/generators/config/default/sfc/src/button/Button.vue +31 -30
  160. package/template/generators/config/default/sfc/src/button/__tests__/index.spec.js +7 -7
  161. package/template/generators/config/default/sfc/src/button/button.less +14 -14
  162. package/template/generators/config/default/sfc/src/button/docs/zh-CN.md +38 -47
  163. package/template/generators/config/default/sfc/src/button/example/BasicUse.vue +7 -7
  164. package/template/generators/config/default/sfc/src/button/example/ModifyColor.vue +7 -7
  165. package/template/generators/config/default/sfc/src/button/example/index.vue +12 -13
  166. package/template/generators/config/default/sfc/src/button/index.ts +10 -10
  167. package/template/generators/config/default/tsx/src/button/Button.tsx +29 -29
  168. package/template/generators/config/default/tsx/src/button/__tests__/index.spec.js +7 -7
  169. package/template/generators/config/default/tsx/src/button/button.less +14 -14
  170. package/template/generators/config/default/tsx/src/button/docs/zh-CN.md +38 -47
  171. package/template/generators/config/default/tsx/src/button/example/BasicUse.vue +7 -7
  172. package/template/generators/config/default/tsx/src/button/example/ModifyColor.vue +7 -7
  173. package/template/generators/config/default/tsx/src/button/example/index.vue +12 -13
  174. package/template/generators/config/default/tsx/src/button/index.ts +10 -10
  175. package/template/generators/config/i18n/base/docs/home.en-US.md +3 -11
  176. package/template/generators/config/i18n/base/docs/home.zh-CN.md +2 -10
  177. package/template/generators/config/i18n/base/package.json +112 -105
  178. package/template/generators/config/i18n/base/types/basicComponent.d.ts +7 -7
  179. package/template/generators/config/i18n/base/types/button.d.ts +12 -12
  180. package/template/generators/config/i18n/base/types/index.d.ts +7 -7
  181. package/template/generators/config/i18n/base/types/locale.d.ts +24 -24
  182. package/template/generators/config/i18n/base/varlet.config.js +47 -122
  183. package/template/generators/config/i18n/sfc/src/button/Button.vue +37 -36
  184. package/template/generators/config/i18n/sfc/src/button/__tests__/index.spec.js +7 -7
  185. package/template/generators/config/i18n/sfc/src/button/button.less +14 -14
  186. package/template/generators/config/i18n/sfc/src/button/docs/en-US.md +38 -34
  187. package/template/generators/config/i18n/sfc/src/button/docs/zh-CN.md +38 -34
  188. package/template/generators/config/i18n/sfc/src/button/example/BasicUse.vue +11 -11
  189. package/template/generators/config/i18n/sfc/src/button/example/ModifyColor.vue +11 -11
  190. package/template/generators/config/i18n/sfc/src/button/example/index.vue +16 -13
  191. package/template/generators/config/i18n/sfc/src/button/example/locale/en-US.ts +5 -5
  192. package/template/generators/config/i18n/sfc/src/button/example/locale/index.ts +23 -23
  193. package/template/generators/config/i18n/sfc/src/button/example/locale/zh-CN.ts +5 -5
  194. package/template/generators/config/i18n/sfc/src/button/index.ts +10 -10
  195. package/template/generators/config/i18n/sfc/src/locale/__tests__/index.spec.js +51 -51
  196. package/template/generators/config/i18n/sfc/src/locale/docs/en-US.md +26 -26
  197. package/template/generators/config/i18n/sfc/src/locale/docs/zh-CN.md +25 -25
  198. package/template/generators/config/i18n/sfc/src/locale/en-US.d.ts +5 -5
  199. package/template/generators/config/i18n/sfc/src/locale/en-US.ts +7 -7
  200. package/template/generators/config/i18n/sfc/src/locale/index.ts +67 -67
  201. package/template/generators/config/i18n/sfc/src/locale/zh-CN.d.ts +5 -5
  202. package/template/generators/config/i18n/sfc/src/locale/zh-CN.ts +7 -7
  203. package/template/generators/config/i18n/tsx/src/button/Button.tsx +31 -33
  204. package/template/generators/config/i18n/tsx/src/button/__tests__/index.spec.js +7 -7
  205. package/template/generators/config/i18n/tsx/src/button/button.less +14 -14
  206. package/template/generators/config/i18n/tsx/src/button/docs/en-US.md +38 -34
  207. package/template/generators/config/i18n/tsx/src/button/docs/zh-CN.md +38 -34
  208. package/template/generators/config/i18n/tsx/src/button/example/BasicUse.vue +11 -11
  209. package/template/generators/config/i18n/tsx/src/button/example/ModifyColor.vue +11 -11
  210. package/template/generators/config/i18n/tsx/src/button/example/index.vue +15 -13
  211. package/template/generators/config/i18n/tsx/src/button/example/locale/en-US.ts +5 -5
  212. package/template/generators/config/i18n/tsx/src/button/example/locale/index.ts +23 -23
  213. package/template/generators/config/i18n/tsx/src/button/example/locale/zh-CN.ts +5 -5
  214. package/template/generators/config/i18n/tsx/src/button/index.ts +10 -10
  215. package/template/generators/config/i18n/tsx/src/locale/__tests__/index.spec.js +51 -51
  216. package/template/generators/config/i18n/tsx/src/locale/docs/en-US.md +26 -26
  217. package/template/generators/config/i18n/tsx/src/locale/docs/zh-CN.md +25 -25
  218. package/template/generators/config/i18n/tsx/src/locale/en-US.d.ts +5 -5
  219. package/template/generators/config/i18n/tsx/src/locale/en-US.ts +7 -7
  220. package/template/generators/config/i18n/tsx/src/locale/index.ts +67 -67
  221. package/template/generators/config/i18n/tsx/src/locale/zh-CN.d.ts +5 -5
  222. package/template/generators/config/i18n/tsx/src/locale/zh-CN.ts +7 -7
  223. package/tsconfig.json +14 -15
  224. package/varlet.default.config.js +3 -3
  225. package/lib/commands/test.d.ts +0 -7
  226. package/lib/commands/test.js +0 -26
  227. package/lib/config/vitest.config.d.ts +0 -2
  228. package/lib/config/vitest.config.js +0 -28
  229. package/template/generators/base/public/highlight.css +0 -1
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 >= 54",
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>