@modern-js/module-tools-docs 2.0.0-beta.4 → 2.0.2

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 (342) hide show
  1. package/.eslintrc.js +13 -0
  2. package/doc_build/html/main/index.html +16 -0
  3. package/doc_build/route.json +10 -0
  4. package/doc_build/static/css/main.css +3370 -0
  5. package/doc_build/static/css/main.css.map +1 -0
  6. package/doc_build/static/css/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.css +85 -0
  7. package/doc_build/static/css/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.css.map +1 -0
  8. package/doc_build/static/js/async/api_.js +56 -0
  9. package/doc_build/static/js/async/api_.js.map +1 -0
  10. package/doc_build/static/js/async/api_config_build-config.js +11309 -0
  11. package/doc_build/static/js/async/api_config_build-config.js.map +1 -0
  12. package/doc_build/static/js/async/api_config_build-preset.js +7849 -0
  13. package/doc_build/static/js/async/api_config_build-preset.js.map +1 -0
  14. package/doc_build/static/js/async/api_config_design-system.js +48708 -0
  15. package/doc_build/static/js/async/api_config_design-system.js.map +1 -0
  16. package/doc_build/static/js/async/api_config_plugins.js +1492 -0
  17. package/doc_build/static/js/async/api_config_plugins.js.map +1 -0
  18. package/doc_build/static/js/async/api_config_testing.js +2130 -0
  19. package/doc_build/static/js/async/api_config_testing.js.map +1 -0
  20. package/doc_build/static/js/async/api_plugin-api_plugin-hooks.js +14394 -0
  21. package/doc_build/static/js/async/api_plugin-api_plugin-hooks.js.map +1 -0
  22. package/doc_build/static/js/async/en_.js +85 -0
  23. package/doc_build/static/js/async/en_.js.map +1 -0
  24. package/doc_build/static/js/async/en_api_.js +55 -0
  25. package/doc_build/static/js/async/en_api_.js.map +1 -0
  26. package/doc_build/static/js/async/en_api_config_build-config.js +8363 -0
  27. package/doc_build/static/js/async/en_api_config_build-config.js.map +1 -0
  28. package/doc_build/static/js/async/en_api_config_build-preset.js +7845 -0
  29. package/doc_build/static/js/async/en_api_config_build-preset.js.map +1 -0
  30. package/doc_build/static/js/async/en_api_config_design-system.js +16345 -0
  31. package/doc_build/static/js/async/en_api_config_design-system.js.map +1 -0
  32. package/doc_build/static/js/async/en_api_config_plugins.js +1492 -0
  33. package/doc_build/static/js/async/en_api_config_plugins.js.map +1 -0
  34. package/doc_build/static/js/async/en_api_config_testing.js +2137 -0
  35. package/doc_build/static/js/async/en_api_config_testing.js.map +1 -0
  36. package/doc_build/static/js/async/en_api_plugin-api_plugin-hooks.js +14362 -0
  37. package/doc_build/static/js/async/en_api_plugin-api_plugin-hooks.js.map +1 -0
  38. package/doc_build/static/js/async/en_guide_advance_asset.js +3997 -0
  39. package/doc_build/static/js/async/en_guide_advance_asset.js.map +1 -0
  40. package/doc_build/static/js/async/en_guide_advance_build-umd.js +9861 -0
  41. package/doc_build/static/js/async/en_guide_advance_build-umd.js.map +1 -0
  42. package/doc_build/static/js/async/en_guide_advance_copy.js +6539 -0
  43. package/doc_build/static/js/async/en_guide_advance_copy.js.map +1 -0
  44. package/doc_build/static/js/async/en_guide_advance_external-dependency.js +3810 -0
  45. package/doc_build/static/js/async/en_guide_advance_external-dependency.js.map +1 -0
  46. package/doc_build/static/js/async/en_guide_advance_in-depth-about-build.js +5046 -0
  47. package/doc_build/static/js/async/en_guide_advance_in-depth-about-build.js.map +1 -0
  48. package/doc_build/static/js/async/en_guide_advance_in-depth-about-dev-command.js +150 -0
  49. package/doc_build/static/js/async/en_guide_advance_in-depth-about-dev-command.js.map +1 -0
  50. package/doc_build/static/js/async/en_guide_advance_theme-config.js +2484 -0
  51. package/doc_build/static/js/async/en_guide_advance_theme-config.js.map +1 -0
  52. package/doc_build/static/js/async/en_guide_basic_before-getting-started.js +3671 -0
  53. package/doc_build/static/js/async/en_guide_basic_before-getting-started.js.map +1 -0
  54. package/doc_build/static/js/async/en_guide_basic_command-preview.js +3961 -0
  55. package/doc_build/static/js/async/en_guide_basic_command-preview.js.map +1 -0
  56. package/doc_build/static/js/async/en_guide_basic_modify-output-product.js +2970 -0
  57. package/doc_build/static/js/async/en_guide_basic_modify-output-product.js.map +1 -0
  58. package/doc_build/static/js/async/en_guide_basic_publish-your-project.js +2182 -0
  59. package/doc_build/static/js/async/en_guide_basic_publish-your-project.js.map +1 -0
  60. package/doc_build/static/js/async/en_guide_basic_test-your-project.js +3892 -0
  61. package/doc_build/static/js/async/en_guide_basic_test-your-project.js.map +1 -0
  62. package/doc_build/static/js/async/en_guide_basic_use-micro-generator.js +168 -0
  63. package/doc_build/static/js/async/en_guide_basic_use-micro-generator.js.map +1 -0
  64. package/doc_build/static/js/async/en_guide_basic_using-storybook.js +4762 -0
  65. package/doc_build/static/js/async/en_guide_basic_using-storybook.js.map +1 -0
  66. package/doc_build/static/js/async/en_guide_best-practices_components.js +21388 -0
  67. package/doc_build/static/js/async/en_guide_best-practices_components.js.map +1 -0
  68. package/doc_build/static/js/async/en_guide_intro_getting-started.js +1906 -0
  69. package/doc_build/static/js/async/en_guide_intro_getting-started.js.map +1 -0
  70. package/doc_build/static/js/async/en_guide_intro_welcome.js +148 -0
  71. package/doc_build/static/js/async/en_guide_intro_welcome.js.map +1 -0
  72. package/doc_build/static/js/async/en_guide_intro_why-module-engineering-solution.js +92 -0
  73. package/doc_build/static/js/async/en_guide_intro_why-module-engineering-solution.js.map +1 -0
  74. package/doc_build/static/js/async/en_plugins_guide_getting-started.js +2560 -0
  75. package/doc_build/static/js/async/en_plugins_guide_getting-started.js.map +1 -0
  76. package/doc_build/static/js/async/en_plugins_guide_plugin-object.js +4177 -0
  77. package/doc_build/static/js/async/en_plugins_guide_plugin-object.js.map +1 -0
  78. package/doc_build/static/js/async/en_plugins_guide_setup-function.js +3819 -0
  79. package/doc_build/static/js/async/en_plugins_guide_setup-function.js.map +1 -0
  80. package/doc_build/static/js/async/en_plugins_official-list_overview.js +70 -0
  81. package/doc_build/static/js/async/en_plugins_official-list_overview.js.map +1 -0
  82. package/doc_build/static/js/async/guide_advance_asset.js +3997 -0
  83. package/doc_build/static/js/async/guide_advance_asset.js.map +1 -0
  84. package/doc_build/static/js/async/guide_advance_build-umd.js +9863 -0
  85. package/doc_build/static/js/async/guide_advance_build-umd.js.map +1 -0
  86. package/doc_build/static/js/async/guide_advance_copy.js +6539 -0
  87. package/doc_build/static/js/async/guide_advance_copy.js.map +1 -0
  88. package/doc_build/static/js/async/guide_advance_external-dependency.js +3812 -0
  89. package/doc_build/static/js/async/guide_advance_external-dependency.js.map +1 -0
  90. package/doc_build/static/js/async/guide_advance_in-depth-about-build.js +5046 -0
  91. package/doc_build/static/js/async/guide_advance_in-depth-about-build.js.map +1 -0
  92. package/doc_build/static/js/async/guide_advance_in-depth-about-dev-command.js +152 -0
  93. package/doc_build/static/js/async/guide_advance_in-depth-about-dev-command.js.map +1 -0
  94. package/doc_build/static/js/async/guide_advance_theme-config.js +2475 -0
  95. package/doc_build/static/js/async/guide_advance_theme-config.js.map +1 -0
  96. package/doc_build/static/js/async/guide_basic_before-getting-started.js +3662 -0
  97. package/doc_build/static/js/async/guide_basic_before-getting-started.js.map +1 -0
  98. package/doc_build/static/js/async/guide_basic_command-preview.js +3793 -0
  99. package/doc_build/static/js/async/guide_basic_command-preview.js.map +1 -0
  100. package/doc_build/static/js/async/guide_basic_modify-output-product.js +2949 -0
  101. package/doc_build/static/js/async/guide_basic_modify-output-product.js.map +1 -0
  102. package/doc_build/static/js/async/guide_basic_publish-your-project.js +2243 -0
  103. package/doc_build/static/js/async/guide_basic_publish-your-project.js.map +1 -0
  104. package/doc_build/static/js/async/guide_basic_test-your-project.js +3892 -0
  105. package/doc_build/static/js/async/guide_basic_test-your-project.js.map +1 -0
  106. package/doc_build/static/js/async/guide_basic_use-micro-generator.js +172 -0
  107. package/doc_build/static/js/async/guide_basic_use-micro-generator.js.map +1 -0
  108. package/doc_build/static/js/async/guide_basic_using-storybook.js +4762 -0
  109. package/doc_build/static/js/async/guide_basic_using-storybook.js.map +1 -0
  110. package/doc_build/static/js/async/guide_best-practices_components.js +21088 -0
  111. package/doc_build/static/js/async/guide_best-practices_components.js.map +1 -0
  112. package/doc_build/static/js/async/guide_intro_getting-started.js +1782 -0
  113. package/doc_build/static/js/async/guide_intro_getting-started.js.map +1 -0
  114. package/doc_build/static/js/async/guide_intro_welcome.js +148 -0
  115. package/doc_build/static/js/async/guide_intro_welcome.js.map +1 -0
  116. package/doc_build/static/js/async/guide_intro_why-module-engineering-solution.js +92 -0
  117. package/doc_build/static/js/async/guide_intro_why-module-engineering-solution.js.map +1 -0
  118. package/doc_build/static/js/async/index.js +85 -0
  119. package/doc_build/static/js/async/index.js.map +1 -0
  120. package/doc_build/static/js/async/packages_cli_doc-core_src_theme-default_components_Search_logic_search_ts.js +447 -0
  121. package/doc_build/static/js/async/packages_cli_doc-core_src_theme-default_components_Search_logic_search_ts.js.map +1 -0
  122. package/doc_build/static/js/async/plugins_guide_getting-started.js +2608 -0
  123. package/doc_build/static/js/async/plugins_guide_getting-started.js.map +1 -0
  124. package/doc_build/static/js/async/plugins_guide_plugin-object.js +4173 -0
  125. package/doc_build/static/js/async/plugins_guide_plugin-object.js.map +1 -0
  126. package/doc_build/static/js/async/plugins_guide_setup-function.js +3819 -0
  127. package/doc_build/static/js/async/plugins_guide_setup-function.js.map +1 -0
  128. package/doc_build/static/js/async/plugins_official-list_overview.js +70 -0
  129. package/doc_build/static/js/async/plugins_official-list_overview.js.map +1 -0
  130. package/doc_build/static/js/async/vendors-node_modules_pnpm_code-hike_mdx_0_7_4_react_18_2_0_node_modules_code-hike_mdx_dist_co-06dd41.js +6656 -0
  131. package/doc_build/static/js/async/vendors-node_modules_pnpm_code-hike_mdx_0_7_4_react_18_2_0_node_modules_code-hike_mdx_dist_co-06dd41.js.map +1 -0
  132. package/doc_build/static/js/async/vendors-node_modules_pnpm_flexsearch_0_6_32_node_modules_flexsearch_dist_flexsearch_min_js.js +54 -0
  133. package/doc_build/static/js/async/vendors-node_modules_pnpm_flexsearch_0_6_32_node_modules_flexsearch_dist_flexsearch_min_js.js.map +1 -0
  134. package/doc_build/static/js/builder-runtime.js +1375 -0
  135. package/doc_build/static/js/builder-runtime.js.map +1 -0
  136. package/doc_build/static/js/lib-lodash.js +4907 -0
  137. package/doc_build/static/js/lib-lodash.js.map +1 -0
  138. package/doc_build/static/js/lib-polyfill.js +24769 -0
  139. package/doc_build/static/js/lib-polyfill.js.map +1 -0
  140. package/doc_build/static/js/lib-react.js +39510 -0
  141. package/doc_build/static/js/lib-react.js.map +1 -0
  142. package/doc_build/static/js/main.js +9237 -0
  143. package/doc_build/static/js/main.js.map +1 -0
  144. package/doc_build/static/js/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.js +8532 -0
  145. package/doc_build/static/js/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.js.map +1 -0
  146. package/docs/en/api/config/_category_.json +4 -0
  147. package/docs/en/api/{build-config.md → config/build-config.md} +201 -108
  148. package/docs/en/api/{build-preset.md → config/build-preset.md} +65 -46
  149. package/docs/{zh/api → en/api/config}/design-system.md +130 -127
  150. package/docs/en/api/config/plugins.md +18 -0
  151. package/docs/en/api/{test.md → config/testing.md} +21 -12
  152. package/docs/en/api/index.md +3 -1
  153. package/docs/en/api/plugin-api/_category_.json +4 -0
  154. package/docs/en/api/plugin-api/plugin-hooks.md +501 -0
  155. package/docs/en/guide/advance/_category_.json +4 -0
  156. package/docs/en/guide/advance/asset.mdx +48 -31
  157. package/docs/en/guide/advance/build-umd.mdx +91 -83
  158. package/docs/en/guide/advance/copy.md +33 -30
  159. package/docs/en/guide/advance/external-dependency.mdx +27 -23
  160. package/docs/en/guide/advance/in-depth-about-build.md +61 -55
  161. package/docs/en/guide/advance/in-depth-about-dev-command.md +7 -4
  162. package/docs/en/guide/advance/theme-config.mdx +80 -0
  163. package/docs/en/guide/basic/_category_.json +4 -0
  164. package/docs/en/guide/basic/before-getting-started.md +29 -24
  165. package/docs/en/guide/basic/command-preview.md +20 -16
  166. package/docs/en/guide/basic/modify-output-product.md +45 -37
  167. package/docs/en/guide/basic/publish-your-project.md +21 -19
  168. package/docs/en/guide/basic/test-your-project.mdx +23 -18
  169. package/docs/en/guide/basic/use-micro-generator.md +15 -8
  170. package/docs/en/guide/basic/using-storybook.mdx +29 -26
  171. package/docs/en/guide/best-practices/_category_.json +4 -0
  172. package/docs/en/guide/best-practices/components.mdx +789 -0
  173. package/docs/en/guide/intro/_category_.json +4 -0
  174. package/docs/en/guide/intro/getting-started.md +11 -6
  175. package/docs/en/guide/intro/welcome.md +4 -0
  176. package/docs/en/guide/intro/why-module-engineering-solution.md +5 -1
  177. package/docs/en/index.md +15 -20
  178. package/docs/en/plugins/guide/_category_.json +4 -0
  179. package/docs/en/plugins/guide/getting-started.mdx +84 -0
  180. package/docs/en/plugins/guide/plugin-object.mdx +85 -0
  181. package/docs/en/plugins/guide/setup-function.mdx +117 -0
  182. package/docs/en/plugins/official-list/_category_.json +4 -0
  183. package/docs/en/plugins/official-list/overview.md +6 -0
  184. package/docs/zh/api/config/_category_.json +4 -0
  185. package/docs/zh/api/config/build-config.md +669 -0
  186. package/docs/zh/api/{build-preset.md → config/build-preset.md} +49 -36
  187. package/docs/zh/api/config/design-system.md +1166 -0
  188. package/docs/zh/api/config/plugins.md +18 -0
  189. package/docs/zh/api/{testing.md → config/testing.md} +18 -13
  190. package/docs/zh/api/index.md +5 -1
  191. package/docs/zh/api/plugin-api/_category_.json +4 -0
  192. package/docs/zh/api/plugin-api/plugin-hooks.md +501 -0
  193. package/docs/zh/guide/advance/_category_.json +4 -0
  194. package/docs/zh/guide/advance/asset.mdx +48 -31
  195. package/docs/zh/guide/advance/build-umd.mdx +91 -74
  196. package/docs/zh/guide/advance/copy.md +33 -30
  197. package/docs/zh/guide/advance/external-dependency.mdx +28 -24
  198. package/docs/zh/guide/advance/in-depth-about-build.md +60 -55
  199. package/docs/zh/guide/advance/in-depth-about-dev-command.md +7 -4
  200. package/docs/zh/guide/advance/theme-config.mdx +78 -0
  201. package/docs/zh/guide/basic/_category_.json +4 -0
  202. package/docs/zh/guide/basic/before-getting-started.md +28 -23
  203. package/docs/zh/guide/basic/command-preview.md +19 -15
  204. package/docs/zh/guide/basic/modify-output-product.md +45 -38
  205. package/docs/zh/guide/basic/publish-your-project.md +22 -17
  206. package/docs/zh/guide/basic/test-your-project.mdx +24 -18
  207. package/docs/zh/guide/basic/use-micro-generator.md +12 -9
  208. package/docs/zh/guide/basic/using-storybook.mdx +29 -24
  209. package/docs/zh/guide/best-practices/_category_.json +4 -0
  210. package/docs/zh/guide/best-practices/components.mdx +793 -0
  211. package/docs/zh/guide/intro/_category_.json +4 -0
  212. package/docs/zh/guide/intro/getting-started.md +12 -6
  213. package/docs/zh/guide/intro/welcome.md +4 -0
  214. package/docs/zh/guide/intro/why-module-engineering-solution.md +5 -1
  215. package/docs/zh/index.md +3 -2
  216. package/docs/zh/plugins/guide/_category_.json +4 -0
  217. package/docs/zh/plugins/guide/getting-started.mdx +84 -0
  218. package/docs/zh/plugins/guide/plugin-object.mdx +85 -0
  219. package/docs/zh/plugins/guide/setup-function.mdx +117 -0
  220. package/docs/zh/plugins/official-list/_category_.json +4 -0
  221. package/docs/zh/plugins/official-list/overview.md +5 -0
  222. package/modern.config.ts +119 -0
  223. package/package.json +8 -6
  224. package/{docs/.island/styles → theme}/index.css +0 -1
  225. package/theme/index.ts +4 -0
  226. package/tsconfig.json +7 -0
  227. package/docs/.island/config.ts +0 -245
  228. package/docs/.island/dist/404.html +0 -41
  229. package/docs/.island/dist/assets/before-getting-started.1b82b538.js +0 -87
  230. package/docs/.island/dist/assets/before-getting-started.582a31cc.js +0 -87
  231. package/docs/.island/dist/assets/build-config.72eb0918.js +0 -804
  232. package/docs/.island/dist/assets/build-config.d8bb1658.js +0 -809
  233. package/docs/.island/dist/assets/build-preset.96805d7d.js +0 -256
  234. package/docs/.island/dist/assets/build-preset.c20dcd40.js +0 -256
  235. package/docs/.island/dist/assets/build-your-ui.7f349247.js +0 -2
  236. package/docs/.island/dist/assets/build-your-ui.a8361604.js +0 -2
  237. package/docs/.island/dist/assets/command-preview.2d45fc82.js +0 -264
  238. package/docs/.island/dist/assets/command-preview.dc51b953.js +0 -264
  239. package/docs/.island/dist/assets/components.esm.03560353.js +0 -9
  240. package/docs/.island/dist/assets/design-system.86694ff5.js +0 -1254
  241. package/docs/.island/dist/assets/design-system.c4745cce.js +0 -639
  242. package/docs/.island/dist/assets/dev.1d326a37.js +0 -37
  243. package/docs/.island/dist/assets/dev.1fd06000.js +0 -37
  244. package/docs/.island/dist/assets/down.f35427d3.svg +0 -1
  245. package/docs/.island/dist/assets/extension.12299fd6.js +0 -2
  246. package/docs/.island/dist/assets/extension.96dc63a4.js +0 -2
  247. package/docs/.island/dist/assets/getting-started.40e9218d.js +0 -117
  248. package/docs/.island/dist/assets/getting-started.b1ed3f10.js +0 -114
  249. package/docs/.island/dist/assets/github.3bf8ccee.svg +0 -1
  250. package/docs/.island/dist/assets/index.2b2347ea.js +0 -33
  251. package/docs/.island/dist/assets/index.6cef6f5f.js +0 -4
  252. package/docs/.island/dist/assets/index.cb118238.js +0 -36
  253. package/docs/.island/dist/assets/index.ccb6ce27.js +0 -4
  254. package/docs/.island/dist/assets/island_inject.11a12ecc.js +0 -1
  255. package/docs/.island/dist/assets/island_inject.b13deaee.js +0 -1
  256. package/docs/.island/dist/assets/loading.8c9bb911.svg +0 -1
  257. package/docs/.island/dist/assets/modify-output-product.7f6bff35.js +0 -100
  258. package/docs/.island/dist/assets/modify-output-product.b91eff1f.js +0 -100
  259. package/docs/.island/dist/assets/moon.6b705924.svg +0 -3
  260. package/docs/.island/dist/assets/plugin.895932d8.js +0 -42
  261. package/docs/.island/dist/assets/plugin.d2fbc531.js +0 -42
  262. package/docs/.island/dist/assets/publish-your-project.21b8309f.js +0 -164
  263. package/docs/.island/dist/assets/publish-your-project.8d398b17.js +0 -166
  264. package/docs/.island/dist/assets/right.89674cd7.svg +0 -1
  265. package/docs/.island/dist/assets/search.0aea6901.svg +0 -1
  266. package/docs/.island/dist/assets/search.1c85d17c.js +0 -3
  267. package/docs/.island/dist/assets/search.484eca11.js +0 -222
  268. package/docs/.island/dist/assets/search.54fca8d0.js +0 -3
  269. package/docs/.island/dist/assets/style.09015a4b.css +0 -1
  270. package/docs/.island/dist/assets/style.2e5f7bc2.css +0 -1970
  271. package/docs/.island/dist/assets/sun.841dac10.svg +0 -11
  272. package/docs/.island/dist/assets/test-your-project.18bd4582.js +0 -190
  273. package/docs/.island/dist/assets/test-your-project.f53bebf7.js +0 -190
  274. package/docs/.island/dist/assets/test.0da1f99f.js +0 -67
  275. package/docs/.island/dist/assets/test.0e81f002.js +0 -66
  276. package/docs/.island/dist/assets/translator.b1077c44.svg +0 -1
  277. package/docs/.island/dist/assets/use-micro-generator.7d9e4016.js +0 -60
  278. package/docs/.island/dist/assets/use-micro-generator.db5520c1.js +0 -60
  279. package/docs/.island/dist/assets/using-storybook.57ea6b77.js +0 -260
  280. package/docs/.island/dist/assets/using-storybook.a2212f2e.js +0 -260
  281. package/docs/.island/dist/assets/welcome.0449a9c8.js +0 -13
  282. package/docs/.island/dist/assets/welcome.a8448931.js +0 -13
  283. package/docs/.island/dist/assets/why-module-engineering-solution.6ae8c0e3.js +0 -26
  284. package/docs/.island/dist/assets/why-module-engineering-solution.c9a45cbd.js +0 -26
  285. package/docs/.island/dist/chunk-COLCRJ2V.js +0 -1
  286. package/docs/.island/dist/chunk-K5FMOYDC.js +0 -10
  287. package/docs/.island/dist/chunk-WE42KMYS.js +0 -26
  288. package/docs/.island/dist/client-entry.js +0 -3
  289. package/docs/.island/dist/en/api/build-config.html +0 -344
  290. package/docs/.island/dist/en/api/build-preset.html +0 -82
  291. package/docs/.island/dist/en/api/design-system.html +0 -155
  292. package/docs/.island/dist/en/api/dev.html +0 -45
  293. package/docs/.island/dist/en/api/index.html +0 -41
  294. package/docs/.island/dist/en/api/plugin.html +0 -48
  295. package/docs/.island/dist/en/api/test.html +0 -58
  296. package/docs/.island/dist/en/guide/before-getting-started.html +0 -127
  297. package/docs/.island/dist/en/guide/build-your-ui.html +0 -41
  298. package/docs/.island/dist/en/guide/command-preview.html +0 -100
  299. package/docs/.island/dist/en/guide/extension.html +0 -41
  300. package/docs/.island/dist/en/guide/getting-started.html +0 -76
  301. package/docs/.island/dist/en/guide/modify-output-product.html +0 -140
  302. package/docs/.island/dist/en/guide/publish-your-project.html +0 -91
  303. package/docs/.island/dist/en/guide/test-your-project.html +0 -72
  304. package/docs/.island/dist/en/guide/use-micro-generator.html +0 -65
  305. package/docs/.island/dist/en/guide/using-storybook.html +0 -113
  306. package/docs/.island/dist/en/guide/welcome.html +0 -53
  307. package/docs/.island/dist/en/guide/why-module-engineering-solution.html +0 -49
  308. package/docs/.island/dist/en/index.html +0 -42
  309. package/docs/.island/dist/react-dom.js +0 -1
  310. package/docs/.island/dist/react-dom_client.js +0 -1
  311. package/docs/.island/dist/react.js +0 -1
  312. package/docs/.island/dist/react_jsx-runtime.js +0 -10
  313. package/docs/.island/dist/ssr-manifest.json +0 -57
  314. package/docs/.island/dist/test-result.png +0 -0
  315. package/docs/.island/dist/why-module-solution.png +0 -0
  316. package/docs/.island/dist/zh/api/build-config.html +0 -347
  317. package/docs/.island/dist/zh/api/build-preset.html +0 -82
  318. package/docs/.island/dist/zh/api/design-system.html +0 -149
  319. package/docs/.island/dist/zh/api/dev.html +0 -46
  320. package/docs/.island/dist/zh/api/index.html +0 -41
  321. package/docs/.island/dist/zh/api/plugin.html +0 -48
  322. package/docs/.island/dist/zh/api/test.html +0 -59
  323. package/docs/.island/dist/zh/guide/before-getting-started.html +0 -127
  324. package/docs/.island/dist/zh/guide/build-your-ui.html +0 -41
  325. package/docs/.island/dist/zh/guide/command-preview.html +0 -100
  326. package/docs/.island/dist/zh/guide/extension.html +0 -41
  327. package/docs/.island/dist/zh/guide/getting-started.html +0 -79
  328. package/docs/.island/dist/zh/guide/modify-output-product.html +0 -140
  329. package/docs/.island/dist/zh/guide/publish-your-project.html +0 -92
  330. package/docs/.island/dist/zh/guide/test-your-project.html +0 -72
  331. package/docs/.island/dist/zh/guide/use-micro-generator.html +0 -65
  332. package/docs/.island/dist/zh/guide/using-storybook.html +0 -114
  333. package/docs/.island/dist/zh/guide/welcome.html +0 -53
  334. package/docs/.island/dist/zh/guide/why-module-engineering-solution.html +0 -49
  335. package/docs/.island/dist/zh/index.html +0 -42
  336. package/docs/.island/index.html +0 -39
  337. package/docs/en/api/design-system.md +0 -524
  338. package/docs/en/api/dev.md +0 -32
  339. package/docs/en/api/plugin.md +0 -34
  340. package/docs/zh/api/build-config.md +0 -570
  341. package/docs/zh/api/dev.md +0 -33
  342. package/docs/zh/api/plugins.md +0 -108
