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

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 (163) hide show
  1. package/LICENSE +144 -0
  2. package/docs/.island/config.ts +245 -0
  3. package/docs/.island/dist/404.html +41 -0
  4. package/docs/.island/dist/assets/before-getting-started.1b82b538.js +87 -0
  5. package/docs/.island/dist/assets/before-getting-started.582a31cc.js +87 -0
  6. package/docs/.island/dist/assets/build-config.72eb0918.js +804 -0
  7. package/docs/.island/dist/assets/build-config.d8bb1658.js +809 -0
  8. package/docs/.island/dist/assets/build-preset.96805d7d.js +256 -0
  9. package/docs/.island/dist/assets/build-preset.c20dcd40.js +256 -0
  10. package/docs/.island/dist/assets/build-your-ui.7f349247.js +2 -0
  11. package/docs/.island/dist/assets/build-your-ui.a8361604.js +2 -0
  12. package/docs/.island/dist/assets/command-preview.2d45fc82.js +264 -0
  13. package/docs/.island/dist/assets/command-preview.dc51b953.js +264 -0
  14. package/docs/.island/dist/assets/components.esm.03560353.js +9 -0
  15. package/docs/.island/dist/assets/design-system.86694ff5.js +1254 -0
  16. package/docs/.island/dist/assets/design-system.c4745cce.js +639 -0
  17. package/docs/.island/dist/assets/dev.1d326a37.js +37 -0
  18. package/docs/.island/dist/assets/dev.1fd06000.js +37 -0
  19. package/docs/.island/dist/assets/down.f35427d3.svg +1 -0
  20. package/docs/.island/dist/assets/extension.12299fd6.js +2 -0
  21. package/docs/.island/dist/assets/extension.96dc63a4.js +2 -0
  22. package/docs/.island/dist/assets/getting-started.40e9218d.js +117 -0
  23. package/docs/.island/dist/assets/getting-started.b1ed3f10.js +114 -0
  24. package/docs/.island/dist/assets/github.3bf8ccee.svg +1 -0
  25. package/docs/.island/dist/assets/index.2b2347ea.js +33 -0
  26. package/docs/.island/dist/assets/index.6cef6f5f.js +4 -0
  27. package/docs/.island/dist/assets/index.cb118238.js +36 -0
  28. package/docs/.island/dist/assets/index.ccb6ce27.js +4 -0
  29. package/docs/.island/dist/assets/island_inject.11a12ecc.js +1 -0
  30. package/docs/.island/dist/assets/island_inject.b13deaee.js +1 -0
  31. package/docs/.island/dist/assets/loading.8c9bb911.svg +1 -0
  32. package/docs/.island/dist/assets/modify-output-product.7f6bff35.js +100 -0
  33. package/docs/.island/dist/assets/modify-output-product.b91eff1f.js +100 -0
  34. package/docs/.island/dist/assets/moon.6b705924.svg +3 -0
  35. package/docs/.island/dist/assets/plugin.895932d8.js +42 -0
  36. package/docs/.island/dist/assets/plugin.d2fbc531.js +42 -0
  37. package/docs/.island/dist/assets/publish-your-project.21b8309f.js +164 -0
  38. package/docs/.island/dist/assets/publish-your-project.8d398b17.js +166 -0
  39. package/docs/.island/dist/assets/right.89674cd7.svg +1 -0
  40. package/docs/.island/dist/assets/search.0aea6901.svg +1 -0
  41. package/docs/.island/dist/assets/search.1c85d17c.js +3 -0
  42. package/docs/.island/dist/assets/search.484eca11.js +222 -0
  43. package/docs/.island/dist/assets/search.54fca8d0.js +3 -0
  44. package/docs/.island/dist/assets/style.09015a4b.css +1 -0
  45. package/docs/.island/dist/assets/style.2e5f7bc2.css +1970 -0
  46. package/docs/.island/dist/assets/sun.841dac10.svg +11 -0
  47. package/docs/.island/dist/assets/test-your-project.18bd4582.js +190 -0
  48. package/docs/.island/dist/assets/test-your-project.f53bebf7.js +190 -0
  49. package/docs/.island/dist/assets/test.0da1f99f.js +67 -0
  50. package/docs/.island/dist/assets/test.0e81f002.js +66 -0
  51. package/docs/.island/dist/assets/translator.b1077c44.svg +1 -0
  52. package/docs/.island/dist/assets/use-micro-generator.7d9e4016.js +60 -0
  53. package/docs/.island/dist/assets/use-micro-generator.db5520c1.js +60 -0
  54. package/docs/.island/dist/assets/using-storybook.57ea6b77.js +260 -0
  55. package/docs/.island/dist/assets/using-storybook.a2212f2e.js +260 -0
  56. package/docs/.island/dist/assets/welcome.0449a9c8.js +13 -0
  57. package/docs/.island/dist/assets/welcome.a8448931.js +13 -0
  58. package/docs/.island/dist/assets/why-module-engineering-solution.6ae8c0e3.js +26 -0
  59. package/docs/.island/dist/assets/why-module-engineering-solution.c9a45cbd.js +26 -0
  60. package/docs/.island/dist/chunk-COLCRJ2V.js +1 -0
  61. package/docs/.island/dist/chunk-K5FMOYDC.js +10 -0
  62. package/docs/.island/dist/chunk-WE42KMYS.js +26 -0
  63. package/docs/.island/dist/client-entry.js +3 -0
  64. package/docs/.island/dist/en/api/build-config.html +344 -0
  65. package/docs/.island/dist/en/api/build-preset.html +82 -0
  66. package/docs/.island/dist/en/api/design-system.html +155 -0
  67. package/docs/.island/dist/en/api/dev.html +45 -0
  68. package/docs/.island/dist/en/api/index.html +41 -0
  69. package/docs/.island/dist/en/api/plugin.html +48 -0
  70. package/docs/.island/dist/en/api/test.html +58 -0
  71. package/docs/.island/dist/en/guide/before-getting-started.html +127 -0
  72. package/docs/.island/dist/en/guide/build-your-ui.html +41 -0
  73. package/docs/.island/dist/en/guide/command-preview.html +100 -0
  74. package/docs/.island/dist/en/guide/extension.html +41 -0
  75. package/docs/.island/dist/en/guide/getting-started.html +76 -0
  76. package/docs/.island/dist/en/guide/modify-output-product.html +140 -0
  77. package/docs/.island/dist/en/guide/publish-your-project.html +91 -0
  78. package/docs/.island/dist/en/guide/test-your-project.html +72 -0
  79. package/docs/.island/dist/en/guide/use-micro-generator.html +65 -0
  80. package/docs/.island/dist/en/guide/using-storybook.html +113 -0
  81. package/docs/.island/dist/en/guide/welcome.html +53 -0
  82. package/docs/.island/dist/en/guide/why-module-engineering-solution.html +49 -0
  83. package/docs/.island/dist/en/index.html +42 -0
  84. package/docs/.island/dist/react-dom.js +1 -0
  85. package/docs/.island/dist/react-dom_client.js +1 -0
  86. package/docs/.island/dist/react.js +1 -0
  87. package/docs/.island/dist/react_jsx-runtime.js +10 -0
  88. package/docs/.island/dist/ssr-manifest.json +57 -0
  89. package/docs/.island/dist/test-result.png +0 -0
  90. package/docs/.island/dist/why-module-solution.png +0 -0
  91. package/docs/.island/dist/zh/api/build-config.html +347 -0
  92. package/docs/.island/dist/zh/api/build-preset.html +82 -0
  93. package/docs/.island/dist/zh/api/design-system.html +149 -0
  94. package/docs/.island/dist/zh/api/dev.html +46 -0
  95. package/docs/.island/dist/zh/api/index.html +41 -0
  96. package/docs/.island/dist/zh/api/plugin.html +48 -0
  97. package/docs/.island/dist/zh/api/test.html +59 -0
  98. package/docs/.island/dist/zh/guide/before-getting-started.html +127 -0
  99. package/docs/.island/dist/zh/guide/build-your-ui.html +41 -0
  100. package/docs/.island/dist/zh/guide/command-preview.html +100 -0
  101. package/docs/.island/dist/zh/guide/extension.html +41 -0
  102. package/docs/.island/dist/zh/guide/getting-started.html +79 -0
  103. package/docs/.island/dist/zh/guide/modify-output-product.html +140 -0
  104. package/docs/.island/dist/zh/guide/publish-your-project.html +92 -0
  105. package/docs/.island/dist/zh/guide/test-your-project.html +72 -0
  106. package/docs/.island/dist/zh/guide/use-micro-generator.html +65 -0
  107. package/docs/.island/dist/zh/guide/using-storybook.html +114 -0
  108. package/docs/.island/dist/zh/guide/welcome.html +53 -0
  109. package/docs/.island/dist/zh/guide/why-module-engineering-solution.html +49 -0
  110. package/docs/.island/dist/zh/index.html +42 -0
  111. package/docs/.island/index.html +39 -0
  112. package/docs/.island/styles/index.css +10 -0
  113. package/docs/en/api/build-config.md +501 -0
  114. package/docs/en/api/build-preset.md +214 -0
  115. package/docs/en/api/design-system.md +524 -0
  116. package/docs/en/api/dev.md +32 -0
  117. package/docs/en/api/index.md +3 -0
  118. package/docs/en/api/plugin.md +34 -0
  119. package/docs/en/api/test.md +48 -0
  120. package/docs/en/guide/advance/asset.mdx +132 -0
  121. package/docs/en/guide/advance/build-umd.mdx +241 -0
  122. package/docs/en/guide/advance/copy.md +235 -0
  123. package/docs/en/guide/advance/external-dependency.mdx +125 -0
  124. package/docs/en/guide/advance/in-depth-about-build.md +266 -0
  125. package/docs/en/guide/advance/in-depth-about-dev-command.md +22 -0
  126. package/docs/en/guide/basic/before-getting-started.md +187 -0
  127. package/docs/en/guide/basic/command-preview.md +204 -0
  128. package/docs/en/guide/basic/modify-output-product.md +145 -0
  129. package/docs/en/guide/basic/publish-your-project.md +115 -0
  130. package/docs/en/guide/basic/test-your-project.mdx +158 -0
  131. package/docs/en/guide/basic/use-micro-generator.md +35 -0
  132. package/docs/en/guide/basic/using-storybook.mdx +187 -0
  133. package/docs/en/guide/intro/getting-started.md +78 -0
  134. package/docs/en/guide/intro/welcome.md +14 -0
  135. package/docs/en/guide/intro/why-module-engineering-solution.md +17 -0
  136. package/docs/en/index.md +35 -0
  137. package/docs/public/test-result.png +0 -0
  138. package/docs/public/why-module-solution.png +0 -0
  139. package/docs/zh/api/build-config.md +570 -0
  140. package/docs/zh/api/build-preset.md +220 -0
  141. package/docs/zh/api/design-system.md +1147 -0
  142. package/docs/zh/api/dev.md +33 -0
  143. package/docs/zh/api/index.md +3 -0
  144. package/docs/zh/api/plugins.md +108 -0
  145. package/docs/zh/api/testing.md +52 -0
  146. package/docs/zh/guide/advance/asset.mdx +132 -0
  147. package/docs/zh/guide/advance/build-umd.mdx +232 -0
  148. package/docs/zh/guide/advance/copy.md +235 -0
  149. package/docs/zh/guide/advance/external-dependency.mdx +125 -0
  150. package/docs/zh/guide/advance/in-depth-about-build.md +267 -0
  151. package/docs/zh/guide/advance/in-depth-about-dev-command.md +26 -0
  152. package/docs/zh/guide/basic/before-getting-started.md +187 -0
  153. package/docs/zh/guide/basic/command-preview.md +204 -0
  154. package/docs/zh/guide/basic/modify-output-product.md +144 -0
  155. package/docs/zh/guide/basic/publish-your-project.md +112 -0
  156. package/docs/zh/guide/basic/test-your-project.mdx +158 -0
  157. package/docs/zh/guide/basic/use-micro-generator.md +35 -0
  158. package/docs/zh/guide/basic/using-storybook.mdx +186 -0
  159. package/docs/zh/guide/intro/getting-started.md +78 -0
  160. package/docs/zh/guide/intro/welcome.md +14 -0
  161. package/docs/zh/guide/intro/why-module-engineering-solution.md +17 -0
  162. package/docs/zh/index.md +29 -0
  163. package/package.json +19 -0
