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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/.eslintrc.js +13 -0
  2. package/docs/en/api/config/_category_.json +4 -0
  3. package/docs/en/api/{build-config.md → config/build-config.md} +198 -105
  4. package/docs/en/api/{build-preset.md → config/build-preset.md} +65 -46
  5. package/docs/{zh/api → en/api/config}/design-system.md +130 -127
  6. package/docs/en/api/config/plugins.md +18 -0
  7. package/docs/en/api/{test.md → config/testing.md} +21 -12
  8. package/docs/en/api/index.md +3 -1
  9. package/docs/en/api/plugin-api/_category_.json +4 -0
  10. package/docs/en/api/plugin-api/plugin-hooks.md +501 -0
  11. package/docs/en/guide/advance/_category_.json +4 -0
  12. package/docs/en/guide/advance/asset.mdx +47 -30
  13. package/docs/en/guide/advance/build-umd.mdx +88 -80
  14. package/docs/en/guide/advance/copy.md +31 -28
  15. package/docs/en/guide/advance/external-dependency.mdx +27 -23
  16. package/docs/en/guide/advance/in-depth-about-build.md +56 -50
  17. package/docs/en/guide/advance/in-depth-about-dev-command.md +7 -4
  18. package/docs/en/guide/advance/theme-config.mdx +80 -0
  19. package/docs/en/guide/basic/_category_.json +4 -0
  20. package/docs/en/guide/basic/before-getting-started.md +28 -23
  21. package/docs/en/guide/basic/command-preview.md +18 -14
  22. package/docs/en/guide/basic/modify-output-product.md +27 -20
  23. package/docs/en/guide/basic/publish-your-project.md +21 -19
  24. package/docs/en/guide/basic/test-your-project.mdx +19 -16
  25. package/docs/en/guide/basic/use-micro-generator.md +10 -7
  26. package/docs/en/guide/basic/using-storybook.mdx +27 -26
  27. package/docs/en/guide/best-practices/_category_.json +4 -0
  28. package/docs/en/guide/best-practices/components.mdx +783 -0
  29. package/docs/en/guide/intro/_category_.json +4 -0
  30. package/docs/en/guide/intro/getting-started.md +9 -4
  31. package/docs/en/guide/intro/welcome.md +4 -0
  32. package/docs/en/guide/intro/why-module-engineering-solution.md +5 -1
  33. package/docs/en/index.md +3 -5
  34. package/docs/en/plugins/guide/_category_.json +4 -0
  35. package/docs/en/plugins/guide/getting-started.mdx +84 -0
  36. package/docs/en/plugins/guide/plugin-object.mdx +85 -0
  37. package/docs/en/plugins/guide/setup-function.mdx +117 -0
  38. package/docs/en/plugins/official-list/_category_.json +4 -0
  39. package/docs/en/plugins/official-list/overview.md +6 -0
  40. package/docs/zh/api/config/_category_.json +4 -0
  41. package/docs/zh/api/config/build-config.md +658 -0
  42. package/docs/zh/api/{build-preset.md → config/build-preset.md} +49 -36
  43. package/docs/zh/api/config/design-system.md +1166 -0
  44. package/docs/zh/api/config/plugins.md +18 -0
  45. package/docs/zh/api/{testing.md → config/testing.md} +18 -13
  46. package/docs/zh/api/index.md +4 -1
  47. package/docs/zh/api/plugin-api/_category_.json +4 -0
  48. package/docs/zh/api/plugin-api/plugin-hooks.md +500 -0
  49. package/docs/zh/guide/advance/_category_.json +4 -0
  50. package/docs/zh/guide/advance/asset.mdx +47 -30
  51. package/docs/zh/guide/advance/build-umd.mdx +88 -71
  52. package/docs/zh/guide/advance/copy.md +31 -28
  53. package/docs/zh/guide/advance/external-dependency.mdx +27 -23
  54. package/docs/zh/guide/advance/in-depth-about-build.md +55 -50
  55. package/docs/zh/guide/advance/in-depth-about-dev-command.md +7 -4
  56. package/docs/zh/guide/advance/theme-config.mdx +78 -0
  57. package/docs/zh/guide/basic/_category_.json +4 -0
  58. package/docs/zh/guide/basic/before-getting-started.md +27 -22
  59. package/docs/zh/guide/basic/command-preview.md +17 -13
  60. package/docs/zh/guide/basic/modify-output-product.md +28 -21
  61. package/docs/zh/guide/basic/publish-your-project.md +22 -17
  62. package/docs/zh/guide/basic/test-your-project.mdx +20 -16
  63. package/docs/zh/guide/basic/use-micro-generator.md +10 -7
  64. package/docs/zh/guide/basic/using-storybook.mdx +27 -24
  65. package/docs/zh/guide/best-practices/_category_.json +4 -0
  66. package/docs/zh/guide/best-practices/components.mdx +793 -0
  67. package/docs/zh/guide/intro/_category_.json +4 -0
  68. package/docs/zh/guide/intro/getting-started.md +10 -4
  69. package/docs/zh/guide/intro/welcome.md +4 -0
  70. package/docs/zh/guide/intro/why-module-engineering-solution.md +5 -1
  71. package/docs/zh/index.md +3 -2
  72. package/docs/zh/plugins/guide/_category_.json +4 -0
  73. package/docs/zh/plugins/guide/getting-started.mdx +84 -0
  74. package/docs/zh/plugins/guide/plugin-object.mdx +85 -0
  75. package/docs/zh/plugins/guide/setup-function.mdx +117 -0
  76. package/docs/zh/plugins/official-list/_category_.json +4 -0
  77. package/docs/zh/plugins/official-list/overview.md +5 -0
  78. package/modern.config.ts +118 -0
  79. package/package.json +8 -6
  80. package/{docs/.island/styles → theme}/index.css +0 -1
  81. package/theme/index.ts +4 -0
  82. package/tsconfig.json +7 -0
  83. package/docs/.island/config.ts +0 -245
  84. package/docs/.island/dist/404.html +0 -41
  85. package/docs/.island/dist/assets/before-getting-started.1b82b538.js +0 -87
  86. package/docs/.island/dist/assets/before-getting-started.582a31cc.js +0 -87
  87. package/docs/.island/dist/assets/build-config.72eb0918.js +0 -804
  88. package/docs/.island/dist/assets/build-config.d8bb1658.js +0 -809
  89. package/docs/.island/dist/assets/build-preset.96805d7d.js +0 -256
  90. package/docs/.island/dist/assets/build-preset.c20dcd40.js +0 -256
  91. package/docs/.island/dist/assets/build-your-ui.7f349247.js +0 -2
  92. package/docs/.island/dist/assets/build-your-ui.a8361604.js +0 -2
  93. package/docs/.island/dist/assets/command-preview.2d45fc82.js +0 -264
  94. package/docs/.island/dist/assets/command-preview.dc51b953.js +0 -264
  95. package/docs/.island/dist/assets/components.esm.03560353.js +0 -9
  96. package/docs/.island/dist/assets/design-system.86694ff5.js +0 -1254
  97. package/docs/.island/dist/assets/design-system.c4745cce.js +0 -639
  98. package/docs/.island/dist/assets/dev.1d326a37.js +0 -37
  99. package/docs/.island/dist/assets/dev.1fd06000.js +0 -37
  100. package/docs/.island/dist/assets/down.f35427d3.svg +0 -1
  101. package/docs/.island/dist/assets/extension.12299fd6.js +0 -2
  102. package/docs/.island/dist/assets/extension.96dc63a4.js +0 -2
  103. package/docs/.island/dist/assets/getting-started.40e9218d.js +0 -117
  104. package/docs/.island/dist/assets/getting-started.b1ed3f10.js +0 -114
  105. package/docs/.island/dist/assets/github.3bf8ccee.svg +0 -1
  106. package/docs/.island/dist/assets/index.2b2347ea.js +0 -33
  107. package/docs/.island/dist/assets/index.6cef6f5f.js +0 -4
  108. package/docs/.island/dist/assets/index.cb118238.js +0 -36
  109. package/docs/.island/dist/assets/index.ccb6ce27.js +0 -4
  110. package/docs/.island/dist/assets/island_inject.11a12ecc.js +0 -1
  111. package/docs/.island/dist/assets/island_inject.b13deaee.js +0 -1
  112. package/docs/.island/dist/assets/loading.8c9bb911.svg +0 -1
  113. package/docs/.island/dist/assets/modify-output-product.7f6bff35.js +0 -100
  114. package/docs/.island/dist/assets/modify-output-product.b91eff1f.js +0 -100
  115. package/docs/.island/dist/assets/moon.6b705924.svg +0 -3
  116. package/docs/.island/dist/assets/plugin.895932d8.js +0 -42
  117. package/docs/.island/dist/assets/plugin.d2fbc531.js +0 -42
  118. package/docs/.island/dist/assets/publish-your-project.21b8309f.js +0 -164
  119. package/docs/.island/dist/assets/publish-your-project.8d398b17.js +0 -166
  120. package/docs/.island/dist/assets/right.89674cd7.svg +0 -1
  121. package/docs/.island/dist/assets/search.0aea6901.svg +0 -1
  122. package/docs/.island/dist/assets/search.1c85d17c.js +0 -3
  123. package/docs/.island/dist/assets/search.484eca11.js +0 -222
  124. package/docs/.island/dist/assets/search.54fca8d0.js +0 -3
  125. package/docs/.island/dist/assets/style.09015a4b.css +0 -1
  126. package/docs/.island/dist/assets/style.2e5f7bc2.css +0 -1970
  127. package/docs/.island/dist/assets/sun.841dac10.svg +0 -11
  128. package/docs/.island/dist/assets/test-your-project.18bd4582.js +0 -190
  129. package/docs/.island/dist/assets/test-your-project.f53bebf7.js +0 -190
  130. package/docs/.island/dist/assets/test.0da1f99f.js +0 -67
  131. package/docs/.island/dist/assets/test.0e81f002.js +0 -66
  132. package/docs/.island/dist/assets/translator.b1077c44.svg +0 -1
  133. package/docs/.island/dist/assets/use-micro-generator.7d9e4016.js +0 -60
  134. package/docs/.island/dist/assets/use-micro-generator.db5520c1.js +0 -60
  135. package/docs/.island/dist/assets/using-storybook.57ea6b77.js +0 -260
  136. package/docs/.island/dist/assets/using-storybook.a2212f2e.js +0 -260
  137. package/docs/.island/dist/assets/welcome.0449a9c8.js +0 -13
  138. package/docs/.island/dist/assets/welcome.a8448931.js +0 -13
  139. package/docs/.island/dist/assets/why-module-engineering-solution.6ae8c0e3.js +0 -26
  140. package/docs/.island/dist/assets/why-module-engineering-solution.c9a45cbd.js +0 -26
  141. package/docs/.island/dist/chunk-COLCRJ2V.js +0 -1
  142. package/docs/.island/dist/chunk-K5FMOYDC.js +0 -10
  143. package/docs/.island/dist/chunk-WE42KMYS.js +0 -26
  144. package/docs/.island/dist/client-entry.js +0 -3
  145. package/docs/.island/dist/en/api/build-config.html +0 -344
  146. package/docs/.island/dist/en/api/build-preset.html +0 -82
  147. package/docs/.island/dist/en/api/design-system.html +0 -155
  148. package/docs/.island/dist/en/api/dev.html +0 -45
  149. package/docs/.island/dist/en/api/index.html +0 -41
  150. package/docs/.island/dist/en/api/plugin.html +0 -48
  151. package/docs/.island/dist/en/api/test.html +0 -58
  152. package/docs/.island/dist/en/guide/before-getting-started.html +0 -127
  153. package/docs/.island/dist/en/guide/build-your-ui.html +0 -41
  154. package/docs/.island/dist/en/guide/command-preview.html +0 -100
  155. package/docs/.island/dist/en/guide/extension.html +0 -41
  156. package/docs/.island/dist/en/guide/getting-started.html +0 -76
  157. package/docs/.island/dist/en/guide/modify-output-product.html +0 -140
  158. package/docs/.island/dist/en/guide/publish-your-project.html +0 -91
  159. package/docs/.island/dist/en/guide/test-your-project.html +0 -72
  160. package/docs/.island/dist/en/guide/use-micro-generator.html +0 -65
  161. package/docs/.island/dist/en/guide/using-storybook.html +0 -113
  162. package/docs/.island/dist/en/guide/welcome.html +0 -53
  163. package/docs/.island/dist/en/guide/why-module-engineering-solution.html +0 -49
  164. package/docs/.island/dist/en/index.html +0 -42
  165. package/docs/.island/dist/react-dom.js +0 -1
  166. package/docs/.island/dist/react-dom_client.js +0 -1
  167. package/docs/.island/dist/react.js +0 -1
  168. package/docs/.island/dist/react_jsx-runtime.js +0 -10
  169. package/docs/.island/dist/ssr-manifest.json +0 -57
  170. package/docs/.island/dist/test-result.png +0 -0
  171. package/docs/.island/dist/why-module-solution.png +0 -0
  172. package/docs/.island/dist/zh/api/build-config.html +0 -347
  173. package/docs/.island/dist/zh/api/build-preset.html +0 -82
  174. package/docs/.island/dist/zh/api/design-system.html +0 -149
  175. package/docs/.island/dist/zh/api/dev.html +0 -46
  176. package/docs/.island/dist/zh/api/index.html +0 -41
  177. package/docs/.island/dist/zh/api/plugin.html +0 -48
  178. package/docs/.island/dist/zh/api/test.html +0 -59
  179. package/docs/.island/dist/zh/guide/before-getting-started.html +0 -127
  180. package/docs/.island/dist/zh/guide/build-your-ui.html +0 -41
  181. package/docs/.island/dist/zh/guide/command-preview.html +0 -100
  182. package/docs/.island/dist/zh/guide/extension.html +0 -41
  183. package/docs/.island/dist/zh/guide/getting-started.html +0 -79
  184. package/docs/.island/dist/zh/guide/modify-output-product.html +0 -140
  185. package/docs/.island/dist/zh/guide/publish-your-project.html +0 -92
  186. package/docs/.island/dist/zh/guide/test-your-project.html +0 -72
  187. package/docs/.island/dist/zh/guide/use-micro-generator.html +0 -65
  188. package/docs/.island/dist/zh/guide/using-storybook.html +0 -114
  189. package/docs/.island/dist/zh/guide/welcome.html +0 -53
  190. package/docs/.island/dist/zh/guide/why-module-engineering-solution.html +0 -49
  191. package/docs/.island/dist/zh/index.html +0 -42
  192. package/docs/.island/index.html +0 -39
  193. package/docs/en/api/design-system.md +0 -524
  194. package/docs/en/api/dev.md +0 -32
  195. package/docs/en/api/plugin.md +0 -34
  196. package/docs/zh/api/build-config.md +0 -570
  197. package/docs/zh/api/dev.md +0 -33
  198. package/docs/zh/api/plugins.md +0 -108