@@ -0,0 +1,793 @@
1
+ ---
2
+ sidebar_position: 1
3
+ ---
4
+
5
+ # 开发组件
6
+
7
+ 本章将要介绍如何使用模块工程解决方案开发组件项目。
8
+
9
+ ## 初始化项目
10
+
11
+ <CH.Spotlight>
12
+
13
+ ```bash 交互式问题
14
+ npx @modern-js/create components-project
15
+
16
+ ? 请选择你想创建的工程类型 模块
17
+ ? 请填写项目名称 components-demo
18
+ ? 请选择开发语言 TS
19
+ ? 请选择包管理工具 pnpm
20
+ ```
21
+
22
+ ---
23
+
24
+ 推荐使用 `@modern-js/create` 命令来初始化一个 npm 项目。
25
+
26
+ ```bash 交互式问题
27
+ npx @modern-js/create components-project
28
+
29
+ ? 请选择你想创建的工程类型 模块
30
+ ? 请填写项目名称 components-demo
31
+ ? 请选择开发语言 TS
32
+ ? 请选择包管理工具 pnpm
33
+ ```
34
+
35
+ ---
36
+
37
+ 初始化的目录结构。
38
+
39
+ ```bash 初始化的目录结构。
40
+ .
41
+ ├── README.md
42
+ ├── node_modules/
43
+ ├── dist/
44
+ ├── modern.config.ts
45
+ ├── package.json
46
+ ├── pnpm-lock.yaml
47
+ ├── src
48
+ │ ├── index.ts
49
+ │ └── modern-app-env.d.ts
50
+ └── tsconfig.json
51
+ ```
52
+
53
+ ---
54
+
55
+ 修改 `./src/index.ts` 文件后缀和内容。
56
+
57
+ 此时就初始化了一个组件项目。
58
+
59
+ ```tsx ./src/index.tsx
60
+ export default () => {
61
+ return <div>hello world</div>;
62
+ };
63
+ ```
64
+
65
+ </CH.Spotlight>
66
+
67
+ ## 使用 Storybook 调试代码
68
+
69
+ <CH.Spotlight>
70
+
71
+ ```bash 终端
72
+ pnpm run new
73
+
74
+ ? 请选择你想要的操作 启用可选功能
75
+ ? 启用可选功能 启用「Storybook」
76
+ ```
77
+
78
+ ---
79
+
80
+ 在项目根目录下执行 `new` 命令,可以开启 Storybook 功能。
81
+
82
+ ```bash 终端
83
+ pnpm run new
84
+
85
+ ? 请选择你想要的操作 启用可选功能
86
+ ? 启用可选功能 启用「Storybook」
87
+ ```
88
+
89
+ ---
90
+
91
+ 成功开启后,会看到 `package.json` 中新增了依赖。同时创建了 `stories` 目录和相关的初始化文件。
92
+
93
+ <CH.Code>
94
+
95
+ ```json ./package.json focus=4:7
96
+ {
97
+ "name": "components-demo",
98
+ "devDependencies": {
99
+ "@modern-js/plugin-storybook": "x.y.z",
100
+ "@modern-js/runtime": "x.y.z",
101
+ "react": "^17",
102
+ "react-dom": "^17"
103
+ }
104
+ }
105
+ ```
106
+
107
+ ```bash 目录结构
108
+ .
109
+ ├── src
110
+ │ ├── index.ts
111
+ │ └── modern-app-env.d.ts
112
+ ├── stories
113
+ │ ├── .eslintrc.js
114
+ │ ├── index.stories.tsx
115
+ │ └── tsconfig.json
116
+ ```
117
+
118
+ </CH.Code>
119
+
120
+ ---
121
+
122
+ 初始化后,在 `./stories` 目录下的 `tsconfig.json` 文件中默认设置了与项目同名的 `paths` 配置。
123
+
124
+ ```json ./stories/tsconfig.json focus=5:7
125
+ {
126
+ "extends": "../tsconfig.json",
127
+ "compilerOptions": {
128
+ "baseUrl": "../",
129
+ "paths": {
130
+ "components-demo": ["./"],
131
+ "components-demo/*": ["./*"]
132
+ }
133
+ },
134
+ "include": ["**/*"]
135
+ }
136
+ ```
137
+
138
+ ---
139
+
140
+ 这样的配置可以让你在 Story 代码中直接使用项目的名称引入代码。
141
+
142
+ <CH.Code>
143
+
144
+ ```tsx ./stories/index.stories.tsx
145
+ import Component from 'components-demo';
146
+
147
+ export const YourStory = () => <Component />;
148
+
149
+ export default {
150
+ title: 'Your Stories',
151
+ };
152
+ ```
153
+
154
+ ---
155
+
156
+ ```tsx ./src/index.tsx
157
+ export default () => {
158
+ return <div>hello world</div>;
159
+ };
160
+ ```
161
+
162
+ </CH.Code>
163
+
164
+ ---
165
+
166
+ 此时 Storybook 会根据项目的 `package.json` 文件中的 `main`、`exports` 这样的字段确认导入代码的入口;
167
+ 根据 `types` 字段确定类型文件的位置。
168
+
169
+ ```json package.json
170
+ {
171
+ "name": "components-demo",
172
+ "main": "./dist/esm/index.js",
173
+ "types": "./dist/types/index.d.ts"
174
+ }
175
+ ```
176
+
177
+ ---
178
+
179
+ 虽然也支持导入源代码进行调试,不过使用项目产物调试更加可靠。
180
+
181
+ 使用源代码调试存在局限性:某些配置无法在 Storybook 和原本构建支持的配置等价使用。
182
+
183
+ **因此更推荐使用产物进行调试**。
184
+
185
+ ```tsx ./stories/index.stories.tsx
186
+ import Component from '../src';
187
+
188
+ export const YourStory = () => <Component />;
189
+
190
+ export default {
191
+ title: 'Your Stories',
192
+ };
193
+ ```
194
+
195
+ </CH.Spotlight>
196
+
197
+ ## 开发样式
198
+
199
+ 接下来我们可以给组件添加样式。
200
+
201
+ 目前支持开发样式的能力有:
202
+
203
+ - CSS/PostCSS
204
+ - Less
205
+ - Scss/Sass
206
+ - Tailwind CSS
207
+ - CSS Modules
208
+
209
+ ### CSS/PostCSS
210
+
211
+ 模块工程支持 PostCSS,并且内置了以下 postcss 插件:
212
+
213
+ - [flexbugs-fixes](https://github.com/luisrudge/postcss-flexbugs-fixes)
214
+ - [custom-properties](https://github.com/postcss/postcss-custom-properties)
215
+ - [initial](https://github.com/maximkoretskiy/postcss-initial)
216
+ - [page-break](https://github.com/shrpne/postcss-page-break)
217
+ - [font-variant](https://github.com/postcss/postcss-font-variant)
218
+ - [media-minmax](https://github.com/postcss/postcss-media-minmax)
219
+ - [nesting](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-nesting#readme)
220
+
221
+ 因此我们可以在项目中创建 `.css` 文件,并且可以直接在 css 文件中使用这些插件提供的语法支持和能力。
222
+
223
+ <CH.Spotlight>
224
+
225
+ ```css ./src/index.css
226
+ a,
227
+ b {
228
+ color: red;
229
+
230
+ /* "&" comes first */
231
+ & c,
232
+ & d {
233
+ color: white;
234
+ }
235
+
236
+ /* "&" comes later, requiring "@nest" */
237
+ @nest e & {
238
+ color: yellow;
239
+ }
240
+ }
241
+ ```
242
+
243
+ ---
244
+
245
+ 源代码。
246
+
247
+ ```css ./src/index.css
248
+
249
+ ```
250
+
251
+ ---
252
+
253
+ css 产物。
254
+
255
+ ```css ./dist/es/index.css
256
+ a,
257
+ b {
258
+ color: red;
259
+ }
260
+ a c,
261
+ b c,
262
+ a d,
263
+ b d {
264
+ color: white;
265
+ }
266
+ e a,
267
+ e b {
268
+ color: yellow;
269
+ }
270
+ ```
271
+
272
+ </CH.Spotlight>
273
+
274
+ ### Less
275
+
276
+ 模块工程支持使用 Less 开发样式。
277
+
278
+ > 目前支持的版本为 4.1.3
279
+
280
+ <CH.Spotlight>
281
+
282
+ ```less ./src/common.less
283
+ @bg: black;
284
+ @bg-light: boolean(luma(@bg) > 50%);
285
+
286
+ div {
287
+ background: @bg;
288
+ color: if(@bg-light, black, white);
289
+ }
290
+ ```
291
+
292
+ ---
293
+
294
+ 源代码。
295
+
296
+ ```less ./src/common.less
297
+
298
+ ```
299
+
300
+ ---
301
+
302
+ Less 产物。
303
+
304
+ ```css ./dist/es/common.css
305
+ div {
306
+ background: black;
307
+ color: white;
308
+ }
309
+ ```
310
+
311
+ </CH.Spotlight>
312
+
313
+ ### Sass/Scss
314
+
315
+ 模块工程支持使用 Scss/Sass 开发样式。
316
+
317
+ > 目前支持的版本为 1.54.4
318
+
319
+ <CH.Spotlight>
320
+
321
+ ```sass ./src/common.sass
322
+ $font-stack: Helvetica, sans-serif;
323
+ $primary-color: #333;
324
+
325
+ body {
326
+ font: 100% $font-stack;
327
+ color: $primary-color;
328
+ }
329
+ ```
330
+
331
+ ---
332
+
333
+ 源代码。
334
+
335
+ ```sass ./src/common.sass
336
+
337
+ ```
338
+
339
+ ---
340
+
341
+ Less 产物。
342
+
343
+ ```css ./dist/es/common.css
344
+ body {
345
+ font: 100% Helvetica, sans-serif;
346
+ color: #333;
347
+ }
348
+ ```
349
+
350
+ </CH.Spotlight>
351
+
352
+ ### Tailwind CSS
353
+
354
+ 模块工程支持使用 Tailwind CSS 开发组件样式。
355
+
356
+ 默认情况下,模块工程没有开启该功能,需要按照下面的方式开启它。
357
+
358
+ <CH.Spotlight>
359
+
360
+ ```bash 终端
361
+ pnpm run new
362
+
363
+ ? 请选择你想要的操作 启用可选功能
364
+ ? 启用可选功能 启用「Storybook」
365
+ ```
366
+
367
+ ---
368
+
369
+ 在项目根目录下执行 `new` 命令,可以开启 Tailwind CSS 功能。
370
+
371
+ ```bash 终端
372
+ pnpm run new
373
+
374
+ ? 请选择你想要的操作 启用可选功能
375
+ ? 启用可选功能 启用 Tailwind CSS 支持
376
+ ```
377
+
378
+ ---
379
+
380
+ 成功开启后,会看到 `package.json` 中新增了依赖。
381
+
382
+ ```json ./package.json
383
+ {
384
+ "devDependencies": {
385
+ "@modern-js/plugin-tailwindcss": "x.y.z"
386
+ }
387
+ }
388
+ ```
389
+
390
+ </CH.Spotlight>
391
+
392
+ Tailwind CSS 提供了两种使用方式:
393
+
394
+ #### HTML 类名
395
+
396
+ <CH.Spotlight>
397
+
398
+ ```tsx ./src/index.tsx
399
+ import 'tailwindcss/utilities.css';
400
+
401
+ export default () => {
402
+ return <div className="bg-black text-white">hello world</div>;
403
+ };
404
+ ```
405
+
406
+ ---
407
+
408
+ Tailwind CSS 支持在 HTML 标签上使用类名的方式增加样式。
409
+
410
+ ```tsx ./src/index.tsx focus=5:5
411
+
412
+ ```
413
+
414
+ ---
415
+
416
+ **当使用 HTML 类名的时候,一定要注意导入 Tailwind CSS 相应的 css 文件。**
417
+
418
+ ```tsx ./src/index.tsx focus=1:1
419
+
420
+ ```
421
+
422
+ ---
423
+
424
+ 样式产物。
425
+
426
+ > 此时是 bundle 构建。
427
+
428
+ ```css ./dist/es/index.css
429
+ /* ../../node_modules/.pnpm/tailwindcss@2.2.19/node_modules/tailwindcss/utilities.css */
430
+ .table {
431
+ display: table;
432
+ }
433
+ @keyframes spin {
434
+ to {
435
+ transform: rotate(360deg);
436
+ }
437
+ }
438
+ @keyframes ping {
439
+ 75%,
440
+ 100% {
441
+ transform: scale(2);
442
+ opacity: 0;
443
+ }
444
+ }
445
+ @keyframes pulse {
446
+ 50% {
447
+ opacity: 0.5;
448
+ }
449
+ }
450
+ @keyframes bounce {
451
+ 0%,
452
+ 100% {
453
+ transform: translateY(-25%);
454
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
455
+ }
456
+ 50% {
457
+ transform: none;
458
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
459
+ }
460
+ }
461
+ .bg-black {
462
+ --tw-bg-opacity: 1;
463
+ background-color: rgba(0, 0, 0, var(--tw-bg-opacity));
464
+ }
465
+ .text-white {
466
+ --tw-text-opacity: 1;
467
+ color: rgba(255, 255, 255, var(--tw-text-opacity));
468
+ }
469
+ *,
470
+ ::before,
471
+ ::after {
472
+ --tw-shadow: 0 0 #0000;
473
+ }
474
+ *,
475
+ ::before,
476
+ ::after {
477
+ --tw-ring-inset: var(--tw-empty);
478
+ --tw-ring-offset-width: 0px;
479
+ --tw-ring-offset-color: #fff;
480
+ --tw-ring-color: rgba(59, 130, 246, 0.5);
481
+ --tw-ring-offset-shadow: 0 0 #0000;
482
+ --tw-ring-shadow: 0 0 #0000;
483
+ }
484
+ @media (min-width: 640px) {
485
+ }
486
+ @media (min-width: 768px) {
487
+ }
488
+ @media (min-width: 1024px) {
489
+ }
490
+ @media (min-width: 1280px) {
491
+ }
492
+ @media (min-width: 1536px) {
493
+ }
494
+ ```
495
+
496
+ </CH.Spotlight>
497
+
498
+ #### `@apply`
499
+
500
+ Tailwind CSS 提供了 [`@apply`](https://v2.tailwindcss.com/docs/functions-and-directives#apply) 指令,可以通过它将 Tailwind CSS 提供的样式内联到我们编写的样式中。
501
+
502
+ `@apply` 可以用于 CSS、Less、Sass 中。
503
+
504
+ ```css
505
+ .btn {
506
+ @apply font-bold py-2 px-4 rounded;
507
+ }
508
+ ```
509
+
510
+ 但是使用过程中,对于 Less 和 Sass 有些情况需要注意:
511
+
512
+ ##### Sass
513
+
514
+ 当将 Tailwind 与 Sass 一起使用时,`@apply` 后面存在 `!important` 的时候,需要使用插值来让 Sass 正确编译。
515
+
516
+ <CH.Spotlight>
517
+
518
+ ```sass
519
+ .alert {
520
+ @apply bg-red-500 !important;
521
+ }
522
+ ```
523
+
524
+ ---
525
+
526
+ 不能正常工作。
527
+
528
+ ```sass
529
+
530
+ ```
531
+
532
+ ---
533
+
534
+ 能够正常工作。
535
+
536
+ ```sass
537
+ .alert {
538
+ @apply bg-red-500 #{!important};
539
+ }
540
+ ```
541
+
542
+ </CH.Spotlight>
543
+
544
+ ##### Less
545
+
546
+ 在与 Less 一起使用 Tailwind 时,你不能嵌套 Tailwind 的 `@screen` 指令。
547
+
548
+ <CH.Spotlight>
549
+
550
+ ```less
551
+ .card {
552
+ @apply rounded-none;
553
+
554
+ @screen sm {
555
+ @apply rounded-lg;
556
+ }
557
+ }
558
+ ```
559
+
560
+ ---
561
+
562
+ 不能正常工作。
563
+
564
+ ```less
565
+
566
+ ```
567
+
568
+ ---
569
+
570
+ 相反,使用常规的媒体查询和 `theme()` 函数来引用你的屏幕尺寸,或者干脆不要嵌套你的 `@screen` 指令。
571
+
572
+ <CH.Code>
573
+
574
+ ```less 方法一
575
+ // Use a regular media query and theme()
576
+ .card {
577
+ @apply rounded-none;
578
+
579
+ @media (min-width: theme('screens.sm')) {
580
+ @apply rounded-lg;
581
+ }
582
+ }
583
+ ```
584
+
585
+ ---
586
+
587
+ ```less 方法二
588
+ // Use the @screen directive at the top-level
589
+ .card {
590
+ @apply rounded-none;
591
+
592
+ @media (min-width: theme('screens.sm')) {
593
+ @apply rounded-lg;
594
+ }
595
+ }
596
+ ```
597
+
598
+ </CH.Code>
599
+
600
+ </CH.Spotlight>
601
+
602
+ #### 推荐方式
603
+
604
+ **推荐使用 `@apply` 指定的方式开发样式,这样在样式产物中仅包含通过指令内联的样式。**
605
+
606
+ 当使用 HTML 类名的方式添加样式的时候,默认情况下 Tailwind 不仅会将本身类名对应的样式加入产物中,同时还会有额外的样式代码存在,虽然这些代码可能不会对本身的样式产生影响。
607
+
608
+ #### bundle 和 bundleless 构建产物区别
609
+
610
+ 对于以下代码,在 bundle 和 bundleless 两种模式下,构建产物会有很大区别。
611
+
612
+ > 所谓 bundle 和 bundleless 可以查看 [【Bundle 和 Bundleless】](/guide/advance/in-depth-about-build#bundle-和-bundleless)
613
+
614
+ ```tsx ./src/index.tsx
615
+ import 'tailwindcss/utilities.css';
616
+
617
+ export default () => {
618
+ return <div className="bg-black text-white">hello world11</div>;
619
+ };
620
+ ```
621
+
622
+ Bundle 模式下,会将第三方依赖打包进来。
623
+
624
+ 对于样式则会生成一份单独的产物文件,并且在 Js 产物文件中并不会存在导入样式的相关代码。
625
+
626
+ 如果需要将样式注入 Js 产物中,可以开启 [`style.inject` API](/api/config/build-config#inject)。
627
+
628
+ <CH.Code>
629
+ ```css ./dist/es/index.css
630
+ /* ../../node_modules/.pnpm/tailwindcss@2.2.19/node_modules/tailwindcss/utilities.css */
631
+ .table {
632
+ display: table;
633
+ }
634
+ @keyframes spin {
635
+ to {
636
+ transform: rotate(360deg);
637
+ }
638
+ }
639
+ @keyframes ping {
640
+ 75%, 100% {
641
+ transform: scale(2);
642
+ opacity: 0;
643
+ }
644
+ }
645
+ @keyframes pulse {
646
+ 50% {
647
+ opacity: .5;
648
+ }
649
+ }
650
+ @keyframes bounce {
651
+ 0%, 100% {
652
+ transform: translateY(-25%);
653
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
654
+ }
655
+ 50% {
656
+ transform: none;
657
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
658
+ }
659
+ }
660
+ .bg-black {
661
+ --tw-bg-opacity: 1;
662
+ background-color: rgba(0, 0, 0, var(--tw-bg-opacity));
663
+ }
664
+ .text-white {
665
+ --tw-text-opacity: 1;
666
+ color: rgba(255, 255, 255, var(--tw-text-opacity));
667
+ }
668
+ *,
669
+ ::before,
670
+ ::after {
671
+ --tw-shadow: 0 0 #0000 ;
672
+ }
673
+ *,
674
+ ::before,
675
+ ::after {
676
+ --tw-ring-inset: var(--tw-empty, );
677
+ --tw-ring-offset-width: 0px;
678
+ --tw-ring-offset-color: #fff;
679
+ --tw-ring-color: rgba(59, 130, 246, 0.5);
680
+ --tw-ring-offset-shadow: 0 0 #0000;
681
+ --tw-ring-shadow: 0 0 #0000 ;
682
+ }
683
+ @media (min-width: 640px) {
684
+ }
685
+ @media (min-width: 768px) {
686
+ }
687
+ @media (min-width: 1024px) {
688
+ }
689
+ @media (min-width: 1280px) {
690
+ }
691
+ @media (min-width: 1536px) {
692
+ }
693
+ ```
694
+ ---
695
+ ``` js ./dist/es/index.js
696
+ // src/index.tsx
697
+ import { jsx } from "react/jsx-runtime";
698
+ var src_default = () => {
699
+ return /* @__PURE__ */ jsx("div", {
700
+ className: "bg-black text-white",
701
+ children: "hello world11"
702
+ });
703
+ };
704
+ export {
705
+ src_default as default
706
+ };
707
+ ```
708
+ </CH.Code>
709
+
710
+ Bundleless 模式下,并不会将第三方依赖打包进来,此时不会有样式产物生成。
711
+
712
+ ```js ./dist/es/index.js
713
+ import { jsx } from 'react/jsx-runtime';
714
+ import 'tailwindcss/utilities.css';
715
+ var src_default = () => {
716
+ return /* @__PURE__ */ jsx('div', {
717
+ className: 'bg-black text-white',
718
+ children: 'hello world11',
719
+ });
720
+ };
721
+ export { src_default as default };
722
+ ```
723
+
724
+ ### CSS Modules
725
+
726
+ 模块工程支持使用 CSS Module 开发样式。默认情况下会将以下文件识别为 CSS Module 文件:
727
+
728
+ - `.module.css`
729
+ - `.module.less`
730
+ - `.module.scss`
731
+ - `.module.sass`
732
+
733
+ 如果需要对 CSS Modules 进行配置,可以查看一下 API:
734
+
735
+ - [autoModules](/api/config/build-config#automodules)
736
+ - [modules](/api/config/build-config#modules)
737
+
738
+ 下面是一个代码示例:
739
+
740
+ <CH.Code>
741
+
742
+ ```tsx ./src/index.tsx
743
+ import style from './index.module.css';
744
+
745
+ export default () => {
746
+ return <div className={style.btn}>hello world</div>;
747
+ };
748
+ ```
749
+
750
+ ```css ./src/index.module.css
751
+ .btn {
752
+ color: blue;
753
+ }
754
+ ```
755
+
756
+ </CH.Code>
757
+
758
+ ## 配置构建产物
759
+
760
+ 根据组件项目使用的多数场景,**推荐使用 `npm-component` 构建预设**。该预设得到的产物目录结构为:
761
+
762
+ ```bash
763
+ .
764
+ ├── dist
765
+ │ ├── es
766
+ │ ├── lib
767
+ │ └── types
768
+ ```
769
+
770
+ - `./dist/es`: 包含了支持 es6 语法的 ES modules 格式的 bundleless 产物。
771
+ - `./dist/lib`: 包含了支持 es6 语法的 CommonJS 格式的 bundleless 产物。
772
+ - `./dist/types`: 包含了类型文件。
773
+
774
+ 如果对使用语法支持有要求,可以手动配置 [`buildPreset`](/api/config/build-preset),并且支持在 `npm-component` 基础上增加后缀的方式修改支持的语法:
775
+
776
+ ```tsx
777
+ export default defineConfig({
778
+ buildPreset: 'npm-component-es2019',
779
+ });
780
+ ```
781
+
782
+ 如果对构建产物目录结构有特殊需求,则可以使用 [`buildConfig` API](/api/config/build-config),可以通过以下文档来了解使用方式:
783
+
784
+ - [修改输出产物](/guide/basic/modify-output-product#构建配置对象)
785
+ - [深入理解构建](/guide/advance/in-depth-about-build)
786
+
787
+ ## 测试组件
788
+
789
+ 关于如何对组件进行测试,可以参考 [【测试项目】](/guide/basic/test-your-project)。
790
+
791
+ ## 发布组件
792
+
793
+ 推荐使用模块工程提供版本发布功能,可以参考 [【版本管理与发布】](/guide/basic/publish-your-project)。