@@ -0,0 +1,260 @@
1
+ import{jsx as e,jsxs as t,Fragment as c}from"react/jsx-runtime";import{a as l,S as d,b as p,C as u}from"./components.esm.03560353.js";import"react";import"react-dom";const n={annotations:l,Spotlight:d,CodeSlot:p,Code:u},s={staticMediaQuery:"not screen, (max-width: 768px)",theme:{name:"nord",type:"dark",semanticHighlighting:!0,colors:{focusBorder:"#3b4252",foreground:"#d8dee9","activityBar.background":"#2e3440","activityBar.dropBackground":"#3b4252","activityBar.foreground":"#d8dee9","activityBar.activeBorder":"#88c0d0","activityBar.activeBackground":"#3b4252","activityBarBadge.background":"#88c0d0","activityBarBadge.foreground":"#2e3440","badge.foreground":"#2e3440","badge.background":"#88c0d0","button.background":"#88c0d0ee","button.foreground":"#2e3440","button.hoverBackground":"#88c0d0","button.secondaryBackground":"#434c5e","button.secondaryForeground":"#d8dee9","button.secondaryHoverBackground":"#4c566a","charts.red":"#bf616a","charts.blue":"#81a1c1","charts.yellow":"#ebcb8b","charts.orange":"#d08770","charts.green":"#a3be8c","charts.purple":"#b48ead","charts.foreground":"#d8dee9","charts.lines":"#88c0d0","debugConsole.infoForeground":"#88c0d0","debugConsole.warningForeground":"#ebcb8b","debugConsole.errorForeground":"#bf616a","debugConsole.sourceForeground":"#616e88","debugConsoleInputIcon.foreground":"#81a1c1","debugExceptionWidget.background":"#4c566a","debugExceptionWidget.border":"#2e3440","debugToolBar.background":"#3b4252",descriptionForeground:"#d8dee9e6","diffEditor.insertedTextBackground":"#81a1c133","diffEditor.removedTextBackground":"#bf616a4d","dropdown.background":"#3b4252","dropdown.border":"#3b4252","dropdown.foreground":"#d8dee9","editorActiveLineNumber.foreground":"#d8dee9cc","editorCursor.foreground":"#d8dee9","editorHint.border":"#ebcb8b00","editorHint.foreground":"#ebcb8b","editorIndentGuide.background":"#434c5eb3","editorIndentGuide.activeBackground":"#4c566a","editorInlayHint.background":"#434c5e","editorInlayHint.foreground":"#d8dee9","editorLineNumber.foreground":"#4c566a","editorLineNumber.activeForeground":"#d8dee9","editorWhitespace.foreground":"#4c566ab3","editorWidget.background":"#2e3440","editorWidget.border":"#3b4252","editor.background":"#2e3440","editor.foreground":"#d8dee9","editor.hoverHighlightBackground":"#3b4252","editor.findMatchBackground":"#88c0d066","editor.findMatchHighlightBackground":"#88c0d033","editor.findRangeHighlightBackground":"#88c0d033","editor.lineHighlightBackground":"#3b4252","editor.lineHighlightBorder":"#3b4252","editor.inactiveSelectionBackground":"#434c5ecc","editor.inlineValuesBackground":"#4c566a","editor.inlineValuesForeground":"#eceff4","editor.selectionBackground":"#434c5ecc","editor.selectionHighlightBackground":"#434c5ecc","editor.rangeHighlightBackground":"#434c5e52","editor.wordHighlightBackground":"#81a1c166","editor.wordHighlightStrongBackground":"#81a1c199","editor.stackFrameHighlightBackground":"#5e81ac","editor.focusedStackFrameHighlightBackground":"#5e81ac","editorError.foreground":"#bf616a","editorError.border":"#bf616a00","editorWarning.foreground":"#ebcb8b","editorWarning.border":"#ebcb8b00","editorBracketMatch.background":"#2e344000","editorBracketMatch.border":"#88c0d0","editorBracketHighlight.foreground1":"#8fbcbb","editorBracketHighlight.foreground2":"#88c0d0","editorBracketHighlight.foreground3":"#81a1c1","editorBracketHighlight.foreground4":"#5e81ac","editorBracketHighlight.foreground5":"#8fbcbb","editorBracketHighlight.foreground6":"#88c0d0","editorBracketHighlight.unexpectedBracket.foreground":"#bf616a","editorCodeLens.foreground":"#4c566a","editorGroup.background":"#2e3440","editorGroup.border":"#3b425201","editorGroup.dropBackground":"#3b425299","editorGroupHeader.border":"#3b425200","editorGroupHeader.noTabsBackground":"#2e3440","editorGroupHeader.tabsBackground":"#2e3440","editorGroupHeader.tabsBorder":"#3b425200","editorGutter.background":"#2e3440","editorGutter.modifiedBackground":"#ebcb8b","editorGutter.addedBackground":"#a3be8c","editorGutter.deletedBackground":"#bf616a","editorHoverWidget.background":"#3b4252","editorHoverWidget.border":"#3b4252","editorLink.activeForeground":"#88c0d0","editorMarkerNavigation.background":"#5e81acc0","editorMarkerNavigationError.background":"#bf616ac0","editorMarkerNavigationWarning.background":"#ebcb8bc0","editorOverviewRuler.border":"#3b4252","editorOverviewRuler.currentContentForeground":"#3b4252","editorOverviewRuler.incomingContentForeground":"#3b4252","editorOverviewRuler.findMatchForeground":"#88c0d066","editorOverviewRuler.rangeHighlightForeground":"#88c0d066","editorOverviewRuler.selectionHighlightForeground":"#88c0d066","editorOverviewRuler.wordHighlightForeground":"#88c0d066","editorOverviewRuler.wordHighlightStrongForeground":"#88c0d066","editorOverviewRuler.modifiedForeground":"#ebcb8b","editorOverviewRuler.addedForeground":"#a3be8c","editorOverviewRuler.deletedForeground":"#bf616a","editorOverviewRuler.errorForeground":"#bf616a","editorOverviewRuler.warningForeground":"#ebcb8b","editorOverviewRuler.infoForeground":"#81a1c1","editorRuler.foreground":"#434c5e","editorSuggestWidget.background":"#2e3440","editorSuggestWidget.border":"#3b4252","editorSuggestWidget.foreground":"#d8dee9","editorSuggestWidget.focusHighlightForeground":"#88c0d0","editorSuggestWidget.highlightForeground":"#88c0d0","editorSuggestWidget.selectedBackground":"#434c5e","editorSuggestWidget.selectedForeground":"#d8dee9","extensionButton.prominentForeground":"#d8dee9","extensionButton.prominentBackground":"#434c5e","extensionButton.prominentHoverBackground":"#4c566a",errorForeground:"#bf616a","gitDecoration.modifiedResourceForeground":"#ebcb8b","gitDecoration.deletedResourceForeground":"#bf616a","gitDecoration.untrackedResourceForeground":"#a3be8c","gitDecoration.ignoredResourceForeground":"#d8dee966","gitDecoration.conflictingResourceForeground":"#5e81ac","gitDecoration.submoduleResourceForeground":"#8fbcbb","gitDecoration.stageDeletedResourceForeground":"#bf616a","gitDecoration.stageModifiedResourceForeground":"#ebcb8b","input.background":"#3b4252","input.foreground":"#d8dee9","input.placeholderForeground":"#d8dee999","input.border":"#3b4252","inputOption.activeBackground":"#5e81ac","inputOption.activeBorder":"#5e81ac","inputOption.activeForeground":"#eceff4","inputValidation.errorBackground":"#bf616a","inputValidation.errorBorder":"#bf616a","inputValidation.infoBackground":"#81a1c1","inputValidation.infoBorder":"#81a1c1","inputValidation.warningBackground":"#d08770","inputValidation.warningBorder":"#d08770","keybindingLabel.background":"#4c566a","keybindingLabel.border":"#4c566a","keybindingLabel.bottomBorder":"#4c566a","keybindingLabel.foreground":"#d8dee9","list.activeSelectionBackground":"#88c0d0","list.activeSelectionForeground":"#2e3440","list.inactiveSelectionBackground":"#434c5e","list.inactiveSelectionForeground":"#d8dee9","list.inactiveFocusBackground":"#434c5ecc","list.hoverForeground":"#eceff4","list.focusForeground":"#d8dee9","list.focusBackground":"#88c0d099","list.focusHighlightForeground":"#eceff4","list.hoverBackground":"#3b4252","list.dropBackground":"#88c0d099","list.highlightForeground":"#88c0d0","list.errorForeground":"#bf616a","list.warningForeground":"#ebcb8b","merge.currentHeaderBackground":"#81a1c166","merge.currentContentBackground":"#81a1c14d","merge.incomingHeaderBackground":"#8fbcbb66","merge.incomingContentBackground":"#8fbcbb4d","merge.border":"#3b425200","minimap.background":"#2e3440","minimap.errorHighlight":"#bf616acc","minimap.findMatchHighlight":"#88c0d0","minimap.selectionHighlight":"#88c0d0cc","minimap.warningHighlight":"#ebcb8bcc","minimapGutter.addedBackground":"#a3be8c","minimapGutter.deletedBackground":"#bf616a","minimapGutter.modifiedBackground":"#ebcb8b","minimapSlider.activeBackground":"#434c5eaa","minimapSlider.background":"#434c5e99","minimapSlider.hoverBackground":"#434c5eaa","notification.background":"#3b4252","notification.buttonBackground":"#434c5e","notification.buttonForeground":"#d8dee9","notification.buttonHoverBackground":"#4c566a","notification.errorBackground":"#bf616a","notification.errorForeground":"#2e3440","notification.foreground":"#d8dee9","notification.infoBackground":"#88c0d0","notification.infoForeground":"#2e3440","notification.warningBackground":"#ebcb8b","notification.warningForeground":"#2e3440","notificationCenter.border":"#3b425200","notificationCenterHeader.background":"#2e3440","notificationCenterHeader.foreground":"#88c0d0","notificationLink.foreground":"#88c0d0","notifications.background":"#3b4252","notifications.border":"#2e3440","notifications.foreground":"#d8dee9","notificationToast.border":"#3b425200","panel.background":"#2e3440","panel.border":"#3b4252","panelTitle.activeBorder":"#88c0d000","panelTitle.activeForeground":"#88c0d0","panelTitle.inactiveForeground":"#d8dee9","peekView.border":"#4c566a","peekViewEditor.background":"#2e3440","peekViewEditorGutter.background":"#2e3440","peekViewEditor.matchHighlightBackground":"#88c0d04d","peekViewResult.background":"#2e3440","peekViewResult.fileForeground":"#88c0d0","peekViewResult.lineForeground":"#d8dee966","peekViewResult.matchHighlightBackground":"#88c0d0cc","peekViewResult.selectionBackground":"#434c5e","peekViewResult.selectionForeground":"#d8dee9","peekViewTitle.background":"#3b4252","peekViewTitleDescription.foreground":"#d8dee9","peekViewTitleLabel.foreground":"#88c0d0","pickerGroup.border":"#3b4252","pickerGroup.foreground":"#88c0d0","progressBar.background":"#88c0d0","quickInputList.focusBackground":"#88c0d0","quickInputList.focusForeground":"#2e3440","sash.hoverBorder":"#88c0d0","scrollbar.shadow":"#00000066","scrollbarSlider.activeBackground":"#434c5eaa","scrollbarSlider.background":"#434c5e99","scrollbarSlider.hoverBackground":"#434c5eaa","selection.background":"#88c0d099","sideBar.background":"#2e3440","sideBar.foreground":"#d8dee9","sideBar.border":"#3b4252","sideBarSectionHeader.background":"#3b4252","sideBarSectionHeader.foreground":"#d8dee9","sideBarTitle.foreground":"#d8dee9","statusBar.background":"#3b4252","statusBar.debuggingBackground":"#5e81ac","statusBar.debuggingForeground":"#d8dee9","statusBar.noFolderForeground":"#d8dee9","statusBar.noFolderBackground":"#3b4252","statusBar.foreground":"#d8dee9","statusBarItem.activeBackground":"#4c566a","statusBarItem.hoverBackground":"#434c5e","statusBarItem.prominentBackground":"#3b4252","statusBarItem.prominentHoverBackground":"#434c5e","statusBarItem.errorBackground":"#3b4252","statusBarItem.errorForeground":"#bf616a","statusBarItem.warningBackground":"#ebcb8b","statusBarItem.warningForeground":"#2e3440","statusBar.border":"#3b425200","tab.activeBackground":"#3b4252","tab.activeForeground":"#d8dee9","tab.border":"#3b425200","tab.activeBorder":"#88c0d000","tab.unfocusedActiveBorder":"#88c0d000","tab.inactiveBackground":"#2e3440","tab.inactiveForeground":"#d8dee966","tab.unfocusedActiveForeground":"#d8dee999","tab.unfocusedInactiveForeground":"#d8dee966","tab.hoverBackground":"#3b4252cc","tab.unfocusedHoverBackground":"#3b4252b3","tab.hoverBorder":"#88c0d000","tab.unfocusedHoverBorder":"#88c0d000","tab.activeBorderTop":"#88c0d000","tab.unfocusedActiveBorderTop":"#88c0d000","tab.lastPinnedBorder":"#4c566a","terminal.background":"#2e3440","terminal.foreground":"#d8dee9","terminal.ansiBlack":"#3b4252","terminal.ansiRed":"#bf616a","terminal.ansiGreen":"#a3be8c","terminal.ansiYellow":"#ebcb8b","terminal.ansiBlue":"#81a1c1","terminal.ansiMagenta":"#b48ead","terminal.ansiCyan":"#88c0d0","terminal.ansiWhite":"#e5e9f0","terminal.ansiBrightBlack":"#4c566a","terminal.ansiBrightRed":"#bf616a","terminal.ansiBrightGreen":"#a3be8c","terminal.ansiBrightYellow":"#ebcb8b","terminal.ansiBrightBlue":"#81a1c1","terminal.ansiBrightMagenta":"#b48ead","terminal.ansiBrightCyan":"#8fbcbb","terminal.ansiBrightWhite":"#eceff4","terminal.tab.activeBorder":"#88c0d0","textBlockQuote.background":"#3b4252","textBlockQuote.border":"#81a1c1","textCodeBlock.background":"#4c566a","textLink.activeForeground":"#88c0d0","textLink.foreground":"#88c0d0","textPreformat.foreground":"#8fbcbb","textSeparator.foreground":"#eceff4","titleBar.activeBackground":"#2e3440","titleBar.activeForeground":"#d8dee9","titleBar.border":"#2e344000","titleBar.inactiveBackground":"#2e3440","titleBar.inactiveForeground":"#d8dee966","tree.indentGuidesStroke":"#616e88","walkThrough.embeddedEditorBackground":"#2e3440","welcomePage.buttonBackground":"#434c5e","welcomePage.buttonHoverBackground":"#4c566a","widget.shadow":"#00000066"},tokenColors:[{settings:{foreground:"#d8dee9ff",background:"#2e3440ff"}},{scope:"emphasis",settings:{fontStyle:"italic"}},{scope:"strong",settings:{fontStyle:"bold"}},{name:"Comment",scope:"comment",settings:{foreground:"#616E88"}},{name:"Constant Character",scope:"constant.character",settings:{foreground:"#EBCB8B"}},{name:"Constant Character Escape",scope:"constant.character.escape",settings:{foreground:"#EBCB8B"}},{name:"Constant Language",scope:"constant.language",settings:{foreground:"#81A1C1"}},{name:"Constant Numeric",scope:"constant.numeric",settings:{foreground:"#B48EAD"}},{name:"Constant Regexp",scope:"constant.regexp",settings:{foreground:"#EBCB8B"}},{name:"Entity Name Class/Type",scope:["entity.name.class","entity.name.type.class"],settings:{foreground:"#8FBCBB"}},{name:"Entity Name Function",scope:"entity.name.function",settings:{foreground:"#88C0D0"}},{name:"Entity Name Tag",scope:"entity.name.tag",settings:{foreground:"#81A1C1"}},{name:"Entity Other Attribute Name",scope:"entity.other.attribute-name",settings:{foreground:"#8FBCBB"}},{name:"Entity Other Inherited Class",scope:"entity.other.inherited-class",settings:{fontStyle:"bold",foreground:"#8FBCBB"}},{name:"Invalid Deprecated",scope:"invalid.deprecated",settings:{foreground:"#D8DEE9",background:"#EBCB8B"}},{name:"Invalid Illegal",scope:"invalid.illegal",settings:{foreground:"#D8DEE9",background:"#BF616A"}},{name:"Keyword",scope:"keyword",settings:{foreground:"#81A1C1"}},{name:"Keyword Operator",scope:"keyword.operator",settings:{foreground:"#81A1C1"}},{name:"Keyword Other New",scope:"keyword.other.new",settings:{foreground:"#81A1C1"}},{name:"Markup Bold",scope:"markup.bold",settings:{fontStyle:"bold"}},{name:"Markup Changed",scope:"markup.changed",settings:{foreground:"#EBCB8B"}},{name:"Markup Deleted",scope:"markup.deleted",settings:{foreground:"#BF616A"}},{name:"Markup Inserted",scope:"markup.inserted",settings:{foreground:"#A3BE8C"}},{name:"Meta Preprocessor",scope:"meta.preprocessor",settings:{foreground:"#5E81AC"}},{name:"Punctuation",scope:"punctuation",settings:{foreground:"#ECEFF4"}},{name:"Punctuation Definition Parameters",scope:["punctuation.definition.method-parameters","punctuation.definition.function-parameters","punctuation.definition.parameters"],settings:{foreground:"#ECEFF4"}},{name:"Punctuation Definition Tag",scope:"punctuation.definition.tag",settings:{foreground:"#81A1C1"}},{name:"Punctuation Definition Comment",scope:["punctuation.definition.comment","punctuation.end.definition.comment","punctuation.start.definition.comment"],settings:{foreground:"#616E88"}},{name:"Punctuation Section",scope:"punctuation.section",settings:{foreground:"#ECEFF4"}},{name:"Punctuation Section Embedded",scope:["punctuation.section.embedded.begin","punctuation.section.embedded.end"],settings:{foreground:"#81A1C1"}},{name:"Punctuation Terminator",scope:"punctuation.terminator",settings:{foreground:"#81A1C1"}},{name:"Punctuation Variable",scope:"punctuation.definition.variable",settings:{foreground:"#81A1C1"}},{name:"Storage",scope:"storage",settings:{foreground:"#81A1C1"}},{name:"String",scope:"string",settings:{foreground:"#A3BE8C"}},{name:"String Regexp",scope:"string.regexp",settings:{foreground:"#EBCB8B"}},{name:"Support Class",scope:"support.class",settings:{foreground:"#8FBCBB"}},{name:"Support Constant",scope:"support.constant",settings:{foreground:"#81A1C1"}},{name:"Support Function",scope:"support.function",settings:{foreground:"#88C0D0"}},{name:"Support Function Construct",scope:"support.function.construct",settings:{foreground:"#81A1C1"}},{name:"Support Type",scope:"support.type",settings:{foreground:"#8FBCBB"}},{name:"Support Type Exception",scope:"support.type.exception",settings:{foreground:"#8FBCBB"}},{name:"Token Debug",scope:"token.debug-token",settings:{foreground:"#b48ead"}},{name:"Token Error",scope:"token.error-token",settings:{foreground:"#bf616a"}},{name:"Token Info",scope:"token.info-token",settings:{foreground:"#88c0d0"}},{name:"Token Warning",scope:"token.warn-token",settings:{foreground:"#ebcb8b"}},{name:"Variable",scope:"variable.other",settings:{foreground:"#D8DEE9"}},{name:"Variable Language",scope:"variable.language",settings:{foreground:"#81A1C1"}},{name:"Variable Parameter",scope:"variable.parameter",settings:{foreground:"#D8DEE9"}},{name:"[C/CPP] Punctuation Separator Pointer-Access",scope:"punctuation.separator.pointer-access.c",settings:{foreground:"#81A1C1"}},{name:"[C/CPP] Meta Preprocessor Include",scope:["source.c meta.preprocessor.include","source.c string.quoted.other.lt-gt.include"],settings:{foreground:"#8FBCBB"}},{name:"[C/CPP] Conditional Directive",scope:["source.cpp keyword.control.directive.conditional","source.cpp punctuation.definition.directive","source.c keyword.control.directive.conditional","source.c punctuation.definition.directive"],settings:{foreground:"#5E81AC",fontStyle:"bold"}},{name:"[CSS] Constant Other Color RGB Value",scope:"source.css constant.other.color.rgb-value",settings:{foreground:"#B48EAD"}},{name:"[CSS](Function) Meta Property-Value",scope:"source.css meta.property-value",settings:{foreground:"#88C0D0"}},{name:"[CSS] Media Queries",scope:["source.css keyword.control.at-rule.media","source.css keyword.control.at-rule.media punctuation.definition.keyword"],settings:{foreground:"#D08770"}},{name:"[CSS] Punctuation Definition Keyword",scope:"source.css punctuation.definition.keyword",settings:{foreground:"#81A1C1"}},{name:"[CSS] Support Type Property Name",scope:"source.css support.type.property-name",settings:{foreground:"#D8DEE9"}},{name:"[diff] Meta Range Context",scope:"source.diff meta.diff.range.context",settings:{foreground:"#8FBCBB"}},{name:"[diff] Meta Header From-File",scope:"source.diff meta.diff.header.from-file",settings:{foreground:"#8FBCBB"}},{name:"[diff] Punctuation Definition From-File",scope:"source.diff punctuation.definition.from-file",settings:{foreground:"#8FBCBB"}},{name:"[diff] Punctuation Definition Range",scope:"source.diff punctuation.definition.range",settings:{foreground:"#8FBCBB"}},{name:"[diff] Punctuation Definition Separator",scope:"source.diff punctuation.definition.separator",settings:{foreground:"#81A1C1"}},{name:"[Elixir](JakeBecker.elixir-ls) module names",scope:"entity.name.type.module.elixir",settings:{foreground:"#8FBCBB"}},{name:"[Elixir](JakeBecker.elixir-ls) module attributes",scope:"variable.other.readwrite.module.elixir",settings:{foreground:"#D8DEE9",fontStyle:"bold"}},{name:"[Elixir](JakeBecker.elixir-ls) atoms",scope:"constant.other.symbol.elixir",settings:{foreground:"#D8DEE9",fontStyle:"bold"}},{name:"[Elixir](JakeBecker.elixir-ls) modules",scope:"variable.other.constant.elixir",settings:{foreground:"#8FBCBB"}},{name:"[Go] String Format Placeholder",scope:"source.go constant.other.placeholder.go",settings:{foreground:"#EBCB8B"}},{name:"[Java](JavaDoc) Comment Block Documentation HTML Entities",scope:"source.java comment.block.documentation.javadoc punctuation.definition.entity.html",settings:{foreground:"#81A1C1"}},{name:"[Java](JavaDoc) Constant Other",scope:"source.java constant.other",settings:{foreground:"#D8DEE9"}},{name:"[Java](JavaDoc) Keyword Other Documentation",scope:"source.java keyword.other.documentation",settings:{foreground:"#8FBCBB"}},{name:"[Java](JavaDoc) Keyword Other Documentation Author",scope:"source.java keyword.other.documentation.author.javadoc",settings:{foreground:"#8FBCBB"}},{name:"[Java](JavaDoc) Keyword Other Documentation Directive/Custom",scope:["source.java keyword.other.documentation.directive","source.java keyword.other.documentation.custom"],settings:{foreground:"#8FBCBB"}},{name:"[Java](JavaDoc) Keyword Other Documentation See",scope:"source.java keyword.other.documentation.see.javadoc",settings:{foreground:"#8FBCBB"}},{name:"[Java] Meta Method-Call",scope:"source.java meta.method-call meta.method",settings:{foreground:"#88C0D0"}},{name:"[Java](JavaDoc) Meta Tag Template Link",scope:["source.java meta.tag.template.link.javadoc","source.java string.other.link.title.javadoc"],settings:{foreground:"#8FBCBB"}},{name:"[Java](JavaDoc) Meta Tag Template Value",scope:"source.java meta.tag.template.value.javadoc",settings:{foreground:"#88C0D0"}},{name:"[Java](JavaDoc) Punctuation Definition Keyword",scope:"source.java punctuation.definition.keyword.javadoc",settings:{foreground:"#8FBCBB"}},{name:"[Java](JavaDoc) Punctuation Definition Tag",scope:["source.java punctuation.definition.tag.begin.javadoc","source.java punctuation.definition.tag.end.javadoc"],settings:{foreground:"#616E88"}},{name:"[Java] Storage Modifier Import",scope:"source.java storage.modifier.import",settings:{foreground:"#8FBCBB"}},{name:"[Java] Storage Modifier Package",scope:"source.java storage.modifier.package",settings:{foreground:"#8FBCBB"}},{name:"[Java] Storage Type",scope:"source.java storage.type",settings:{foreground:"#8FBCBB"}},{name:"[Java] Storage Type Annotation",scope:"source.java storage.type.annotation",settings:{foreground:"#D08770"}},{name:"[Java] Storage Type Generic",scope:"source.java storage.type.generic",settings:{foreground:"#8FBCBB"}},{name:"[Java] Storage Type Primitive",scope:"source.java storage.type.primitive",settings:{foreground:"#81A1C1"}},{name:"[JavaScript] Decorator",scope:["source.js punctuation.decorator","source.js meta.decorator variable.other.readwrite","source.js meta.decorator entity.name.function"],settings:{foreground:"#D08770"}},{name:"[JavaScript] Meta Object-Literal Key",scope:"source.js meta.object-literal.key",settings:{foreground:"#88C0D0"}},{name:"[JavaScript](JSDoc) Storage Type Class",scope:"source.js storage.type.class.jsdoc",settings:{foreground:"#8FBCBB"}},{name:"[JavaScript] String Template Literals Punctuation",scope:["source.js string.quoted.template punctuation.quasi.element.begin","source.js string.quoted.template punctuation.quasi.element.end","source.js string.template punctuation.definition.template-expression"],settings:{foreground:"#81A1C1"}},{name:"[JavaScript] Interpolated String Template Punctuation Functions",scope:"source.js string.quoted.template meta.method-call.with-arguments",settings:{foreground:"#ECEFF4"}},{name:"[JavaScript] String Template Literal Variable",scope:["source.js string.template meta.template.expression support.variable.property","source.js string.template meta.template.expression variable.other.object"],settings:{foreground:"#D8DEE9"}},{name:"[JavaScript] Support Type Primitive",scope:"source.js support.type.primitive",settings:{foreground:"#81A1C1"}},{name:"[JavaScript] Variable Other Object",scope:"source.js variable.other.object",settings:{foreground:"#D8DEE9"}},{name:"[JavaScript] Variable Other Read-Write Alias",scope:"source.js variable.other.readwrite.alias",settings:{foreground:"#8FBCBB"}},{name:"[JavaScript] Parentheses in Template Strings",scope:["source.js meta.embedded.line meta.brace.square","source.js meta.embedded.line meta.brace.round","source.js string.quoted.template meta.brace.square","source.js string.quoted.template meta.brace.round"],settings:{foreground:"#ECEFF4"}},{name:"[HTML] Constant Character Entity",scope:"text.html.basic constant.character.entity.html",settings:{foreground:"#EBCB8B"}},{name:"[HTML] Constant Other Inline-Data",scope:"text.html.basic constant.other.inline-data",settings:{foreground:"#D08770",fontStyle:"italic"}},{name:"[HTML] Meta Tag SGML Doctype",scope:"text.html.basic meta.tag.sgml.doctype",settings:{foreground:"#5E81AC"}},{name:"[HTML] Punctuation Definition Entity",scope:"text.html.basic punctuation.definition.entity",settings:{foreground:"#81A1C1"}},{name:"[INI] Entity Name Section Group-Title",scope:"source.properties entity.name.section.group-title.ini",settings:{foreground:"#88C0D0"}},{name:"[INI] Punctuation Separator Key-Value",scope:"source.properties punctuation.separator.key-value.ini",settings:{foreground:"#81A1C1"}},{name:"[Markdown] Markup Fenced Code Block",scope:["text.html.markdown markup.fenced_code.block","text.html.markdown markup.fenced_code.block punctuation.definition"],settings:{foreground:"#8FBCBB"}},{name:"[Markdown] Markup Heading",scope:"markup.heading",settings:{foreground:"#88C0D0"}},{name:"[Markdown] Markup Inline",scope:["text.html.markdown markup.inline.raw","text.html.markdown markup.inline.raw punctuation.definition.raw"],settings:{foreground:"#8FBCBB"}},{name:"[Markdown] Markup Italic",scope:"text.html.markdown markup.italic",settings:{fontStyle:"italic"}},{name:"[Markdown] Markup Link",scope:"text.html.markdown markup.underline.link",settings:{fontStyle:"underline"}},{name:"[Markdown] Markup List Numbered/Unnumbered",scope:"text.html.markdown beginning.punctuation.definition.list",settings:{foreground:"#81A1C1"}},{name:"[Markdown] Markup Quote Punctuation Definition",scope:"text.html.markdown beginning.punctuation.definition.quote",settings:{foreground:"#8FBCBB"}},{name:"[Markdown] Markup Quote Punctuation Definition",scope:"text.html.markdown markup.quote",settings:{foreground:"#616E88"}},{name:"[Markdown] Markup Math Constant",scope:"text.html.markdown constant.character.math.tex",settings:{foreground:"#81A1C1"}},{name:"[Markdown] Markup Math Definition Marker",scope:["text.html.markdown punctuation.definition.math.begin","text.html.markdown punctuation.definition.math.end"],settings:{foreground:"#5E81AC"}},{name:"[Markdown] Markup Math Function Definition Marker",scope:"text.html.markdown punctuation.definition.function.math.tex",settings:{foreground:"#88C0D0"}},{name:"[Markdown] Markup Math Operator",scope:"text.html.markdown punctuation.math.operator.latex",settings:{foreground:"#81A1C1"}},{name:"[Markdown] Punctuation Definition Heading",scope:"text.html.markdown punctuation.definition.heading",settings:{foreground:"#81A1C1"}},{name:"[Markdown] Punctuation Definition Constant/String",scope:["text.html.markdown punctuation.definition.constant","text.html.markdown punctuation.definition.string"],settings:{foreground:"#81A1C1"}},{name:"[Markdown] String Other Link Description/Title",scope:["text.html.markdown constant.other.reference.link","text.html.markdown string.other.link.description","text.html.markdown string.other.link.title"],settings:{foreground:"#88C0D0"}},{name:"[Perl] Perl Sigils",scope:"source.perl punctuation.definition.variable",settings:{foreground:"#D8DEE9"}},{name:"[PHP] Meta Function-Call Object",scope:["source.php meta.function-call","source.php meta.function-call.object"],settings:{foreground:"#88C0D0"}},{name:"[Python] Decorator",scope:["source.python entity.name.function.decorator","source.python meta.function.decorator support.type"],settings:{foreground:"#D08770"}},{name:"[Python] Function Call",scope:"source.python meta.function-call.generic",settings:{foreground:"#88C0D0"}},{name:"[Python] Support Type",scope:"source.python support.type",settings:{foreground:"#88C0D0"}},{name:"[Python] Function Parameter",scope:["source.python variable.parameter.function.language"],settings:{foreground:"#D8DEE9"}},{name:"[Python] Function Parameter Special",scope:["source.python meta.function.parameters variable.parameter.function.language.special.self"],settings:{foreground:"#81A1C1"}},{name:"[Rust] Entity types",scope:"source.rust entity.name.type",settings:{foreground:"#8FBCBB"}},{name:"[Rust] Macro",scope:"source.rust meta.macro entity.name.function",settings:{fontStyle:"bold",foreground:"#88C0D0"}},{name:"[Rust] Attributes",scope:["source.rust meta.attribute","source.rust meta.attribute punctuation","source.rust meta.attribute keyword.operator"],settings:{foreground:"#5E81AC"}},{name:"[Rust] Traits",scope:"source.rust entity.name.type.trait",settings:{fontStyle:"bold"}},{name:"[Rust] Interpolation Bracket Curly",scope:"source.rust punctuation.definition.interpolation",settings:{foreground:"#EBCB8B"}},{name:"[SCSS] Punctuation Definition Interpolation Bracket Curly",scope:["source.css.scss punctuation.definition.interpolation.begin.bracket.curly","source.css.scss punctuation.definition.interpolation.end.bracket.curly"],settings:{foreground:"#81A1C1"}},{name:"[SCSS] Variable Interpolation",scope:"source.css.scss variable.interpolation",settings:{foreground:"#D8DEE9",fontStyle:"italic"}},{name:"[TypeScript] Decorators",scope:["source.ts punctuation.decorator","source.ts meta.decorator variable.other.readwrite","source.ts meta.decorator entity.name.function","source.tsx punctuation.decorator","source.tsx meta.decorator variable.other.readwrite","source.tsx meta.decorator entity.name.function"],settings:{foreground:"#D08770"}},{name:"[TypeScript] Object-literal keys",scope:["source.ts meta.object-literal.key","source.tsx meta.object-literal.key"],settings:{foreground:"#D8DEE9"}},{name:"[TypeScript] Object-literal functions",scope:["source.ts meta.object-literal.key entity.name.function","source.tsx meta.object-literal.key entity.name.function"],settings:{foreground:"#88C0D0"}},{name:"[TypeScript] Type/Class",scope:["source.ts support.class","source.ts support.type","source.ts entity.name.type","source.ts entity.name.class","source.tsx support.class","source.tsx support.type","source.tsx entity.name.type","source.tsx entity.name.class"],settings:{foreground:"#8FBCBB"}},{name:"[TypeScript] Static Class Support",scope:["source.ts support.constant.math","source.ts support.constant.dom","source.ts support.constant.json","source.tsx support.constant.math","source.tsx support.constant.dom","source.tsx support.constant.json"],settings:{foreground:"#8FBCBB"}},{name:"[TypeScript] Variables",scope:["source.ts support.variable","source.tsx support.variable"],settings:{foreground:"#D8DEE9"}},{name:"[TypeScript] Parentheses in Template Strings",scope:["source.ts meta.embedded.line meta.brace.square","source.ts meta.embedded.line meta.brace.round","source.tsx meta.embedded.line meta.brace.square","source.tsx meta.embedded.line meta.brace.round"],settings:{foreground:"#ECEFF4"}},{name:"[XML] Entity Name Tag Namespace",scope:"text.xml entity.name.tag.namespace",settings:{foreground:"#8FBCBB"}},{name:"[XML] Keyword Other Doctype",scope:"text.xml keyword.other.doctype",settings:{foreground:"#5E81AC"}},{name:"[XML] Meta Tag Preprocessor",scope:"text.xml meta.tag.preprocessor entity.name.tag",settings:{foreground:"#5E81AC"}},{name:"[XML] Entity Name Tag Namespace",scope:["text.xml string.unquoted.cdata","text.xml string.unquoted.cdata punctuation.definition.string"],settings:{foreground:"#D08770",fontStyle:"italic"}},{name:"[YAML] Entity Name Tag",scope:"source.yaml entity.name.tag",settings:{foreground:"#8FBCBB"}}]},autoImport:!0,showCopyButton:!0,enableSpa:!0,skipLanguages:[],filepath:"/Users/bytedance/modern.js/website/module-tools/docs/en/guide/using-storybook.mdx"},E=void 0,f=[{id:"debugging-code",text:"Debugging code",depth:2},{id:"referencing-component-products",text:"Referencing component products",depth:3},{id:"referencing-component-source-code",text:"Referencing component source code",depth:3},{id:"configure-storybook",text:"Configure Storybook",depth:2},{id:"configuration-file",text:"Configuration file",depth:3},{id:"devstorybook",text:"dev.storybook",depth:3},{id:"building-storybook-products",text:"Building Storybook Products",depth:3}],h="Using Storybook";function a(r){const o=Object.assign({h1:"h1",a:"a",p:"p",ul:"ul",li:"li",code:"code",h2:"h2",strong:"strong",h3:"h3",blockquote:"blockquote",ol:"ol"},r.components);return n||i("CH",!1),n.Code||i("CH.Code",!0),n.CodeSlot||i("CH.CodeSlot",!0),n.Spotlight||i("CH.Spotlight",!0),t(c,{children:[t(o.h1,{id:"using-storybook",children:[e(o.a,{className:"header-anchor","aria-hidden":"true",href:"#using-storybook",children:"#"}),"Using Storybook"]}),`
2
+ `,e(o.p,{children:"First of all, if you haven't read the following, take a few minutes to understand it first."}),`
3
+ `,t(o.ul,{children:[`
4
+ `,e(o.li,{children:e(o.a,{href:"/en/guide/use-micro-generator.html#storybook-debug",children:"use micro-generator to enable Storybook debugging"})}),`
5
+ `,e(o.li,{children:e(o.a,{href:"/en/guide/command-preview.html#modern-dev",children:e(o.code,{children:"modern dev"})})}),`
6
+ `]}),`
7
+ `,t(o.p,{children:[e(o.a,{href:"https://storybook.js.org/",target:"_blank",rel:"nofollow",children:"Storybook"})," is a tool dedicated to component debugging, providing around component development."]}),`
8
+ `,t(o.ul,{children:[`
9
+ `,e(o.li,{children:"Develop UIs that are more durable"}),`
10
+ `,e(o.li,{children:"Test UIs with less effort and no flakes"}),`
11
+ `,e(o.li,{children:"Document UI for your team to reuse"}),`
12
+ `,e(o.li,{children:"Share how the UI actually works"}),`
13
+ `,e(o.li,{children:"Automate UI workflows"}),`
14
+ `]}),`
15
+ `,e(o.p,{children:"So it is a complex and powerful tool."}),`
16
+ `,e(o.p,{children:"The modular engineering solution is integrated with Storybook, so you can pretty much follow the official Storybook documentation. However, there are still a few things to keep in mind, which are explained below."}),`
17
+ `,t(o.h2,{id:"debugging-code",children:[e(o.a,{className:"header-anchor","aria-hidden":"true",href:"#debugging-code",children:"#"}),"Debugging code"]}),`
18
+ `,e(o.p,{children:"Component code needs to be introduced during debugging code, and currently component code can be introduced in two ways:"}),`
19
+ `,t(o.ul,{children:[`
20
+ `,e(o.li,{children:"Referencing the component product"}),`
21
+ `,e(o.li,{children:"Referencing component source code"}),`
22
+ `]}),`
23
+ `,t(o.p,{children:['We recommend the first way of "',e(o.strong,{children:"referencing component product"}),'". Because it is almost close to the real usage scenario, not only can we debug the component functionality, but also verify the correctness of the build product.']}),`
24
+ `,e(o.p,{children:"Next, we will talk about how to use each of these two methods."}),`
25
+ `,t(o.h3,{id:"referencing-component-products",children:[e(o.a,{className:"header-anchor","aria-hidden":"true",href:"#referencing-component-products",children:"#"}),"Referencing component products"]}),`
26
+ `,t(o.p,{children:["If the TypeScript project ",e(o.code,{children:"foo"})," exists."]}),`
27
+ `,t(n.Spotlight,{codeConfig:s,editorSteps:[{northPanel:{tabs:["package.json"],active:"package.json",heightRatio:1},files:[{name:"package.json",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"name",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"foo",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"main",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/index.js",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"types",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/types/index.d.ts",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:"}",props:{style:{color:"#ECEFF4"}}}]}],lang:"json"},annotations:[]}]},{northPanel:{tabs:["package.json"],active:"package.json",heightRatio:1},files:[{name:"package.json",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"name",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"foo",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"main",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/index.js",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"types",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/types/index.d.ts",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:"}",props:{style:{color:"#ECEFF4"}}}]}],lang:"json"},annotations:[]}],southPanel:void 0},{northPanel:{tabs:["package.json","src/index.ts"],active:"src/index.ts",heightRatio:1},files:[{name:"package.json",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"name",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"foo",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"main",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/index.js",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"types",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/types/index.d.ts",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:"}",props:{style:{color:"#ECEFF4"}}}]}],lang:"json"},annotations:[]},{name:"src/index.ts",focus:"",code:{lines:[{tokens:[{content:"export",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"const",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"content",props:{style:{color:"#D8DEE9"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"=",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"'",props:{style:{color:"#ECEFF4"}}},{content:"hello world",props:{style:{color:"#A3BE8C"}}},{content:"'",props:{style:{color:"#ECEFF4"}}},{content:";",props:{style:{color:"#81A1C1"}}}]}],lang:"typescript"},annotations:[]}],southPanel:void 0},{northPanel:{tabs:["package.json","stories/tsconfig.json"],active:"stories/tsconfig.json",heightRatio:1},files:[{name:"package.json",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"name",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"foo",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"main",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/index.js",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"types",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/types/index.d.ts",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:"}",props:{style:{color:"#ECEFF4"}}}]}],lang:"json"},annotations:[]},{name:"stories/tsconfig.json",focus:"7:9",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"extends",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"../tsconfig.json",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"include",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"[",props:{style:{color:"#ECEFF4"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"],",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"compilerOptions",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"jsx",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"preserve",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"baseUrl",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:".",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"paths",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"foo",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"[",props:{style:{color:"#ECEFF4"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"../",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"]",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"}",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"}",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:"}",props:{style:{color:"#ECEFF4"}}}]}],lang:"json"},annotations:[]}],southPanel:void 0},{northPanel:{tabs:["package.json","stories/index.stories.tsx"],active:"stories/index.stories.tsx",heightRatio:1},files:[{name:"package.json",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"name",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"foo",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"main",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/index.js",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"types",props:{style:{color:"#8FBCBB"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/types/index.d.ts",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:"}",props:{style:{color:"#ECEFF4"}}}]}],lang:"json"},annotations:[]},{name:"stories/index.stories.tsx",focus:"1:1",code:{lines:[{tokens:[{content:"import",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"{",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"content",props:{style:{color:"#D8DEE9"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"}",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"from",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"'",props:{style:{color:"#ECEFF4"}}},{content:"foo",props:{style:{color:"#A3BE8C"}}},{content:"'",props:{style:{color:"#ECEFF4"}}},{content:";",props:{style:{color:"#81A1C1"}}}]},{tokens:[]},{tokens:[{content:"const",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"Component",props:{style:{color:"#88C0D0"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"=",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"()",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"=>",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"<div>",props:{style:{color:"#81A1C1"}}},{content:"this is a Story Component ",props:{style:{color:"#D8DEE9FF"}}},{content:"{",props:{style:{color:"#81A1C1"}}},{content:"content",props:{style:{color:"#D8DEE9"}}},{content:"}</div>;",props:{style:{color:"#81A1C1"}}}]},{tokens:[]},{tokens:[{content:"export",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"const",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"YourStory",props:{style:{color:"#88C0D0"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"=",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"()",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"=>",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"<",props:{style:{color:"#81A1C1"}}},{content:"Component",props:{style:{color:"#8FBCBB"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"/>;",props:{style:{color:"#81A1C1"}}}]},{tokens:[]},{tokens:[{content:"export",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"default",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"title",props:{style:{color:"#D8DEE9"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"'",props:{style:{color:"#ECEFF4"}}},{content:"Your Stories",props:{style:{color:"#A3BE8C"}}},{content:"'",props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:"}",props:{style:{color:"#ECEFF4"}}},{content:";",props:{style:{color:"#81A1C1"}}}]}],lang:"tsx"},annotations:[]}],southPanel:void 0}],children:[e(c,{children:e(n.CodeSlot,{})}),t(c,{children:[t(o.p,{children:["Make sure the ",e(o.code,{children:"main"})," and ",e(o.code,{children:"types"})," of ",e(o.code,{children:"package.json"}),`
28
+ values are real paths.`]}),e(n.CodeSlot,{})]}),t(c,{children:[t(o.p,{children:["The source code of the ",e(o.code,{children:"foo"})," project."]}),e(n.CodeSlot,{})]}),t(c,{children:[t(o.p,{children:["Make sure that the ",e(o.code,{children:"paths"})," configuration pointing to the project root is set in ",e(o.code,{children:"stories/tsconfig.json"}),`.
29
+ The `,e(o.code,{children:"key"})," of ",e(o.code,{children:"paths"})," is the same as the project name."]}),e(n.CodeSlot,{})]}),t(c,{children:[e(o.p,{children:"Finally, it is referenced directly in the Story code by the project name."}),e(n.CodeSlot,{})]})]}),`
30
+ `,e(o.p,{children:"If, during development, you encounter a situation where the type definition is not available in real time, at that point."}),`
31
+ `,t(o.p,{children:["For ",e(o.code,{children:"pnpm"})," projects, ",e(o.code,{children:"package.json"})," can be modified as follows."]}),`
32
+ `,e(n.Code,{codeConfig:s,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"4:7",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"name",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:": ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"foo",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"main",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:": ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/index.js",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"types",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:": ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./src/index.ts",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"publishConfig",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:": ",props:{style:{color:"#D8DEE9FF"}}},{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"types",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:"./dist/index.d.ts",props:{style:{color:"#A3BE8C"}}},{content:'"',props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"}",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:"}",props:{style:{color:"#ECEFF4"}}}]}],lang:"ts"},annotations:[]}]}),`
33
+ `,t(o.blockquote,{children:[`
34
+ `,t(o.p,{children:["For the use of pnpm's ",e(o.code,{children:"publishConfig"}),", you can read the following ",e(o.a,{href:"https://pnpm.io/package_json#publishconfig",target:"_blank",rel:"nofollow",children:"link"}),"."]}),`
35
+ `]}),`
36
+ `,t(o.p,{children:["For npm and Yarn projects, the values of ",e(o.code,{children:"types"})," of ",e(o.code,{children:"package.json"})," can only be changed manually in ",e(o.strong,{children:"development phase"})," and ",e(o.strong,{children:"release phase"}),"."]}),`
37
+ `,e(o.p,{children:"So why is it possible to reference the product directly?"}),`
38
+ `,t(o.ol,{children:[`
39
+ `,t(o.li,{children:["the ",e(o.code,{children:"modern build"})," command is executed automatically before the ",e(o.code,{children:"modern dev storybook"})," command, ensuring the existence of the project build product."]}),`
40
+ `,t(o.li,{children:["The project name is added as an alias inside Storybook to ensure that the path to the project's product can be parsed ",t(o.strong,{children:["according to ",e(o.code,{children:"package.json"})]}),"."]}),`
41
+ `]}),`
42
+ `,t(o.h3,{id:"referencing-component-source-code",children:[e(o.a,{className:"header-anchor","aria-hidden":"true",href:"#referencing-component-source-code",children:"#"}),"Referencing component source code"]}),`
43
+ `,e(o.p,{children:"Referencing component source code can be done by means of relative paths to:"}),`
44
+ `,e(n.Code,{codeConfig:s,northPanel:{tabs:["./stories/index.tsx"],active:"./stories/index.tsx",heightRatio:1},files:[{name:"./stories/index.tsx",focus:"",code:{lines:[{tokens:[{content:"import",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"{",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"content",props:{style:{color:"#D8DEE9"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"}",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"from",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"'",props:{style:{color:"#ECEFF4"}}},{content:"../src",props:{style:{color:"#A3BE8C"}}},{content:"'",props:{style:{color:"#ECEFF4"}}},{content:";",props:{style:{color:"#81A1C1"}}}]},{tokens:[]},{tokens:[{content:"const",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"Component",props:{style:{color:"#88C0D0"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"=",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"()",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"=>",props:{style:{color:"#81A1C1"}}},{content:" <",props:{style:{color:"#D8DEE9FF"}}},{content:"div",props:{style:{color:"#8FBCBB"}}},{content:">",props:{style:{color:"#D8DEE9FF"}}},{content:"this",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"is",props:{style:{color:"#D8DEE9"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"a",props:{style:{color:"#D8DEE9"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"Story",props:{style:{color:"#D8DEE9"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"Component",props:{style:{color:"#D8DEE9"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"{",props:{style:{color:"#ECEFF4"}}},{content:"content",props:{style:{color:"#D8DEE9"}}},{content:"}",props:{style:{color:"#ECEFF4"}}},{content:"</",props:{style:{color:"#81A1C1"}}},{content:"div",props:{style:{color:"#D8DEE9"}}},{content:">;",props:{style:{color:"#81A1C1"}}}]},{tokens:[]},{tokens:[{content:"export",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"const",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"YourStory",props:{style:{color:"#88C0D0"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"=",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"()",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"=>",props:{style:{color:"#81A1C1"}}},{content:" <",props:{style:{color:"#D8DEE9FF"}}},{content:"Component",props:{style:{color:"#8FBCBB"}}},{content:" />",props:{style:{color:"#D8DEE9FF"}}},{content:";",props:{style:{color:"#81A1C1"}}}]},{tokens:[]},{tokens:[{content:"export",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"default",props:{style:{color:"#81A1C1"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"{",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"title",props:{style:{color:"#D8DEE9"}}},{content:":",props:{style:{color:"#ECEFF4"}}},{content:" ",props:{style:{color:"#D8DEE9FF"}}},{content:"'",props:{style:{color:"#ECEFF4"}}},{content:"Your Stories",props:{style:{color:"#A3BE8C"}}},{content:"'",props:{style:{color:"#ECEFF4"}}},{content:",",props:{style:{color:"#ECEFF4"}}}]},{tokens:[{content:"}",props:{style:{color:"#ECEFF4"}}},{content:";",props:{style:{color:"#81A1C1"}}}]}],lang:"ts"},annotations:[]}]}),`
45
+ `,e(o.p,{children:"So why is the source code approach not recommended?"}),`
46
+ `,t(o.p,{children:["Not only is it impossible to verify that the component product is correct using the component source code, ",e(o.strong,{children:"but also some of the configurations supported by the module project for building the product cannot be fully translated into Storybook internal configuration"}),". If some of the configurations cannot be converted to each other, there will be unintended results during Storybook debugging."]}),`
47
+ `,t(o.h2,{id:"configure-storybook",children:[e(o.a,{className:"header-anchor","aria-hidden":"true",href:"#configure-storybook",children:"#"}),"Configure Storybook"]}),`
48
+ `,t(o.h3,{id:"configuration-file",children:[e(o.a,{className:"header-anchor","aria-hidden":"true",href:"#configuration-file",children:"#"}),"Configuration file"]}),`
49
+ `,t(o.p,{children:["Storybook is officially configured for projects through a folder called ",e(o.code,{children:".storybook"}),", which contains various configuration files. ",t(o.strong,{children:["In a module project scenario, Storybook configuration files can be added to the ",e(o.code,{children:"config/storybook"})," directory of the project."]})]}),`
50
+ `,e(o.p,{children:"For more information on how to use the various Storybook configuration files, see the following links:"}),`
51
+ `,t(o.ul,{children:[`
52
+ `,e(o.li,{children:e(o.a,{href:"https://storybook.js.org/docs/react/configure/overview",target:"_blank",rel:"nofollow",children:"Configure Storybook"})}),`
53
+ `]}),`
54
+ `,t(o.p,{children:[e(o.strong,{children:"But there are some limitations to Storybooking in a module project"}),":"]}),`
55
+ `,t(o.ul,{children:[`
56
+ `,t(o.li,{children:["It is currently not possible to change the location of the Story file, i.e., you cannot change the ",e(o.code,{children:"stories"})," configuration in the ",e(o.code,{children:"main.js"})," file."]}),`
57
+ `,t(o.li,{children:["Currently you cannot modify Webpack and Babel related configuration, i.e. you cannot modify ",e(o.code,{children:"webpackFinal"})," and ",e(o.code,{children:"babel"})," configuration in the ",e(o.code,{children:"main.js"})," file."]}),`
58
+ `]}),`
59
+ `,e(o.p,{children:"In the future we will consider whether these configurations can be allowed to be modified, but for now we are limiting their use to reduce unpredictable issues."}),`
60
+ `,t(o.h3,{id:"devstorybook",children:[e(o.a,{className:"header-anchor","aria-hidden":"true",href:"#devstorybook",children:"#"}),e(o.code,{children:"dev.storybook"})]}),`
61
+ `,t(o.p,{children:["In addition to the configuration file, the module engineering solution also provides a ",e(o.code,{children:"dev.storybook"})," configuration item in the ",e(o.code,{children:"modern.config.(j|t)s"})," project configuration file."]}),`
62
+ `,e(o.p,{children:"The webpack configuration of Storybook can be modified via this configuration."}),`
63
+ `,t(o.ul,{children:[`
64
+ `,e(o.li,{children:e(o.a,{href:"/xxx.html",children:e(o.code,{children:"dev.storybook.webpack"})})}),`
65
+ `]}),`
66
+ `,t(o.h3,{id:"building-storybook-products",children:[e(o.a,{className:"header-anchor","aria-hidden":"true",href:"#building-storybook-products",children:"#"}),"Building Storybook Products"]}),`
67
+ `,e(o.p,{children:"In addition to Storybook debugging of components or common modules, you can also perform Storybook build tasks with the following commands."}),`
68
+ `,e(n.Code,{codeConfig:s,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"modern build --platform storybook",props:{style:{color:"#D8DEE9FF"}}}]}],lang:"bash"},annotations:[]}]}),`
69
+ `,t(o.p,{children:["For the ",e(o.code,{children:"modern build --platform"})," command you can see."]}),`
70
+ `,t(o.ul,{children:[`
71
+ `,e(o.li,{children:e(o.a,{href:"/en/guide/command-preview.html#modern-build",children:e(o.code,{children:"modern build"})})}),`
72
+ `]}),`
73
+ `,t(o.p,{children:["After the build is complete, you can see the build product files in the ",e(o.code,{children:"dist/storybook-static"})," directory."]})]})}function b(r={}){const{wrapper:o}=r.components||{};return o?e(o,Object.assign({},r,{children:e(a,r)})):a(r)}function i(r,o){throw new Error("Expected "+(o?"component":"object")+" `"+r+"` to be defined: you likely forgot to import, pass, or provide it.")}const C="2022/12/5 16:29:55",k=`# Using Storybook
74
+
75
+ First of all, if you haven't read the following, take a few minutes to understand it first.
76
+
77
+ * [use micro-generator to enable Storybook debugging](/en/guide/use-micro-generator#storybook-debug)
78
+ * [\`modern dev\`](/en/guide/command-preview#modern-dev)
79
+
80
+ [Storybook](https://storybook.js.org/) is a tool dedicated to component debugging, providing around component development.
81
+
82
+ * Develop UIs that are more durable
83
+ * Test UIs with less effort and no flakes
84
+ * Document UI for your team to reuse
85
+ * Share how the UI actually works
86
+ * Automate UI workflows
87
+
88
+ So it is a complex and powerful tool.
89
+
90
+ The modular engineering solution is integrated with Storybook, so you can pretty much follow the official Storybook documentation. However, there are still a few things to keep in mind, which are explained below.
91
+
92
+ ## Debugging code
93
+
94
+ Component code needs to be introduced during debugging code, and currently component code can be introduced in two ways:
95
+
96
+ * Referencing the component product
97
+ * Referencing component source code
98
+
99
+ We recommend the first way of "**referencing component product**". Because it is almost close to the real usage scenario, not only can we debug the component functionality, but also verify the correctness of the build product.
100
+
101
+ Next, we will talk about how to use each of these two methods.
102
+
103
+ ### Referencing component products
104
+
105
+ If the TypeScript project \`foo\` exists.
106
+
107
+ <CH.Spotlight>
108
+
109
+ \`\`\`json package.json
110
+ {
111
+ "name": "foo",
112
+ "main": "./dist/index.js",
113
+ "types": "./dist/types/index.d.ts"
114
+ }
115
+ \`\`\`
116
+
117
+ ---
118
+
119
+ Make sure the \`main\` and \`types\` of \`package.json\`
120
+ values are real paths.
121
+
122
+ \`\`\`json package.json
123
+ {
124
+ "name": "foo",
125
+ "main": "./dist/index.js",
126
+ "types": "./dist/types/index.d.ts"
127
+ }
128
+ \`\`\`
129
+
130
+ ---
131
+
132
+ The source code of the \`foo\` project.
133
+
134
+ \`\`\`typescript src/index.ts
135
+ export const content = 'hello world';
136
+ \`\`\`
137
+
138
+ ---
139
+
140
+
141
+ Make sure that the \`paths\` configuration pointing to the project root is set in \`stories/tsconfig.json\`.
142
+ The \`key\` of \`paths\` is the same as the project name.
143
+
144
+ \`\`\`json stories/tsconfig.json focus=7:9
145
+ {
146
+ "extends": "../tsconfig.json",
147
+ "include": ["./"],
148
+ "compilerOptions": {
149
+ "jsx": "preserve",
150
+ "baseUrl": ".",
151
+ "paths": {
152
+ "foo": ["../"]
153
+ }
154
+ }
155
+ }
156
+ \`\`\`
157
+
158
+ ---
159
+
160
+ Finally, it is referenced directly in the Story code by the project name.
161
+
162
+ \`\`\`tsx stories/index.stories.tsx focus=1:1
163
+ import { content } from 'foo';
164
+
165
+ const Component = () => <div>this is a Story Component {content}</div>;
166
+
167
+ export const YourStory = () => <Component />;
168
+
169
+ export default {
170
+ title: 'Your Stories',
171
+ };
172
+ \`\`\`
173
+
174
+ </CH.Spotlight>
175
+
176
+ If, during development, you encounter a situation where the type definition is not available in real time, at that point.
177
+
178
+ For \`pnpm\` projects, \`package.json\` can be modified as follows.
179
+
180
+ \`\`\` ts focus=4:7
181
+ {
182
+ "name": "foo",
183
+ "main": "./dist/index.js",
184
+ "types": "./src/index.ts",
185
+ "publishConfig": {
186
+ "types": "./dist/index.d.ts",
187
+ }
188
+ }
189
+ \`\`\`
190
+ > For the use of pnpm's \`publishConfig\`, you can read the following [link](https://pnpm.io/package_json#publishconfig).
191
+
192
+ For npm and Yarn projects, the values of \`types\` of \`package.json\` can only be changed manually in **development phase** and **release phase**.
193
+
194
+
195
+ So why is it possible to reference the product directly?
196
+
197
+ 1. the \`modern build\` command is executed automatically before the \`modern dev storybook\` command, ensuring the existence of the project build product.
198
+ 2. The project name is added as an alias inside Storybook to ensure that the path to the project's product can be parsed **according to \`package.json\`**.
199
+
200
+
201
+ ### Referencing component source code
202
+
203
+ Referencing component source code can be done by means of relative paths to:
204
+
205
+ \`\`\`ts ./stories/index.tsx
206
+ import { content } from '../src';
207
+
208
+ const Component = () => <div>this is a Story Component {content}</div>;
209
+
210
+ export const YourStory = () => <Component />;
211
+
212
+ export default {
213
+ title: 'Your Stories',
214
+ };
215
+ \`\`\`
216
+
217
+ So why is the source code approach not recommended?
218
+
219
+ Not only is it impossible to verify that the component product is correct using the component source code, **but also some of the configurations supported by the module project for building the product cannot be fully translated into Storybook internal configuration**. If some of the configurations cannot be converted to each other, there will be unintended results during Storybook debugging.
220
+
221
+
222
+ ## Configure Storybook
223
+
224
+ ### Configuration file
225
+
226
+ Storybook is officially configured for projects through a folder called \`.storybook\`, which contains various configuration files. **In a module project scenario, Storybook configuration files can be added to the \`config/storybook\` directory of the project.**
227
+
228
+ For more information on how to use the various Storybook configuration files, see the following links:
229
+
230
+ * [Configure Storybook](https://storybook.js.org/docs/react/configure/overview)
231
+
232
+ **But there are some limitations to Storybooking in a module project**:
233
+
234
+ * It is currently not possible to change the location of the Story file, i.e., you cannot change the \`stories\` configuration in the \`main.js\` file.
235
+ * Currently you cannot modify Webpack and Babel related configuration, i.e. you cannot modify \`webpackFinal\` and \`babel\` configuration in the \`main.js\` file.
236
+
237
+ In the future we will consider whether these configurations can be allowed to be modified, but for now we are limiting their use to reduce unpredictable issues.
238
+
239
+ ### \`dev.storybook\`
240
+
241
+ In addition to the configuration file, the module engineering solution also provides a \`dev.storybook\` configuration item in the \`modern.config.(j|t)s\` project configuration file.
242
+
243
+ The webpack configuration of Storybook can be modified via this configuration.
244
+
245
+ * [\`dev.storybook.webpack\`](xxx)
246
+
247
+ ### Building Storybook Products
248
+
249
+ In addition to Storybook debugging of components or common modules, you can also perform Storybook build tasks with the following commands.
250
+
251
+ \`\`\` bash
252
+ modern build --platform storybook
253
+ \`\`\`
254
+
255
+ For the \`modern build --platform\` command you can see.
256
+
257
+ * [\`modern build\`](/en/guide/command-preview#modern-build)
258
+
259
+ After the build is complete, you can see the build product files in the \`dist/storybook-static\` directory.
260
+ `;export{n as CH,s as chCodeConfig,k as content,b as default,E as frontmatter,C as lastUpdatedTime,h as title,f as toc};
@@ -0,0 +1,13 @@
1
+ import{jsx as o,jsxs as t,Fragment as s}from"react/jsx-runtime";const a=void 0,l=[],d="Welcome to Module Tools";function r(n){const e=Object.assign({h1:"h1",a:"a",p:"p",ul:"ul",li:"li",strong:"strong",code:"code"},n.components);return t(s,{children:[t(e.h1,{id:"welcome-to-module-tools",children:[o(e.a,{className:"header-anchor","aria-hidden":"true",href:"#welcome-to-module-tools",children:"#"}),"Welcome to Module Tools"]}),`
2
+ `,o(e.p,{children:"Module Tools is a modules engineering solution for Modern.js/EdenX, as well as a core dependency. It allows developers to build, debug, and publish module type project more easily. A module type project can mostly be thought of as an npm package type project, which may be a component, component library or tool library project."}),`
3
+ `,o(e.p,{children:"If you are planning to develop a project of the npm package type, then you came to the right place! Modern.js/EdenX provides a professional module engineering solution. It gives you:"}),`
4
+ `,t(e.ul,{children:[`
5
+ `,t(e.li,{children:[o(e.strong,{children:"Simple project initialization"}),": simply execute the ",o(e.code,{children:"npx @modern-js/create project-dir"})," command, followed by a few interactive questions, to create a complete module type project. The created project also supports the choice of two package managers, ",o(e.a,{href:"https://pnpm.io/",target:"_blank",rel:"nofollow",children:o(e.strong,{children:"pnpm"})})," and ",o(e.a,{href:"https://classic.yarnpkg.com/",target:"_blank",rel:"nofollow",children:o(e.strong,{children:"Yarn"})}),"."]}),`
6
+ `,t(e.li,{children:[o(e.strong,{children:"Code formatting"}),": In a module project, you can execute ",o(e.code,{children:"modern lint"})," to format the code. The initialized module project includes the ",o(e.a,{href:"https://eslint.org/docs/latest/user-guide/core-concepts#what-is-eslint",target:"_blank",rel:"nofollow",children:"ESLint"})," ruleset for Modern.js/EdenX for most scenarios."]}),`
7
+ `,t(e.li,{children:[o(e.strong,{children:"Comprehensive build capabilities and faster builds"}),": Module Tools provides high-performance build capabilities based on ",o(e.a,{href:"https://esbuild.github.io/getting-started/",target:"_blank",rel:"nofollow",children:"esbuild"})," and ",o(e.a,{href:"https://swc.rs/",target:"_blank",rel:"nofollow",children:"SWC"}),", and provides rich configurations for different build scenarios."]}),`
8
+ `,t(e.li,{children:[o(e.strong,{children:"Storybook debugging tools"}),": Module Tools provides ",o(e.a,{href:"https://storybook.js.org/",target:"_blank",rel:"nofollow",children:"Storybook"})," debugging tools for debugging module projects. After installing the Storybook plugin for Module Tools, you can start it with the ",o(e.code,{children:"modern dev storybook"})," command. You can use Storybook not only for debugging components, but also for other types of modules."]}),`
9
+ `,t(e.li,{children:[o(e.strong,{children:"Testing capabilities with Jest"}),": When you need to test a module, you can use the ",o(e.code,{children:"modern test"})," command of Module Tools, which not only integrates with ",o(e.a,{href:"https://jestjs.io/",target:"_blank",rel:"nofollow",children:"Jest"}),", but also provides an API for configuring ",o(e.a,{href:"https://jestjs.io/docs/configuration",target:"_blank",rel:"nofollow",children:"Jest"}),"."]}),`
10
+ `,t(e.li,{children:[o(e.strong,{children:"Versioning based on Changesets"}),": When you need to record changes to a project, you can use the ",o(e.code,{children:"modern change"})," command to generate a Markdown file containing the changes; when you need to upgrade a project, you can use the ",o(e.code,{children:"modern bump"})," command to analyze and upgrade the version through the Markdown file; when you need to release a project, you can use the ",o(e.code,{children:"modern release"})," command to release the project; Module Tools implements these commands based on ",o(e.a,{href:"https://github.com/changesets/changesets",target:"_blank",rel:"nofollow",children:"Changesets"}),"."]}),`
11
+ `,t(e.li,{children:[o(e.strong,{children:"Extensible plug-in mechanism"}),": Want to integrate additional debugging tools for your project? Or maybe you want to do some extra processing during the build process, Module Tools provides a plugin mechanism and plugin hooks that cover both the ",o(e.code,{children:"dev"})," command and the ",o(e.code,{children:"build"})," command process. You can use them to extend the capabilities of your project."]}),`
12
+ `,t(e.li,{children:[o(e.strong,{children:"Lots more!"})," Module Tools will continue to optimize its build and debug features in the future. If there are important issues to be solved in module project building, or if a mainstream module project debugging tool or pattern emerges, then they will probably be supported by Module Tools."]}),`
13
+ `]})]})}function c(n={}){const{wrapper:e}=n.components||{};return e?o(e,Object.assign({},n,{children:o(r,n)})):r(n)}const u="2022/11/25 17:05:22",h="# Welcome to Module Tools\n\nModule Tools is a modules engineering solution for Modern.js/EdenX, as well as a core dependency. It allows developers to build, debug, and publish module type project more easily. A module type project can mostly be thought of as an npm package type project, which may be a component, component library or tool library project.\n\nIf you are planning to develop a project of the npm package type, then you came to the right place! Modern.js/EdenX provides a professional module engineering solution. It gives you:\n\n- **Simple project initialization**: simply execute the `npx @modern-js/create project-dir` command, followed by a few interactive questions, to create a complete module type project. The created project also supports the choice of two package managers, [**pnpm**](https://pnpm.io/) and [**Yarn**](https://classic.yarnpkg.com/).\n- **Code formatting**: In a module project, you can execute `modern lint` to format the code. The initialized module project includes the [ESLint](https://eslint.org/docs/latest/user-guide/core-concepts#what-is-eslint) ruleset for Modern.js/EdenX for most scenarios.\n- **Comprehensive build capabilities and faster builds**: Module Tools provides high-performance build capabilities based on [esbuild](https://esbuild.github.io/getting-started/) and [SWC](https://swc.rs/), and provides rich configurations for different build scenarios.\n- **Storybook debugging tools**: Module Tools provides [Storybook](https://storybook.js.org/) debugging tools for debugging module projects. After installing the Storybook plugin for Module Tools, you can start it with the `modern dev storybook` command. You can use Storybook not only for debugging components, but also for other types of modules.\n- **Testing capabilities with Jest**: When you need to test a module, you can use the `modern test` command of Module Tools, which not only integrates with [Jest](https://jestjs.io/), but also provides an API for configuring [Jest](https://jestjs.io/docs/configuration).\n- **Versioning based on Changesets**: When you need to record changes to a project, you can use the `modern change` command to generate a Markdown file containing the changes; when you need to upgrade a project, you can use the `modern bump` command to analyze and upgrade the version through the Markdown file; when you need to release a project, you can use the `modern release` command to release the project; Module Tools implements these commands based on [Changesets](https://github.com/changesets/changesets).\n- **Extensible plug-in mechanism**: Want to integrate additional debugging tools for your project? Or maybe you want to do some extra processing during the build process, Module Tools provides a plugin mechanism and plugin hooks that cover both the `dev` command and the `build` command process. You can use them to extend the capabilities of your project.\n- **Lots more!** Module Tools will continue to optimize its build and debug features in the future. If there are important issues to be solved in module project building, or if a mainstream module project debugging tool or pattern emerges, then they will probably be supported by Module Tools.\n";export{h as content,c as default,a as frontmatter,u as lastUpdatedTime,d as title,l as toc};
@@ -0,0 +1,13 @@
1
+ import{jsx as o,jsxs as n,Fragment as l}from"react/jsx-runtime";const d=void 0,c=[],i="\u6B22\u8FCE\u4F7F\u7528";function r(t){const e=Object.assign({h1:"h1",a:"a",p:"p",ul:"ul",li:"li",strong:"strong",code:"code"},t.components);return n(l,{children:[n(e.h1,{id:"\u6B22\u8FCE\u4F7F\u7528",children:[o(e.a,{className:"header-anchor","aria-hidden":"true",href:"#\u6B22\u8FCE\u4F7F\u7528",children:"#"}),"\u6B22\u8FCE\u4F7F\u7528"]}),`
2
+ `,o(e.p,{children:"Module Tools \u662F Modern.js/EdenX \u7684\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848\uFF0C\u540C\u65F6\u4E5F\u662F\u6838\u5FC3\u4F9D\u8D56\u3002\u5B83\u53EF\u4EE5\u8BA9\u5F00\u53D1\u8005\u66F4\u8F7B\u677E\u5730\u6784\u5EFA\u3001\u8C03\u8BD5\u3001\u53D1\u5E03\u6A21\u5757\u7C7B\u578B\u7684\u9879\u76EE\u3002\u6A21\u5757\u7C7B\u578B\u7684\u9879\u76EE\u5927\u591A\u6570\u60C5\u51B5\u53EF\u4EE5\u8BA4\u4E3A\u662F npm \u5305\u7C7B\u578B\u7684\u9879\u76EE\uFF0C\u5B83\u53EF\u80FD\u662F\u4E00\u4E2A\u7EC4\u4EF6\u3001\u7EC4\u4EF6\u5E93\u6216\u8005\u5DE5\u5177\u5E93\u9879\u76EE\u3002"}),`
3
+ `,o(e.p,{children:"\u5982\u679C\u4F60\u6B63\u6253\u7B97\u5F00\u53D1\u4E00\u4E2A npm \u5305\u7C7B\u578B\u7684\u9879\u76EE\uFF0C\u90A3\u4E48\u4F60\u5C31\u6765\u5BF9\u5730\u65B9\u4E86\uFF01Modern.js/EdenX \u63D0\u4F9B\u4E86\u4E13\u4E1A\u7684\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848\u3002\u5B83\u5E26\u6765\u4E86\uFF1A"}),`
4
+ `,n(e.ul,{children:[`
5
+ `,n(e.li,{children:[o(e.strong,{children:"\u7B80\u5355\u7684\u9879\u76EE\u521D\u59CB\u5316"}),"\uFF1A\u4EC5\u9700\u6267\u884C ",o(e.code,{children:"npx @modern-js/create project-dir"})," \u547D\u4EE4\uFF0C\u7136\u540E\u8FDB\u884C\u51E0\u4E2A\u4EA4\u4E92\u95EE\u9898\uFF0C\u5C31\u53EF\u4EE5\u521B\u5EFA\u4E00\u4E2A\u5B8C\u6574\u7684\u6A21\u5757\u7C7B\u578B\u9879\u76EE\u3002\u521B\u5EFA\u7684\u9879\u76EE\u8FD8\u652F\u6301\u9009\u62E9 ",o(e.a,{href:"https://pnpm.io/",target:"_blank",rel:"nofollow",children:o(e.strong,{children:"pnpm"})}),"\u3001",o(e.a,{href:"https://classic.yarnpkg.com/",target:"_blank",rel:"nofollow",children:o(e.strong,{children:"Yarn"})})," \u4E24\u79CD\u5305\u7BA1\u7406\u5668\u3002"]}),`
6
+ `,n(e.li,{children:[o(e.strong,{children:"\u4EE3\u7801\u683C\u5F0F\u5316"}),"\uFF1A\u5728\u6A21\u5757\u5DE5\u7A0B\u9879\u76EE\u4E2D\uFF0C\u4F60\u53EF\u4EE5\u6267\u884C ",o(e.code,{children:"modern lint"})," \u6765\u5BF9\u4EE3\u7801\u8FDB\u884C\u683C\u5F0F\u5316\u3002\u540C\u65F6\u521D\u59CB\u5316\u7684\u6A21\u5757\u5DE5\u7A0B\u9879\u76EE\u91CC\u5305\u542B\u4E86 Modern.js/EdenX \u7684 ",o(e.a,{href:"https://eslint.org/docs/latest/user-guide/core-concepts#what-is-eslint",target:"_blank",rel:"nofollow",children:"ESLint"})," \u89C4\u5219\u96C6\uFF0C\u53EF\u4EE5\u6EE1\u8DB3\u5927\u90E8\u5206\u573A\u666F\u4E0B\u7684\u9700\u6C42\u3002"]}),`
7
+ `,n(e.li,{children:[o(e.strong,{children:"\u5168\u9762\u7684\u6784\u5EFA\u80FD\u529B\u548C\u66F4\u5FEB\u7684\u6784\u5EFA\u901F\u5EA6"}),"\uFF1AModule Tools \u57FA\u4E8E ",o(e.a,{href:"https://esbuild.github.io/getting-started/",target:"_blank",rel:"nofollow",children:"esbuild"})," \u548C ",o(e.a,{href:"https://swc.rs/",target:"_blank",rel:"nofollow",children:"SWC"})," \u63D0\u4F9B\u4E86\u9AD8\u6027\u80FD\u7684\u6784\u5EFA\u80FD\u529B\uFF0C\u5E76\u4E14\u4E3A\u4E0D\u540C\u6784\u5EFA\u6A21\u5757\u7684\u573A\u666F\u63D0\u4F9B\u4E86\u4E30\u5BCC\u7684\u914D\u7F6E\u3002"]}),`
8
+ `,n(e.li,{children:[o(e.strong,{children:"Storybook \u8C03\u8BD5\u5DE5\u5177"}),"\uFF1AModule Tools \u4E3A\u8C03\u8BD5\u6A21\u5757\u9879\u76EE\u63D0\u4F9B\u4E86 ",o(e.a,{href:"https://storybook.js.org/",target:"_blank",rel:"nofollow",children:"Storybook"})," \u8C03\u8BD5\u5DE5\u5177\u3002\u5728\u5B89\u88C5\u4E86 Module Tools \u7684 Storybook \u63D2\u4EF6\u540E\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528 ",o(e.code,{children:"modern dev storybook"})," \u547D\u4EE4\u6765\u542F\u52A8\u5B83\u3002\u4F60\u4E0D\u4EC5\u53EF\u4EE5\u4F7F\u7528 Storybook \u5BF9\u7EC4\u4EF6\u8FDB\u884C\u8C03\u8BD5\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528\u5728\u5176\u4ED6\u7C7B\u578B\u7684\u6A21\u5757\u4E0A\u3002"]}),`
9
+ `,n(e.li,{children:[o(e.strong,{children:"\u96C6\u6210 Jest \u7684\u6D4B\u8BD5\u80FD\u529B"}),"\uFF1A\u5728\u9700\u8981\u5BF9\u6A21\u5757\u6D4B\u8BD5\u7684\u65F6\u5019\uFF0C\u53EF\u4EE5\u4F7F\u7528 Module Tools \u7684 ",o(e.code,{children:"modern test"})," \u547D\u4EE4\u3002Module Tools \u4E0D\u4EC5\u96C6\u6210\u4E86 ",o(e.a,{href:"https://jestjs.io/",target:"_blank",rel:"nofollow",children:"Jest"}),"\uFF0C\u540C\u65F6\u4E5F\u63D0\u4F9B\u4E86\u914D\u7F6E ",o(e.a,{href:"https://jestjs.io/docs/configuration",target:"_blank",rel:"nofollow",children:"Jest"})," \u7684 API\u3002"]}),`
10
+ `,n(e.li,{children:[o(e.strong,{children:"\u57FA\u4E8E Changesets \u5B9E\u73B0\u7684\u7248\u672C\u7BA1\u7406"}),"\uFF1A\u5F53\u9700\u8981\u5BF9\u9879\u76EE\u8BB0\u5F55\u53D8\u66F4\u5185\u5BB9\u7684\u65F6\u5019\uFF0C\u53EF\u4EE5\u4F7F\u7528 ",o(e.code,{children:"modern change"})," \u547D\u4EE4\u751F\u6210\u5305\u542B\u53D8\u66F4\u5185\u5BB9\u7684 Markdown \u6587\u4EF6\uFF1B\u5F53\u9700\u8981\u5BF9\u9879\u76EE\u8FDB\u884C\u7248\u672C\u5347\u7EA7\u7684\u65F6\u5019\uFF0C\u53EF\u4EE5\u4F7F\u7528 ",o(e.code,{children:"modern bump"})," \u547D\u4EE4\u901A\u8FC7 Markdown \u6587\u4EF6\u5206\u6790\u5E76\u5347\u7EA7\u7248\u672C\uFF1B\u5F53\u9700\u8981\u53D1\u5E03\u9879\u76EE\u7684\u65F6\u5019\uFF0C\u53EF\u4EE5\u4F7F\u7528 ",o(e.code,{children:"modern release"})," \u547D\u4EE4\u5BF9\u9879\u76EE\u8FDB\u884C\u53D1\u5E03\u3002Module Tools \u57FA\u4E8E ",o(e.a,{href:"https://github.com/changesets/changesets",target:"_blank",rel:"nofollow",children:"Changesets"})," \u5B9E\u73B0\u4E86\u8FD9\u4E9B\u547D\u4EE4\u3002"]}),`
11
+ `,n(e.li,{children:[o(e.strong,{children:"\u53EF\u6269\u5C55\u6027\u7684\u63D2\u4EF6\u673A\u5236"}),"\uFF1A\u60F3\u8981\u4E3A\u9879\u76EE\u96C6\u6210\u5176\u4ED6\u7684\u8C03\u8BD5\u5DE5\u5177\uFF1F\u53C8\u6216\u8005\u662F\u60F3\u8981\u5728\u6784\u5EFA\u8FC7\u7A0B\u4E2D\u505A\u4E00\u4E9B\u989D\u5916\u5904\u7406\uFF1FModule Tools \u63D0\u4F9B\u4E86\u63D2\u4EF6\u673A\u5236\u548C\u63D2\u4EF6\u94A9\u5B50\uFF0C\u63D2\u4EF6\u94A9\u5B50\u8986\u76D6\u4E86 ",o(e.code,{children:"dev"})," \u547D\u4EE4\u548C ",o(e.code,{children:"build"})," \u547D\u4EE4\u4E24\u4E2A\u6D41\u7A0B\u3002\u4F60\u53EF\u4EE5\u901A\u8FC7\u5B83\u4EEC\u4E3A\u9879\u76EE\u8FDB\u884C\u80FD\u529B\u7684\u6269\u5C55\u3002"]}),`
12
+ `,n(e.li,{children:[o(e.strong,{children:"\u8FD8\u6709\u66F4\u591A"}),"\uFF1AModule Tools \u5728\u672A\u6765\u8FD8\u4F1A\u4E0D\u65AD\u7684\u5728\u6784\u5EFA\u3001\u8C03\u8BD5\u529F\u80FD\u4E0A\u8FDB\u884C\u4F18\u5316\u3002\u5982\u679C\u5728\u6A21\u5757\u9879\u76EE\u6784\u5EFA\u4E0A\u5B58\u5728\u9700\u8981\u89E3\u51B3\u7684\u91CD\u8981\u95EE\u9898\uFF0C\u53C8\u6216\u8005\u662F\u67D0\u4E2A\u4E3B\u6D41\u7684\u6A21\u5757\u9879\u76EE\u8C03\u8BD5\u5DE5\u5177\u3001\u6A21\u5F0F\u51FA\u73B0\u7684\u65F6\u5019\uFF0C\u90A3\u4E48\u5B83\u4EEC\u5F88\u53EF\u80FD\u6210\u4E3A Module Tools \u5C06\u8981\u652F\u6301\u529F\u80FD\u3002"]}),`
13
+ `]})]})}function h(t={}){const{wrapper:e}=t.components||{};return e?o(e,Object.assign({},t,{children:o(r,t)})):r(t)}const a="2022/11/25 17:05:22",g="# \u6B22\u8FCE\u4F7F\u7528\n\nModule Tools \u662F Modern.js/EdenX \u7684\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848\uFF0C\u540C\u65F6\u4E5F\u662F\u6838\u5FC3\u4F9D\u8D56\u3002\u5B83\u53EF\u4EE5\u8BA9\u5F00\u53D1\u8005\u66F4\u8F7B\u677E\u5730\u6784\u5EFA\u3001\u8C03\u8BD5\u3001\u53D1\u5E03\u6A21\u5757\u7C7B\u578B\u7684\u9879\u76EE\u3002\u6A21\u5757\u7C7B\u578B\u7684\u9879\u76EE\u5927\u591A\u6570\u60C5\u51B5\u53EF\u4EE5\u8BA4\u4E3A\u662F npm \u5305\u7C7B\u578B\u7684\u9879\u76EE\uFF0C\u5B83\u53EF\u80FD\u662F\u4E00\u4E2A\u7EC4\u4EF6\u3001\u7EC4\u4EF6\u5E93\u6216\u8005\u5DE5\u5177\u5E93\u9879\u76EE\u3002\n\n\u5982\u679C\u4F60\u6B63\u6253\u7B97\u5F00\u53D1\u4E00\u4E2A npm \u5305\u7C7B\u578B\u7684\u9879\u76EE\uFF0C\u90A3\u4E48\u4F60\u5C31\u6765\u5BF9\u5730\u65B9\u4E86\uFF01Modern.js/EdenX \u63D0\u4F9B\u4E86\u4E13\u4E1A\u7684\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848\u3002\u5B83\u5E26\u6765\u4E86\uFF1A\n\n- **\u7B80\u5355\u7684\u9879\u76EE\u521D\u59CB\u5316**\uFF1A\u4EC5\u9700\u6267\u884C `npx @modern-js/create project-dir` \u547D\u4EE4\uFF0C\u7136\u540E\u8FDB\u884C\u51E0\u4E2A\u4EA4\u4E92\u95EE\u9898\uFF0C\u5C31\u53EF\u4EE5\u521B\u5EFA\u4E00\u4E2A\u5B8C\u6574\u7684\u6A21\u5757\u7C7B\u578B\u9879\u76EE\u3002\u521B\u5EFA\u7684\u9879\u76EE\u8FD8\u652F\u6301\u9009\u62E9 [**pnpm**](https://pnpm.io/)\u3001[**Yarn**](https://classic.yarnpkg.com/) \u4E24\u79CD\u5305\u7BA1\u7406\u5668\u3002\n- **\u4EE3\u7801\u683C\u5F0F\u5316**\uFF1A\u5728\u6A21\u5757\u5DE5\u7A0B\u9879\u76EE\u4E2D\uFF0C\u4F60\u53EF\u4EE5\u6267\u884C `modern lint` \u6765\u5BF9\u4EE3\u7801\u8FDB\u884C\u683C\u5F0F\u5316\u3002\u540C\u65F6\u521D\u59CB\u5316\u7684\u6A21\u5757\u5DE5\u7A0B\u9879\u76EE\u91CC\u5305\u542B\u4E86 Modern.js/EdenX \u7684 [ESLint](https://eslint.org/docs/latest/user-guide/core-concepts#what-is-eslint) \u89C4\u5219\u96C6\uFF0C\u53EF\u4EE5\u6EE1\u8DB3\u5927\u90E8\u5206\u573A\u666F\u4E0B\u7684\u9700\u6C42\u3002\n- **\u5168\u9762\u7684\u6784\u5EFA\u80FD\u529B\u548C\u66F4\u5FEB\u7684\u6784\u5EFA\u901F\u5EA6**\uFF1AModule Tools \u57FA\u4E8E [esbuild](https://esbuild.github.io/getting-started/) \u548C [SWC](https://swc.rs/) \u63D0\u4F9B\u4E86\u9AD8\u6027\u80FD\u7684\u6784\u5EFA\u80FD\u529B\uFF0C\u5E76\u4E14\u4E3A\u4E0D\u540C\u6784\u5EFA\u6A21\u5757\u7684\u573A\u666F\u63D0\u4F9B\u4E86\u4E30\u5BCC\u7684\u914D\u7F6E\u3002\n- **Storybook \u8C03\u8BD5\u5DE5\u5177**\uFF1AModule Tools \u4E3A\u8C03\u8BD5\u6A21\u5757\u9879\u76EE\u63D0\u4F9B\u4E86 [Storybook](https://storybook.js.org/) \u8C03\u8BD5\u5DE5\u5177\u3002\u5728\u5B89\u88C5\u4E86 Module Tools \u7684 Storybook \u63D2\u4EF6\u540E\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528 `modern dev storybook` \u547D\u4EE4\u6765\u542F\u52A8\u5B83\u3002\u4F60\u4E0D\u4EC5\u53EF\u4EE5\u4F7F\u7528 Storybook \u5BF9\u7EC4\u4EF6\u8FDB\u884C\u8C03\u8BD5\uFF0C\u4E5F\u53EF\u4EE5\u4F7F\u7528\u5728\u5176\u4ED6\u7C7B\u578B\u7684\u6A21\u5757\u4E0A\u3002\n- **\u96C6\u6210 Jest \u7684\u6D4B\u8BD5\u80FD\u529B**\uFF1A\u5728\u9700\u8981\u5BF9\u6A21\u5757\u6D4B\u8BD5\u7684\u65F6\u5019\uFF0C\u53EF\u4EE5\u4F7F\u7528 Module Tools \u7684 `modern test` \u547D\u4EE4\u3002Module Tools \u4E0D\u4EC5\u96C6\u6210\u4E86 [Jest](https://jestjs.io/)\uFF0C\u540C\u65F6\u4E5F\u63D0\u4F9B\u4E86\u914D\u7F6E [Jest](https://jestjs.io/docs/configuration) \u7684 API\u3002\n- **\u57FA\u4E8E Changesets \u5B9E\u73B0\u7684\u7248\u672C\u7BA1\u7406**\uFF1A\u5F53\u9700\u8981\u5BF9\u9879\u76EE\u8BB0\u5F55\u53D8\u66F4\u5185\u5BB9\u7684\u65F6\u5019\uFF0C\u53EF\u4EE5\u4F7F\u7528 `modern change` \u547D\u4EE4\u751F\u6210\u5305\u542B\u53D8\u66F4\u5185\u5BB9\u7684 Markdown \u6587\u4EF6\uFF1B\u5F53\u9700\u8981\u5BF9\u9879\u76EE\u8FDB\u884C\u7248\u672C\u5347\u7EA7\u7684\u65F6\u5019\uFF0C\u53EF\u4EE5\u4F7F\u7528 `modern bump` \u547D\u4EE4\u901A\u8FC7 Markdown \u6587\u4EF6\u5206\u6790\u5E76\u5347\u7EA7\u7248\u672C\uFF1B\u5F53\u9700\u8981\u53D1\u5E03\u9879\u76EE\u7684\u65F6\u5019\uFF0C\u53EF\u4EE5\u4F7F\u7528 `modern release` \u547D\u4EE4\u5BF9\u9879\u76EE\u8FDB\u884C\u53D1\u5E03\u3002Module Tools \u57FA\u4E8E [Changesets](https://github.com/changesets/changesets) \u5B9E\u73B0\u4E86\u8FD9\u4E9B\u547D\u4EE4\u3002\n- **\u53EF\u6269\u5C55\u6027\u7684\u63D2\u4EF6\u673A\u5236**\uFF1A\u60F3\u8981\u4E3A\u9879\u76EE\u96C6\u6210\u5176\u4ED6\u7684\u8C03\u8BD5\u5DE5\u5177\uFF1F\u53C8\u6216\u8005\u662F\u60F3\u8981\u5728\u6784\u5EFA\u8FC7\u7A0B\u4E2D\u505A\u4E00\u4E9B\u989D\u5916\u5904\u7406\uFF1FModule Tools \u63D0\u4F9B\u4E86\u63D2\u4EF6\u673A\u5236\u548C\u63D2\u4EF6\u94A9\u5B50\uFF0C\u63D2\u4EF6\u94A9\u5B50\u8986\u76D6\u4E86 `dev` \u547D\u4EE4\u548C `build` \u547D\u4EE4\u4E24\u4E2A\u6D41\u7A0B\u3002\u4F60\u53EF\u4EE5\u901A\u8FC7\u5B83\u4EEC\u4E3A\u9879\u76EE\u8FDB\u884C\u80FD\u529B\u7684\u6269\u5C55\u3002\n- **\u8FD8\u6709\u66F4\u591A**\uFF1AModule Tools \u5728\u672A\u6765\u8FD8\u4F1A\u4E0D\u65AD\u7684\u5728\u6784\u5EFA\u3001\u8C03\u8BD5\u529F\u80FD\u4E0A\u8FDB\u884C\u4F18\u5316\u3002\u5982\u679C\u5728\u6A21\u5757\u9879\u76EE\u6784\u5EFA\u4E0A\u5B58\u5728\u9700\u8981\u89E3\u51B3\u7684\u91CD\u8981\u95EE\u9898\uFF0C\u53C8\u6216\u8005\u662F\u67D0\u4E2A\u4E3B\u6D41\u7684\u6A21\u5757\u9879\u76EE\u8C03\u8BD5\u5DE5\u5177\u3001\u6A21\u5F0F\u51FA\u73B0\u7684\u65F6\u5019\uFF0C\u90A3\u4E48\u5B83\u4EEC\u5F88\u53EF\u80FD\u6210\u4E3A Module Tools \u5C06\u8981\u652F\u6301\u529F\u80FD\u3002\n";export{g as content,h as default,d as frontmatter,a as lastUpdatedTime,i as title,c as toc};
@@ -0,0 +1,26 @@
1
+ import{jsx as e,jsxs as o,Fragment as r}from"react/jsx-runtime";const c=void 0,d=[],i="\u4E3A\u4EC0\u4E48\u9700\u8981\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848";function l(t){const n=Object.assign({h1:"h1",a:"a",p:"p",img:"img",strong:"strong"},t.components);return o(r,{children:[o(n.h1,{id:"\u4E3A\u4EC0\u4E48\u9700\u8981\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848",children:[e(n.a,{className:"header-anchor","aria-hidden":"true",href:"#\u4E3A\u4EC0\u4E48\u9700\u8981\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848",children:"#"}),"\u4E3A\u4EC0\u4E48\u9700\u8981\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848"]}),`
2
+ `,e(n.p,{children:"\u5927\u5BB6\u53EF\u80FD\u90FD\u7ECF\u5386\u8FC7\uFF1A\u4ECE\u96F6\u5F00\u59CB\u5F00\u53D1\u4E00\u4E2A\u7EC4\u4EF6\u5E93\u6216\u8005\u5DE5\u5177\u5E93\u7684\u8FC7\u7A0B\u4E2D\uFF0C\u6211\u4EEC\u4E0D\u4EC5\u8981\u8003\u8651\u9879\u76EE\u672C\u8EAB\u7684\u4EE3\u7801\u903B\u8F91\u5982\u4F55\u7F16\u5199\uFF0C\u8FD8\u8981\u8003\u8651\u9879\u76EE\u7684\u6784\u5EFA\u3001\u8C03\u8BD5\u3001\u6D4B\u8BD5\u3001\u4EE3\u7801\u683C\u5F0F\u5316\u7B49\u7B49\u548C\u4EE3\u7801\u903B\u8F91\u65E0\u5173\u7684\u4E8B\u60C5\u3002"}),`
3
+ `,o(n.p,{children:["\u6BD4\u5982\u8BF4\uFF0C\u5F53\u6211\u4EEC\u8003\u8651\u6784\u5EFA\u6A21\u5757\u9879\u76EE\u7684\u4EE3\u7801\u662F\u4F7F\u7528\u4EC0\u4E48\u6784\u5EFA\u5DE5\u5177\u7684\u65F6\u5019\uFF0C\u5728\u4E4B\u524D\u6211\u4EEC\u53EF\u80FD\u4F1A\u8003\u8651\u4F7F\u7528 ",e(n.a,{href:"https://webpack.js.org/",target:"_blank",rel:"nofollow",children:"webpack"})," \u8FD8\u662F ",e(n.a,{href:"https://rollupjs.org/guide/en/",target:"_blank",rel:"nofollow",children:"Rollup"}),"\uFF0C\u7136\u800C\u73B0\u5728\u7684\u8BDD\uFF0C\u4E5F\u8BB8\u8FD8\u4F1A\u8003\u8651\u662F\u4F7F\u7528 ",e(n.a,{href:"https://esbuild.github.io/",target:"_blank",rel:"nofollow",children:"esbuild"})," \u8FD8\u662F ",e(n.a,{href:"https://swc.rs/",target:"_blank",rel:"nofollow",children:"SWC"}),"\u3002"]}),`
4
+ `,e(n.p,{children:"\u65E0\u8BBA\u9009\u62E9\u54EA\u4E2A\u6784\u5EFA\u5DE5\u5177\uFF0C\u8FD9\u5BF9\u4E8E\u6CA1\u6709\u719F\u7EC3\u638C\u63E1\u8FD9\u4E9B\u6784\u5EFA\u5DE5\u5177\u4F7F\u7528\u65B9\u5F0F\u7684\u5F00\u53D1\u8005\u6765\u8BF4\uFF0C\u662F\u9700\u8981\u4E00\u5B9A\u7684\u6210\u672C\u53BB\u5B66\u4E60\u7684\u3002\u5373\u4F7F\u60F3\u8981\u5FEB\u901F\u4F7F\u7528\uFF0C\u4E5F\u4F1A\u9700\u8981\u82B1\u8D39\u5927\u91CF\u7684\u65F6\u95F4\u548C\u7CBE\u529B\u3002"}),`
5
+ `,e(n.p,{children:"\u800C\u9664\u4E86\u6784\u5EFA\u8FD9\u4EF6\u4E8B\u60C5\u4EE5\u5916\uFF0C\u50CF\u4E3A\u9879\u76EE\u63D0\u4F9B\u8C03\u8BD5\u5DE5\u5177\u3001\u652F\u6301\u6D4B\u8BD5\u80FD\u529B\u3001\u589E\u52A0\u4EE3\u7801\u683C\u5F0F\u6821\u9A8C\u7B49\u7B49\uFF0C\u5BF9\u4E8E\u4E00\u4E2A\u65B0\u624B\u6765\u8BF4\u90FD\u6709\u53EF\u80FD\u9700\u8981\u82B1\u8D39\u5F88\u957F\u7684\u65F6\u95F4\u548C\u7CBE\u529B\u4E86\u89E3\u6216\u8005\u638C\u63E1\u5B83\u4EEC\uFF0C\u5E76\u4E14\u771F\u6B63\u7684\u670D\u52A1\u4E8E\u5F53\u524D\u7684\u9879\u76EE\u4E2D\u3002"}),`
6
+ `,e(n.p,{children:"\u800C\u4E3A\u4E86\u4FDD\u8BC1\u4EE3\u7801\u8D28\u91CF\u4EE5\u53CA\u9879\u76EE\u7684\u5B8C\u6574\u6027\uFF0C\u6211\u4EEC\u5F80\u5F80\u662F\u9700\u8981\u505A\u8FD9\u4E9B\u4E0E\u4EE3\u7801\u903B\u8F91\u5B9E\u73B0\u65E0\u5173\u7684\u4E8B\u60C5\u3002\u7136\u800C\u8FD9\u4E9B\u4E8B\u60C5\u5F88\u6709\u53EF\u80FD\u4F1A\u5F71\u54CD\u6574\u4F53\u7684\u9879\u76EE\u5F00\u53D1\u8FDB\u5EA6\uFF0C\u964D\u4F4E\u5F00\u53D1\u8005\u7684\u5F00\u53D1\u4F53\u9A8C\uFF0C\u4F1A\u8BA9\u5F00\u53D1\u8005\u611F\u89C9\u6A21\u5757\u9879\u76EE\u7684\u5F00\u53D1\u95E8\u69DB\u5F88\u9AD8\u3002"}),`
7
+ `,e(n.p,{children:"\u5982\u679C\u8BF4\u6BCF\u6B21\u5F00\u53D1\u4E00\u4E2A\u6A21\u5757\u7C7B\u578B\u7684\u9879\u76EE\u90FD\u9700\u8981\u7ECF\u5386\u4E00\u904D\u8FD9\u4E9B\u5DE5\u4F5C\u51C6\u5907\u7684\u8BDD\uFF0C\u90A3\u4E48\u57FA\u672C\u4E0A\u521A\u5F00\u59CB\u5F00\u53D1\u7684\u65F6\u95F4\u4F1A\u5927\u90E8\u5206\u82B1\u8D39\u5728\u8FD9\u4E9B\u4E0E\u4EE3\u7801\u5B9E\u73B0\u65E0\u5173\u7684\u4E8B\u60C5\u4E0A\u3002\u5982\u679C\u80FD\u591F\u63D0\u4F9B\u4E00\u4E2A\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848\uFF0C\u5B83\u80FD\u591F\u5E2E\u52A9\u5F00\u53D1\u8005\u89E3\u51B3\u9879\u76EE\u5DE5\u7A0B\u4E0A\u7684\u4E8B\u60C5\uFF0C\u8BA9\u5F00\u53D1\u8005\u53EF\u4EE5\u66F4\u4E13\u6CE8\u4E8E\u4EE3\u7801\u7684\u5B9E\u73B0\u4E0A\uFF0C\u90A3\u4E48\u8FD9\u5C06\u4F1A\u5927\u5927\u63D0\u5347\u6A21\u5757\u7C7B\u578B\u9879\u76EE\u7684\u5F00\u53D1\u4F53\u9A8C\u3002"}),`
8
+ `,e(n.p,{children:e(n.img,{src:"/why-module-solution.png",alt:"\u6CA1\u6709\u4F7F\u7528\u5DE5\u7A0B\u65B9\u6848\u5BF9\u6BD4\u4F7F\u7528\u5DE5\u7A0B\u65B9\u6848"})}),`
9
+ `,o(n.p,{children:["Modern.js/EdenX \u4E3A\u4E86\u8BA9\u5F00\u53D1\u6A21\u5757\u7C7B\u578B\u7684\u9879\u76EE\u66F4\u7B80\u5355\uFF0C\u4E3A\u4E86\u89E3\u51B3\u4E0A\u8FF0\u63D0\u5230\u7684\u95EE\u9898\u63D0\u4F9B\u4E86\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848\uFF0C\u5E76\u4E14\u4F7F\u7528 Module Tools \u63D0\u4F9B\u4E86\u4E3B\u8981\u7684\u529F\u80FD\u3002",e(n.strong,{children:"Module-tools \u53EF\u4EE5\u7406\u89E3\u4E3A\u662F\u4E00\u4E2A\u4E13\u95E8\u7528\u4E8E\u6A21\u5757\u7C7B\u578B\u9879\u76EE\u5F00\u53D1\u7684\u5DE5\u5177"}),"\u3002"]})]})}function h(t={}){const{wrapper:n}=t.components||{};return n?e(n,Object.assign({},t,{children:e(l,t)})):l(t)}const a="2022/11/29 14:53:49",p=`# \u4E3A\u4EC0\u4E48\u9700\u8981\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848
10
+
11
+ \u5927\u5BB6\u53EF\u80FD\u90FD\u7ECF\u5386\u8FC7\uFF1A\u4ECE\u96F6\u5F00\u59CB\u5F00\u53D1\u4E00\u4E2A\u7EC4\u4EF6\u5E93\u6216\u8005\u5DE5\u5177\u5E93\u7684\u8FC7\u7A0B\u4E2D\uFF0C\u6211\u4EEC\u4E0D\u4EC5\u8981\u8003\u8651\u9879\u76EE\u672C\u8EAB\u7684\u4EE3\u7801\u903B\u8F91\u5982\u4F55\u7F16\u5199\uFF0C\u8FD8\u8981\u8003\u8651\u9879\u76EE\u7684\u6784\u5EFA\u3001\u8C03\u8BD5\u3001\u6D4B\u8BD5\u3001\u4EE3\u7801\u683C\u5F0F\u5316\u7B49\u7B49\u548C\u4EE3\u7801\u903B\u8F91\u65E0\u5173\u7684\u4E8B\u60C5\u3002
12
+
13
+ \u6BD4\u5982\u8BF4\uFF0C\u5F53\u6211\u4EEC\u8003\u8651\u6784\u5EFA\u6A21\u5757\u9879\u76EE\u7684\u4EE3\u7801\u662F\u4F7F\u7528\u4EC0\u4E48\u6784\u5EFA\u5DE5\u5177\u7684\u65F6\u5019\uFF0C\u5728\u4E4B\u524D\u6211\u4EEC\u53EF\u80FD\u4F1A\u8003\u8651\u4F7F\u7528 [webpack](https://webpack.js.org/) \u8FD8\u662F [Rollup](https://rollupjs.org/guide/en/)\uFF0C\u7136\u800C\u73B0\u5728\u7684\u8BDD\uFF0C\u4E5F\u8BB8\u8FD8\u4F1A\u8003\u8651\u662F\u4F7F\u7528 [esbuild](https://esbuild.github.io/) \u8FD8\u662F [SWC](https://swc.rs/)\u3002
14
+
15
+ \u65E0\u8BBA\u9009\u62E9\u54EA\u4E2A\u6784\u5EFA\u5DE5\u5177\uFF0C\u8FD9\u5BF9\u4E8E\u6CA1\u6709\u719F\u7EC3\u638C\u63E1\u8FD9\u4E9B\u6784\u5EFA\u5DE5\u5177\u4F7F\u7528\u65B9\u5F0F\u7684\u5F00\u53D1\u8005\u6765\u8BF4\uFF0C\u662F\u9700\u8981\u4E00\u5B9A\u7684\u6210\u672C\u53BB\u5B66\u4E60\u7684\u3002\u5373\u4F7F\u60F3\u8981\u5FEB\u901F\u4F7F\u7528\uFF0C\u4E5F\u4F1A\u9700\u8981\u82B1\u8D39\u5927\u91CF\u7684\u65F6\u95F4\u548C\u7CBE\u529B\u3002
16
+
17
+ \u800C\u9664\u4E86\u6784\u5EFA\u8FD9\u4EF6\u4E8B\u60C5\u4EE5\u5916\uFF0C\u50CF\u4E3A\u9879\u76EE\u63D0\u4F9B\u8C03\u8BD5\u5DE5\u5177\u3001\u652F\u6301\u6D4B\u8BD5\u80FD\u529B\u3001\u589E\u52A0\u4EE3\u7801\u683C\u5F0F\u6821\u9A8C\u7B49\u7B49\uFF0C\u5BF9\u4E8E\u4E00\u4E2A\u65B0\u624B\u6765\u8BF4\u90FD\u6709\u53EF\u80FD\u9700\u8981\u82B1\u8D39\u5F88\u957F\u7684\u65F6\u95F4\u548C\u7CBE\u529B\u4E86\u89E3\u6216\u8005\u638C\u63E1\u5B83\u4EEC\uFF0C\u5E76\u4E14\u771F\u6B63\u7684\u670D\u52A1\u4E8E\u5F53\u524D\u7684\u9879\u76EE\u4E2D\u3002
18
+
19
+ \u800C\u4E3A\u4E86\u4FDD\u8BC1\u4EE3\u7801\u8D28\u91CF\u4EE5\u53CA\u9879\u76EE\u7684\u5B8C\u6574\u6027\uFF0C\u6211\u4EEC\u5F80\u5F80\u662F\u9700\u8981\u505A\u8FD9\u4E9B\u4E0E\u4EE3\u7801\u903B\u8F91\u5B9E\u73B0\u65E0\u5173\u7684\u4E8B\u60C5\u3002\u7136\u800C\u8FD9\u4E9B\u4E8B\u60C5\u5F88\u6709\u53EF\u80FD\u4F1A\u5F71\u54CD\u6574\u4F53\u7684\u9879\u76EE\u5F00\u53D1\u8FDB\u5EA6\uFF0C\u964D\u4F4E\u5F00\u53D1\u8005\u7684\u5F00\u53D1\u4F53\u9A8C\uFF0C\u4F1A\u8BA9\u5F00\u53D1\u8005\u611F\u89C9\u6A21\u5757\u9879\u76EE\u7684\u5F00\u53D1\u95E8\u69DB\u5F88\u9AD8\u3002
20
+
21
+ \u5982\u679C\u8BF4\u6BCF\u6B21\u5F00\u53D1\u4E00\u4E2A\u6A21\u5757\u7C7B\u578B\u7684\u9879\u76EE\u90FD\u9700\u8981\u7ECF\u5386\u4E00\u904D\u8FD9\u4E9B\u5DE5\u4F5C\u51C6\u5907\u7684\u8BDD\uFF0C\u90A3\u4E48\u57FA\u672C\u4E0A\u521A\u5F00\u59CB\u5F00\u53D1\u7684\u65F6\u95F4\u4F1A\u5927\u90E8\u5206\u82B1\u8D39\u5728\u8FD9\u4E9B\u4E0E\u4EE3\u7801\u5B9E\u73B0\u65E0\u5173\u7684\u4E8B\u60C5\u4E0A\u3002\u5982\u679C\u80FD\u591F\u63D0\u4F9B\u4E00\u4E2A\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848\uFF0C\u5B83\u80FD\u591F\u5E2E\u52A9\u5F00\u53D1\u8005\u89E3\u51B3\u9879\u76EE\u5DE5\u7A0B\u4E0A\u7684\u4E8B\u60C5\uFF0C\u8BA9\u5F00\u53D1\u8005\u53EF\u4EE5\u66F4\u4E13\u6CE8\u4E8E\u4EE3\u7801\u7684\u5B9E\u73B0\u4E0A\uFF0C\u90A3\u4E48\u8FD9\u5C06\u4F1A\u5927\u5927\u63D0\u5347\u6A21\u5757\u7C7B\u578B\u9879\u76EE\u7684\u5F00\u53D1\u4F53\u9A8C\u3002
22
+
23
+ ![\u6CA1\u6709\u4F7F\u7528\u5DE5\u7A0B\u65B9\u6848\u5BF9\u6BD4\u4F7F\u7528\u5DE5\u7A0B\u65B9\u6848](/why-module-solution.png)
24
+
25
+ Modern.js/EdenX \u4E3A\u4E86\u8BA9\u5F00\u53D1\u6A21\u5757\u7C7B\u578B\u7684\u9879\u76EE\u66F4\u7B80\u5355\uFF0C\u4E3A\u4E86\u89E3\u51B3\u4E0A\u8FF0\u63D0\u5230\u7684\u95EE\u9898\u63D0\u4F9B\u4E86\u6A21\u5757\u5DE5\u7A0B\u89E3\u51B3\u65B9\u6848\uFF0C\u5E76\u4E14\u4F7F\u7528 Module Tools \u63D0\u4F9B\u4E86\u4E3B\u8981\u7684\u529F\u80FD\u3002**Module-tools \u53EF\u4EE5\u7406\u89E3\u4E3A\u662F\u4E00\u4E2A\u4E13\u95E8\u7528\u4E8E\u6A21\u5757\u7C7B\u578B\u9879\u76EE\u5F00\u53D1\u7684\u5DE5\u5177**\u3002
26
+ `;export{p as content,h as default,c as frontmatter,a as lastUpdatedTime,i as title,d as toc};
@@ -0,0 +1,26 @@
1
+ import{jsx as o,jsxs as n,Fragment as r}from"react/jsx-runtime";const d=void 0,s=[],a="Why module project solution";function i(t){const e=Object.assign({h1:"h1",a:"a",p:"p",img:"img",strong:"strong"},t.components);return n(r,{children:[n(e.h1,{id:"why-module-project-solution",children:[o(e.a,{className:"header-anchor","aria-hidden":"true",href:"#why-module-project-solution",children:"#"}),"Why module project solution"]}),`
2
+ `,o(e.p,{children:"You've probably all experienced it: when developing a component library or tool library from scratch, we have to consider not only how to write the code logic of the project itself, but also how to build, debug, test, format the code, and other things that have nothing to do with the code logic."}),`
3
+ `,n(e.p,{children:["For example, when we consider which builder is used to build the code for a module project, we might previously consider ",o(e.a,{href:"https://webpack.js.org/",target:"_blank",rel:"nofollow",children:"webpack"})," or ",o(e.a,{href:"https://rollupjs.org/guide/en/",target:"_blank",rel:"nofollow",children:"Rollup"}),", but now we might also consider ",o(e.a,{href:"https://esbuild.github.io/",target:"_blank",rel:"nofollow",children:"esbuild"})," or ",o(e.a,{href:"https://swc.rs/",target:"_blank",rel:"nofollow",children:"SWC"}),"."]}),`
4
+ `,o(e.p,{children:"Regardless of which builder is chosen, this is going to be a costly learning curve for developers who are not skilled in the use of these build tools. Even if you want to use them quickly, it will take a lot of time and effort."}),`
5
+ `,o(e.p,{children:"In addition to the build, things like providing debugging tools for projects, supporting testing capabilities, adding code format validation, etc. can take a long time and effort for a novice to understand or master them and actually serve the current project."}),`
6
+ `,o(e.p,{children:"To ensure the quality of the code and the integrity of the project, we often need to do these things that are not related to the logical implementation of the code. However, these things are likely to affect the overall project development progress, reduce the developer's development experience, and make the developer feel that the development threshold of the module project is very high."}),`
7
+ `,o(e.p,{children:"If you have to go through all this work every time you develop a module type project, you will spend most of your development time in the beginning on these things that are not related to code implementation. If we could provide a module engineering solution that would help developers to solve the project engineering issues and allow them to focus more on code implementation, it would greatly improve the module type project development experience."}),`
8
+ `,o(e.p,{children:o(e.img,{src:"/why-module-solution.png",alt:"Not using engineering solution vs. using engineering solution"})}),`
9
+ `,n(e.p,{children:["Modern.js/EdenX, in order to make developing module type projects easier, provides a module engineering solution in order to solve the above mentioned problems and provides the main features using Module Tools. ",o(e.strong,{children:"Module-tools can be understood as a tool dedicated to the development of module type projects"}),"."]})]})}function h(t={}){const{wrapper:e}=t.components||{};return e?o(e,Object.assign({},t,{children:o(i,t)})):i(t)}const c="2022/11/29 14:53:49",u=`# Why module project solution
10
+
11
+ You've probably all experienced it: when developing a component library or tool library from scratch, we have to consider not only how to write the code logic of the project itself, but also how to build, debug, test, format the code, and other things that have nothing to do with the code logic.
12
+
13
+ For example, when we consider which builder is used to build the code for a module project, we might previously consider [webpack](https://webpack.js.org/) or [Rollup](https://rollupjs.org/guide/en/), but now we might also consider [esbuild](https://esbuild.github.io/) or [SWC](https://swc.rs/).
14
+
15
+ Regardless of which builder is chosen, this is going to be a costly learning curve for developers who are not skilled in the use of these build tools. Even if you want to use them quickly, it will take a lot of time and effort.
16
+
17
+ In addition to the build, things like providing debugging tools for projects, supporting testing capabilities, adding code format validation, etc. can take a long time and effort for a novice to understand or master them and actually serve the current project.
18
+
19
+ To ensure the quality of the code and the integrity of the project, we often need to do these things that are not related to the logical implementation of the code. However, these things are likely to affect the overall project development progress, reduce the developer's development experience, and make the developer feel that the development threshold of the module project is very high.
20
+
21
+ If you have to go through all this work every time you develop a module type project, you will spend most of your development time in the beginning on these things that are not related to code implementation. If we could provide a module engineering solution that would help developers to solve the project engineering issues and allow them to focus more on code implementation, it would greatly improve the module type project development experience.
22
+
23
+ ![Not using engineering solution vs. using engineering solution](/why-module-solution.png)
24
+
25
+ Modern.js/EdenX, in order to make developing module type projects easier, provides a module engineering solution in order to solve the above mentioned problems and provides the main features using Module Tools. **Module-tools can be understood as a tool dedicated to the development of module type projects**.
26
+ `;export{u as content,h as default,d as frontmatter,c as lastUpdatedTime,a as title,s as toc};
@@ -0,0 +1 @@
1
+ import{a as r,c as s}from"./chunk-K5FMOYDC.js";var o=r((t,e)=>{"use strict";e.exports=s()});export{o as a};