@@ -1,11 +1,15 @@
1
+ ---
2
+ sidebar_position: 4
3
+ ---
4
+
1
5
  # 如何处理第三方依赖
2
6
 
3
7
  一般来说,项目所需要的第三方依赖可以通过包管理器的 `install` 命令安装,在安装第三方依赖成功后,这些第三方依赖一般会出现在项目 `package.json` 的 `dependencies` 和 `devDependencies` 下。
4
8
 
5
- ``` json pacakge.json
9
+ ```json pacakge.json
6
10
  {
7
- "dependencies": {},
8
- "devDependencies": {}
11
+ "dependencies": {},
12
+ "devDependencies": {}
9
13
  }
10
14
  ```
11
15
 
@@ -21,13 +25,13 @@
21
25
 
22
26
  ```json ./v1/package.json
23
27
  {
24
- "dependencies": {
25
- "react": "^17"
26
- },
27
- // or
28
- "peerDependencies": {
29
- "react": "^17"
30
- }
28
+ "dependencies": {
29
+ "react": "^17"
30
+ },
31
+ // or
32
+ "peerDependencies": {
33
+ "react": "^17"
34
+ }
31
35
  }
32
36
  ```
33
37
 
@@ -42,7 +46,7 @@
42
46
  },
43
47
  // or
44
48
  "peerDependencies": {
45
- "react": "^17"
49
+ "react": "^17"
46
50
  }
47
51
  }
48
52
  ```
@@ -51,8 +55,8 @@
51
55
 
52
56
  当源码中使用了 `react` 依赖。
53
57
 
54
- ``` tsx src/index.ts
55
- import React from "react";
58
+ ```tsx src/index.ts
59
+ import React from 'react';
56
60
  console.info(React);
57
61
  ```
58
62
 
@@ -60,8 +64,8 @@ console.info(React);
60
64
 
61
65
  此时产物中不会将 `react` 代码打包到产物中。
62
66
 
63
- ``` js dist/index.js
64
- import React from "react";
67
+ ```js dist/index.js
68
+ import React from 'react';
65
69
  console.info(React);
66
70
  ```
67
71
 
@@ -77,45 +81,45 @@ console.info(React);
77
81
 
78
82
  在构建配置中提供了以下 API 来处理第三方依赖:
79
83
 
80
- * [`buildConfig.autoExternal`](/zh/api/build-config#autoexternal)
81
- * [`buildConfig.externals`](/zh/api/build-config#externals)
84
+ - [`buildConfig.autoExternal`](/zh/api/build-config#autoexternal)
85
+ - [`buildConfig.externals`](/zh/api/build-config#externals)
82
86
 
83
87
  ### 关闭默认行为
84
88
 
85
89
  当我们希望关闭对于第三方依赖的默认处理行为时候,可以通过以下方式来实现:
86
90
 
87
- ``` ts
91
+ ```ts
88
92
  export default defineConfig({
89
93
  buildConfig: {
90
94
  autoExternal: false,
91
- }
95
+ },
92
96
  });
93
97
  ```
94
98
 
95
99
  这样对于 `"dependencies"` 和 `"peerDependencies"` 下面的依赖都会进行打包处理。如果只想要关闭其中某个下面的依赖处理,则可以使用
96
100
  `buildConfig.autoExternal` 的对象形式:
97
101
 
98
- ``` ts
102
+ ```ts
99
103
  export default defineConfig({
100
104
  buildConfig: {
101
105
  autoExternal: {
102
106
  dependencies: false,
103
107
  peerDependencies: false,
104
108
  },
105
- }
109
+ },
106
110
  });
107
111
  ```
108
112
 
109
113
  ### 排除指定第三方依赖
110
114
 
111
- 而除了 `buildConfig.autoExternal` API以外,`buildConfig.externals` 也可以控制哪些第三方依赖要进行处理。我们可以组合这两个
115
+ 而除了 `buildConfig.autoExternal` API 以外,`buildConfig.externals` 也可以控制哪些第三方依赖要进行处理。我们可以组合这两个
112
116
  API 对项目的依赖进行更细微的处理。
113
117
 
114
118
  例如当我们需要仅对某些依赖不进行打包处理的时候,可以按照如下方式进行配置:
115
119
 
116
120
  > 一般这种情况,可能是某些依赖不适合进行打包处理。如果遇到这种情况,则可以按照下面的方式进行处理。
117
121
 
118
- ``` ts
122
+ ```ts
119
123
  epxort default defineConfig({
120
124
  buildConfig: {
121
125
  autoExternal: false,
@@ -1,3 +1,7 @@
1
+ ---
2
+ sidebar_position: 1
3
+ ---
4
+
1
5
  # 深入理解构建
2
6
 
3
7
  在【基础使用】的部分,我们已经知道可以通过 `buildConfig` 配置对项目的输出产物进行修改。`buildConfig` 不仅描述了产物的一些特性,同时还为构建产物提供了一些功能。
@@ -5,8 +9,8 @@
5
9
  :::tip{title=注意}
6
10
  如果你还不清楚 `buildConfig` 是什么,建议花一些时间通过下面的链接了解一下:
7
11
 
8
- * 【[修改输出产物](/zh/guide/modify-output-product)】
9
- :::
12
+ - 【[修改输出产物](/zh/guide/modify-output-product)】
13
+ :::
10
14
 
11
15
  而在本章里我们将要深入理解某些构建配置的使用以及了解执行 `modern build` 命令的时候发生了什么。
12
16
 
@@ -26,9 +30,9 @@
26
30
 
27
31
  [`buildConfig.input`](/zh/api/build-config#input) 用于指定读取源码的文件路径或者目录路径,其默认值在 Bundle 和 Bundleless 构建过程中有所不同:
28
32
 
29
- * 当 `buildType: 'bundle'` 的时候,`input` 默认值为 `['src/index.ts']`
30
- * 当 `buildType: 'bundleless'` 的时候,`input` 默认值为 `['src']`
31
- > 实际上,在 `buildType: 'bundle'` 的时候,构建工具会检测是否存在符合 `src/index.(j|t)sx?` 这个名称规则的文件,并将其作为入口文件。
33
+ - 当 `buildType: 'bundle'` 的时候,`input` 默认值为 `['src/index.ts']`
34
+ - 当 `buildType: 'bundleless'` 的时候,`input` 默认值为 `['src']`
35
+ > 实际上,在 `buildType: 'bundle'` 的时候,构建工具会检测是否存在符合 `src/index.(j|t)sx?` 这个名称规则的文件,并将其作为入口文件。
32
36
 
33
37
  :::warn{title=注意}
34
38
  建议不要在 Bundleless 构建过程中指定多个源码文件目录,可能出现不符合预期的结果。目前多个源码目录的 Bundleless 构建还处于不稳定阶段。
@@ -40,16 +44,16 @@
40
44
 
41
45
  在 Bundle 构建过程中,除了将 `input` 设置为一个数组,也可以将它设置为一个对象。**通过使用对象的形式,我们可以修改构建产物输出的文件名称**。那么对于下面的例子,`./src/index.ts` 对应的构建产物文件路径为 `./dist/main.js`。
42
46
 
43
- ``` tsx modern.config.ts
47
+ ```tsx modern.config.ts
44
48
  import { defineConfig } from '@modern-js/module-tools';
45
49
 
46
50
  export default defineConfig({
47
- buildConfig: {
48
- input: {
49
- main: ['./src/index.ts'],
50
- },
51
- outdir: './dist',
51
+ buildConfig: {
52
+ input: {
53
+ main: ['./src/index.ts'],
52
54
  },
55
+ outDir: './dist',
56
+ },
53
57
  });
54
58
  ```
55
59
 
@@ -59,13 +63,13 @@ export default defineConfig({
59
63
 
60
64
  [`sourceDir`](/zh/api/build-config#sourcedir) 用于指定源码目录,它主要与以下两个内容有关系:
61
65
 
62
- * 类型文件生成
63
- * 指定构建过程中的 [`outbase`](https://esbuild.github.io/api/#outbase)
66
+ - 类型文件生成
67
+ - 指定构建过程中的 [`outbase`](https://esbuild.github.io/api/#outbase)
64
68
 
65
69
  一般来说:
66
70
 
67
- * **在 Bundleless 构建过程中,`sourceDir` 与 `input` 的值要保持一致,它们的默认值都是 `src`**。
68
- * 在 Bundle 构建过程中,很少需要使用 `sourceDir`。
71
+ - **在 Bundleless 构建过程中,`sourceDir` 与 `input` 的值要保持一致,它们的默认值都是 `src`**。
72
+ - 在 Bundle 构建过程中,很少需要使用 `sourceDir`。
69
73
 
70
74
  ### 类型文件
71
75
 
@@ -80,8 +84,8 @@ import { defineConfig } from '@modern-js/module-tools';
80
84
 
81
85
  export default defineConfig({
82
86
  buildConfig: {
83
- dts: false
84
- }
87
+ dts: false,
88
+ },
85
89
  });
86
90
  ```
87
91
 
@@ -95,8 +99,8 @@ export default defineConfig({
95
99
 
96
100
  **模块工程解决方案同时还支持对类型文件进行打包**,不过使用该功能的时候需要注意:
97
101
 
98
- * 一些第三方依赖存在错误的语法会导致打包过程失败。因此对于这种情况,需要手动通过 [`buildConfig.externals`](/zh/api/build-config#externals) 将这类第三方包排除。
99
- * 对于第三方依赖的类型文件指向的是一个 `.ts` 文件的情况,目前无法处理。比如第三方依赖的 `package.json` 中存在这样的内容: `{"types": "./src/index.ts"}`。
102
+ - 一些第三方依赖存在错误的语法会导致打包过程失败。因此对于这种情况,需要手动通过 [`buildConfig.externals`](/zh/api/build-config#externals) 将这类第三方包排除。
103
+ - 对于第三方依赖的类型文件指向的是一个 `.ts` 文件的情况,目前无法处理。比如第三方依赖的 `package.json` 中存在这样的内容: `{"types": "./src/index.ts"}`。
100
104
 
101
105
  #### 别名转换
102
106
 
@@ -108,18 +112,18 @@ import utils from '@common/utils';
108
112
 
109
113
  正常来说,使用 `tsc` 生成的产物类型文件也会包含这些别名。不过 Module Tools 会对 `tsc` 生成的类型文件里的别名进行转换处理:
110
114
 
111
- * 对于类似 `import '@common/utils'` 或者 `import utils from '@common/utils'` 这样形式的代码可以进行别名转换。
112
- * 对于类似 `export { utils } from '@common/utils'` 这样形式的代码可以进行别名转换。
115
+ - 对于类似 `import '@common/utils'` 或者 `import utils from '@common/utils'` 这样形式的代码可以进行别名转换。
116
+ - 对于类似 `export { utils } from '@common/utils'` 这样形式的代码可以进行别名转换。
113
117
 
114
118
  然而也存在一些情况,目前还无法处理:
115
119
 
116
- * 对于类似 `Promise<import('@common/utils')>` 这样形式的输出类型目前无法进行转换。
120
+ - 对于类似 `Promise<import('@common/utils')>` 这样形式的输出类型目前无法进行转换。
117
121
 
118
122
  #### 一些 `dts` 的使用示例
119
123
 
120
124
  一般使用方式:
121
125
 
122
- ``` ts
126
+ ```ts
123
127
  import { defineConfig } from '@modern-js/module-tools';
124
128
 
125
129
  export default defineConfig({
@@ -130,14 +134,14 @@ export default defineConfig({
130
134
  tsconfigPath: './other-tsconfig.json',
131
135
  distPath: './types',
132
136
  },
133
- outdir: './dist',
134
- }
137
+ outDir: './dist',
138
+ },
135
139
  });
136
140
  ```
137
141
 
138
142
  使用 `dts.only` 的情况:
139
143
 
140
- ``` ts
144
+ ```ts
141
145
  import { defineConfig } from '@modern-js/module-tools';
142
146
 
143
147
  export default defineConfig({
@@ -146,16 +150,16 @@ export default defineConfig({
146
150
  {
147
151
  buildType: 'bundle',
148
152
  dts: false,
149
- outdir: './dist',
153
+ outDir: './dist',
150
154
  },
151
155
  {
152
156
  buildType: 'bundleless',
153
157
  dts: {
154
158
  only: true,
155
159
  },
156
- outdir: './dist/types',
157
- }
158
- ]
160
+ outDir: './dist/types',
161
+ },
162
+ ],
159
163
  });
160
164
  ```
161
165
 
@@ -165,14 +169,14 @@ export default defineConfig({
165
169
 
166
170
  #### 环境变量替换
167
171
 
168
- ``` ts
172
+ ```ts
169
173
  import { defineConfig } from '@modern-js/module-tools';
170
174
  export default defineConfig({
171
175
  buildConfig: {
172
176
  define: {
173
- 'process.env.VERSION': JSON.stringify(process.env.VERSION || '0.0.0')
174
- }
175
- }
177
+ 'process.env.VERSION': JSON.stringify(process.env.VERSION || '0.0.0'),
178
+ },
179
+ },
176
180
  });
177
181
  ```
178
182
 
@@ -192,14 +196,14 @@ console.log('1.0.0');
192
196
 
193
197
  #### 全局变量替换
194
198
 
195
- ``` ts
199
+ ```ts
196
200
  import { defineConfig } from '@modern-js/module-tools';
197
201
  export default defineConfig({
198
202
  buildConfig: {
199
203
  define: {
200
- 'VERSION': JSON.stringify(require('./package.json').version || '0.0.0')
201
- }
202
- }
204
+ VERSION: JSON.stringify(require('./package.json').version || '0.0.0'),
205
+ },
206
+ },
203
207
  });
204
208
  ```
205
209
 
@@ -218,28 +222,29 @@ console.log('1.0.0');
218
222
  ```
219
223
 
220
224
  不过要注意:如果项目是一个 TypeScript 项目,那么你可能需要在项目源代码目录下的 `.d.ts` 文件里增加以下内容:
225
+
221
226
  > 如果不存在 `d.ts` 文件,则可以手动创建。
222
227
 
223
- ``` ts env.d.ts
228
+ ```ts env.d.ts
224
229
  declare const YOUR_ADD_GLOBAL_VAR;
225
230
  ```
226
231
 
227
-
228
232
  ## 构建过程
229
233
 
230
234
  当执行 `modern build` 命令的时候,会发生
231
235
 
232
- * 根据 `buildConfig.outdir` 清理产物目录。
233
- * 编译 `js/ts` 源代码生成 Bundle/Bundleless 的 JS 构建产物。
234
- * 使用 `tsc` 生成 Bundle/Bundleless 的类型文件。
235
- * 处理 Copy 任务。
236
+ - 根据 `buildConfig.outDir` 清理产物目录。
237
+ - 编译 `js/ts` 源代码生成 Bundle/Bundleless 的 JS 构建产物。
238
+ - 使用 `tsc` 生成 Bundle/Bundleless 的类型文件。
239
+ - 处理 Copy 任务。
236
240
 
237
241
  ## 构建报错
238
242
 
239
243
  当发生构建报错的时候,基于以上了解到的信息,可以很容易的明白在终端出现的报错内容:
240
244
 
241
245
  **js 或者 ts 构建的报错:**
242
- ``` bash
246
+
247
+ ```bash
243
248
  error ModuleBuildError:
244
249
 
245
250
  ╭───────────────────────╮
@@ -253,7 +258,7 @@ Detailed Information:
253
258
 
254
259
  **类型文件生成过程的报错:**
255
260
 
256
- ``` bash
261
+ ```bash
257
262
  error ModuleBuildError:
258
263
 
259
264
  bundle DTS failed:
@@ -261,7 +266,7 @@ bundle DTS failed:
261
266
 
262
267
  对于 `js/ts` 构建错误,我们可以从报错信息中知道:
263
268
 
264
- * 通过 `'bundle failed:'` 来判断报错的是 Bundle 构建还是 Bundleless 构建?
265
- * 构建过程的 `format` 是什么?
266
- * 构建过程的 `target` 是什么?
267
- * 具体的报错信息。
269
+ - 通过 `'bundle failed:'` 来判断报错的是 Bundle 构建还是 Bundleless 构建?
270
+ - 构建过程的 `format` 是什么?
271
+ - 构建过程的 `target` 是什么?
272
+ - 具体的报错信息。
@@ -1,12 +1,16 @@
1
- # 深入理解构建
1
+ ---
2
+ sidebar_position: 2
3
+ ---
4
+
5
+ # 深入理解 dev 命令
2
6
 
3
7
  在【基础使用】的部分,我们已经知道可以通过 `buildConfig` 配置对项目的输出产物进行修改。`buildConfig` 不仅描述了产物的一些特性,同时还为构建产物提供了一些功能。
4
8
 
5
9
  :::tip{title=注意}
6
10
  如果你还不清楚 `buildConfig` 是什么,建议花一些时间通过下面的链接了解一下:
7
11
 
8
- * 【[修改输出产物](/zh/guide/modify-output-product)】
9
- :::
12
+ - 【[修改输出产物](/zh/guide/modify-output-product)】
13
+ :::
10
14
 
11
15
  而在本章里我们将要深入理解某些构建配置的使用以及了解执行 `modern build` 命令的时候发生了什么。
12
16
 
@@ -23,4 +27,3 @@
23
27
  ### input 与 sourceDir 的关系
24
28
 
25
29
  ## 构建过程
26
-
@@ -0,0 +1,78 @@
1
+ ---
2
+ sidebar_position: 6
3
+ ---
4
+
5
+ # 主题配置
6
+
7
+ 模块工程通过 [`designSystem`](/zh/api/design-system) API,提供了配置主题的能力。
8
+
9
+ ## 动机和原理
10
+
11
+ 主题配置有些类似组件库中的定制主题功能,主要用于样式开发中使用。我们可以通过 `designSystem` 配置在不同的样式开发环境下使用由它生成的 `designToken`。
12
+
13
+ 所谓 `designToken` 在不同的样式开发环境下对应不同的东西:
14
+
15
+ - tailwindcss: 以 `designSystem` 作为 tailwindcss 的 `theme` 配置。因此可以使用:
16
+ - tailwindcss 支持的 HTML 类名。
17
+ - 在 css/less/sass 下通过 `@apply` 自定义指令使用与 tailwindcss 支持的 HTML 类名同名的字符串。
18
+ - css/less/scss: 通过 `designSystem` 生成全局的样式变量。
19
+
20
+ `designSystem` API 的数据结构借鉴了 `tailwindcss` 配置对象中的 [theme API](https://tailwindcss.com/docs/theme),因此存在默认的一套 `designToken`。关于默认值,可以查看 [`designSystem` API](/zh/api/design-system)。
21
+
22
+ :::info
23
+ 目前暂时还未支持 css/less/sass 全局变量。
24
+ :::
25
+
26
+ ## 使用示例
27
+
28
+ ### tailwindcss
29
+
30
+ 在使用 tailwindcss 的时候,可以通过 `designSystem` 来设置它的 [`theme`](https://v2.tailwindcss.com/docs/theme#extending-the-default-theme) 配置。
31
+
32
+ 例如在下面的配置中扩展了原有的颜色配置:
33
+
34
+ ```ts ./modern.config.ts
35
+ export default {
36
+ designSystem: {
37
+ extend: {
38
+ colors: {
39
+ primary: '#1677ff',
40
+ },
41
+ },
42
+ },
43
+ };
44
+ ```
45
+
46
+ 我们可以在代码中有两种使用 tailwindcss 的方式。
47
+
48
+ #### HTML 类名。
49
+
50
+ ```tsx ./src/index.tsx
51
+ import 'tailwindcss/utilities.css';
52
+
53
+ export default () => {
54
+ return <div className="bg-primary"></div>;
55
+ };
56
+ ```
57
+
58
+ #### `@apply` 指令
59
+
60
+ 关于 [`@apply`](https://tailwindcss.com/docs/functions-and-directives#apply)。
61
+
62
+ <CH.Code>
63
+
64
+ ```tsx ./src/index.tsx
65
+ import './index.css';
66
+
67
+ export default () => {
68
+ return <div className="btn-primary"></div>;
69
+ };
70
+ ```
71
+
72
+ ```css ./src/index.css
73
+ .btn-primary {
74
+ @apply bg-primary;
75
+ }
76
+ ```
77
+
78
+ </CH.Code>
@@ -0,0 +1,4 @@
1
+ {
2
+ "label": "基础使用",
3
+ "sidebar_position": 2
4
+ }
@@ -1,8 +1,13 @@
1
+ ---
2
+ sidebar_position: 1
3
+ ---
4
+
1
5
  # 开始之前
2
6
 
3
7
  ## 环境准备
4
8
 
5
9
  为了使用 Modern.js 模块工程解决方案,首先需要 [NodeJS](https://nodejs.org/zh/),我们推荐最新的[长期维护版本](https://github.com/nodejs/Release),并确保 Node 版本大于等于 **14.17.6**。因为非稳定的 NodeJS 时常有一些 Bug,你可以使用 [nvm-windows](https://github.com/coreybutler/nvm-windows) 和 [nvm](https://github.com/nvm-sh/nvm)(Mac/linux)安装,这样你就可以方便地切换到不同的 NodeJS 版本,这些版本可能会用于不同的项目。
10
+
6
11
  ## 初识 npm
7
12
 
8
13
  当 NodeJS 被安装后,你不仅可以在命令行中访问 `node` 可执行程序,同时你也可以执行 `npm` 命令。
@@ -15,7 +20,7 @@ npm 是 NodeJS 的标准软件包管理器。它一开始的用途是用于下
15
20
 
16
21
  那么什么是 npm 包类型的项目呢?当我们在一个空的项目目录下执行 `npm init` 命令的时候,它会在当前目录下面创建一个文件名为 `package.json` 的 JSON 文件。在创建过程中,我们需要填写包括但不限于 npm 包的名称、版本号、描述等等内容,这些填写的内容都会在生成的 `package.json` 文件中找到:
17
22
 
18
- ``` json
23
+ ```json
19
24
  {
20
25
  "name": "npm-demo",
21
26
  "version": "1.0.0",
@@ -41,27 +46,27 @@ npm Registry 是一个 [npm 包存储的地方](https://docs.npmjs.com/about-the
41
46
 
42
47
  - `"dependencies"`:一种是你的应用程序在生产环境中需要的软件包。
43
48
  - `"devDependencies"`:另一种是仅在本地开发和测试中需要的软件包。
44
- > 软件包可以理解为是第三方的 npm 包。
49
+ > 软件包可以理解为是第三方的 npm 包。
45
50
 
46
51
  你可以通过执行 `npm install npm-package-name` 或者 `npm add npm-package-name` 的方式来安装在**生产环境中需要的软件包**,或者也可以在 `package.json` 文件中手动的将需要安装的包和对应的[语义化版本](https://docs.npmjs.com/about-semantic-versioning)写在 `"dependencies"` 里,并执行 `npm install` 命令:
47
52
 
48
- ``` json
53
+ ```json
49
54
  {
50
- "name": "your-npm-project",
51
- "dependencies": {
52
- "npm-package-name": "0.1.0"
53
- },
55
+ "name": "your-npm-project",
56
+ "dependencies": {
57
+ "npm-package-name": "0.1.0"
58
+ }
54
59
  }
55
60
  ```
56
61
 
57
62
  同理,你也可以执行 `npm install npm-package-name --save-dev` 或 `npm add npm-package-name --save-dev` 的方式来安装**仅在本地开发和测试中需要的软件包**,或者也可以在 `package.json` 文件中手动的将需要安装的包和对应的[语义化版本](https://docs.npmjs.com/about-semantic-versioning)写在 `"devDependencies"` 里,并执行 `npm install` 命令:
58
63
 
59
- ``` json
64
+ ```json
60
65
  {
61
- "name": "your-npm-project",
62
- "devDependencies": {
63
- "npm-package-name": "0.1.0"
64
- },
66
+ "name": "your-npm-project",
67
+ "devDependencies": {
68
+ "npm-package-name": "0.1.0"
69
+ }
65
70
  }
66
71
  ```
67
72
 
@@ -92,13 +97,13 @@ npm Registry 是一个 [npm 包存储的地方](https://docs.npmjs.com/about-the
92
97
 
93
98
  名称匹配的[前置命令和后置命令](https://docs.npmjs.com/cli/v9/using-npm/scripts#pre--post-scripts)也会被运行(例如 `premyscript`、`myscript`、`postmyscript`)。
94
99
 
95
- ``` json
100
+ ```json
96
101
  {
97
- "scripts": {
98
- "premyscript": "",
99
- "myscript": "",
100
- "postmyscript": "",
101
- }
102
+ "scripts": {
103
+ "premyscript": "",
104
+ "myscript": "",
105
+ "postmyscript": ""
106
+ }
102
107
  }
103
108
  ```
104
109
 
@@ -160,14 +165,14 @@ npm install -g pnpm
160
165
 
161
166
  初始化的配置文件的内容如下:
162
167
 
163
- ``` typescript
168
+ ```typescript
164
169
  // modern.config.ts
165
170
  import { defineConfig } from '@modern-js/module-tools';
166
171
 
167
172
  export default defineConfig({});
168
173
  ```
169
174
 
170
- ``` js
175
+ ```js
171
176
  // modern.config.js
172
177
  const { defineConfig } = require('@modern-js/module-tools');
173
178
 
@@ -176,12 +181,12 @@ module.exports = defineConfig({});
176
181
 
177
182
  **我们推荐使用 `defineConfig` 函数**,不过并不强制使用它。因此你也可以在配置文件中直接返回一个对象:
178
183
 
179
- ``` typescript
184
+ ```typescript
180
185
  // modern.config.ts
181
186
  export default {};
182
187
  ```
183
188
 
184
- ``` js
189
+ ```js
185
190
  // modern.config.js
186
191
  module.exports = {};
187
192
  ```