@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.
- package/.eslintrc.js +13 -0
- package/docs/en/api/config/_category_.json +4 -0
- package/docs/en/api/{build-config.md → config/build-config.md} +198 -105
- package/docs/en/api/{build-preset.md → config/build-preset.md} +65 -46
- package/docs/{zh/api → en/api/config}/design-system.md +130 -127
- package/docs/en/api/config/plugins.md +18 -0
- package/docs/en/api/{test.md → config/testing.md} +21 -12
- package/docs/en/api/index.md +3 -1
- package/docs/en/api/plugin-api/_category_.json +4 -0
- package/docs/en/api/plugin-api/plugin-hooks.md +501 -0
- package/docs/en/guide/advance/_category_.json +4 -0
- package/docs/en/guide/advance/asset.mdx +47 -30
- package/docs/en/guide/advance/build-umd.mdx +88 -80
- package/docs/en/guide/advance/copy.md +31 -28
- package/docs/en/guide/advance/external-dependency.mdx +27 -23
- package/docs/en/guide/advance/in-depth-about-build.md +56 -50
- package/docs/en/guide/advance/in-depth-about-dev-command.md +7 -4
- package/docs/en/guide/advance/theme-config.mdx +80 -0
- package/docs/en/guide/basic/_category_.json +4 -0
- package/docs/en/guide/basic/before-getting-started.md +28 -23
- package/docs/en/guide/basic/command-preview.md +18 -14
- package/docs/en/guide/basic/modify-output-product.md +27 -20
- package/docs/en/guide/basic/publish-your-project.md +21 -19
- package/docs/en/guide/basic/test-your-project.mdx +19 -16
- package/docs/en/guide/basic/use-micro-generator.md +10 -7
- package/docs/en/guide/basic/using-storybook.mdx +27 -26
- package/docs/en/guide/best-practices/_category_.json +4 -0
- package/docs/en/guide/best-practices/components.mdx +783 -0
- package/docs/en/guide/intro/_category_.json +4 -0
- package/docs/en/guide/intro/getting-started.md +9 -4
- package/docs/en/guide/intro/welcome.md +4 -0
- package/docs/en/guide/intro/why-module-engineering-solution.md +5 -1
- package/docs/en/index.md +3 -5
- package/docs/en/plugins/guide/_category_.json +4 -0
- package/docs/en/plugins/guide/getting-started.mdx +84 -0
- package/docs/en/plugins/guide/plugin-object.mdx +85 -0
- package/docs/en/plugins/guide/setup-function.mdx +117 -0
- package/docs/en/plugins/official-list/_category_.json +4 -0
- package/docs/en/plugins/official-list/overview.md +6 -0
- package/docs/zh/api/config/_category_.json +4 -0
- package/docs/zh/api/config/build-config.md +658 -0
- package/docs/zh/api/{build-preset.md → config/build-preset.md} +49 -36
- package/docs/zh/api/config/design-system.md +1166 -0
- package/docs/zh/api/config/plugins.md +18 -0
- package/docs/zh/api/{testing.md → config/testing.md} +18 -13
- package/docs/zh/api/index.md +4 -1
- package/docs/zh/api/plugin-api/_category_.json +4 -0
- package/docs/zh/api/plugin-api/plugin-hooks.md +500 -0
- package/docs/zh/guide/advance/_category_.json +4 -0
- package/docs/zh/guide/advance/asset.mdx +47 -30
- package/docs/zh/guide/advance/build-umd.mdx +88 -71
- package/docs/zh/guide/advance/copy.md +31 -28
- package/docs/zh/guide/advance/external-dependency.mdx +27 -23
- package/docs/zh/guide/advance/in-depth-about-build.md +55 -50
- package/docs/zh/guide/advance/in-depth-about-dev-command.md +7 -4
- package/docs/zh/guide/advance/theme-config.mdx +78 -0
- package/docs/zh/guide/basic/_category_.json +4 -0
- package/docs/zh/guide/basic/before-getting-started.md +27 -22
- package/docs/zh/guide/basic/command-preview.md +17 -13
- package/docs/zh/guide/basic/modify-output-product.md +28 -21
- package/docs/zh/guide/basic/publish-your-project.md +22 -17
- package/docs/zh/guide/basic/test-your-project.mdx +20 -16
- package/docs/zh/guide/basic/use-micro-generator.md +10 -7
- package/docs/zh/guide/basic/using-storybook.mdx +27 -24
- package/docs/zh/guide/best-practices/_category_.json +4 -0
- package/docs/zh/guide/best-practices/components.mdx +793 -0
- package/docs/zh/guide/intro/_category_.json +4 -0
- package/docs/zh/guide/intro/getting-started.md +10 -4
- package/docs/zh/guide/intro/welcome.md +4 -0
- package/docs/zh/guide/intro/why-module-engineering-solution.md +5 -1
- package/docs/zh/index.md +3 -2
- package/docs/zh/plugins/guide/_category_.json +4 -0
- package/docs/zh/plugins/guide/getting-started.mdx +84 -0
- package/docs/zh/plugins/guide/plugin-object.mdx +85 -0
- package/docs/zh/plugins/guide/setup-function.mdx +117 -0
- package/docs/zh/plugins/official-list/_category_.json +4 -0
- package/docs/zh/plugins/official-list/overview.md +5 -0
- package/modern.config.ts +118 -0
- package/package.json +8 -6
- package/{docs/.island/styles → theme}/index.css +0 -1
- package/theme/index.ts +4 -0
- package/tsconfig.json +7 -0
- package/docs/.island/config.ts +0 -245
- package/docs/.island/dist/404.html +0 -41
- package/docs/.island/dist/assets/before-getting-started.1b82b538.js +0 -87
- package/docs/.island/dist/assets/before-getting-started.582a31cc.js +0 -87
- package/docs/.island/dist/assets/build-config.72eb0918.js +0 -804
- package/docs/.island/dist/assets/build-config.d8bb1658.js +0 -809
- package/docs/.island/dist/assets/build-preset.96805d7d.js +0 -256
- package/docs/.island/dist/assets/build-preset.c20dcd40.js +0 -256
- package/docs/.island/dist/assets/build-your-ui.7f349247.js +0 -2
- package/docs/.island/dist/assets/build-your-ui.a8361604.js +0 -2
- package/docs/.island/dist/assets/command-preview.2d45fc82.js +0 -264
- package/docs/.island/dist/assets/command-preview.dc51b953.js +0 -264
- package/docs/.island/dist/assets/components.esm.03560353.js +0 -9
- package/docs/.island/dist/assets/design-system.86694ff5.js +0 -1254
- package/docs/.island/dist/assets/design-system.c4745cce.js +0 -639
- package/docs/.island/dist/assets/dev.1d326a37.js +0 -37
- package/docs/.island/dist/assets/dev.1fd06000.js +0 -37
- package/docs/.island/dist/assets/down.f35427d3.svg +0 -1
- package/docs/.island/dist/assets/extension.12299fd6.js +0 -2
- package/docs/.island/dist/assets/extension.96dc63a4.js +0 -2
- package/docs/.island/dist/assets/getting-started.40e9218d.js +0 -117
- package/docs/.island/dist/assets/getting-started.b1ed3f10.js +0 -114
- package/docs/.island/dist/assets/github.3bf8ccee.svg +0 -1
- package/docs/.island/dist/assets/index.2b2347ea.js +0 -33
- package/docs/.island/dist/assets/index.6cef6f5f.js +0 -4
- package/docs/.island/dist/assets/index.cb118238.js +0 -36
- package/docs/.island/dist/assets/index.ccb6ce27.js +0 -4
- package/docs/.island/dist/assets/island_inject.11a12ecc.js +0 -1
- package/docs/.island/dist/assets/island_inject.b13deaee.js +0 -1
- package/docs/.island/dist/assets/loading.8c9bb911.svg +0 -1
- package/docs/.island/dist/assets/modify-output-product.7f6bff35.js +0 -100
- package/docs/.island/dist/assets/modify-output-product.b91eff1f.js +0 -100
- package/docs/.island/dist/assets/moon.6b705924.svg +0 -3
- package/docs/.island/dist/assets/plugin.895932d8.js +0 -42
- package/docs/.island/dist/assets/plugin.d2fbc531.js +0 -42
- package/docs/.island/dist/assets/publish-your-project.21b8309f.js +0 -164
- package/docs/.island/dist/assets/publish-your-project.8d398b17.js +0 -166
- package/docs/.island/dist/assets/right.89674cd7.svg +0 -1
- package/docs/.island/dist/assets/search.0aea6901.svg +0 -1
- package/docs/.island/dist/assets/search.1c85d17c.js +0 -3
- package/docs/.island/dist/assets/search.484eca11.js +0 -222
- package/docs/.island/dist/assets/search.54fca8d0.js +0 -3
- package/docs/.island/dist/assets/style.09015a4b.css +0 -1
- package/docs/.island/dist/assets/style.2e5f7bc2.css +0 -1970
- package/docs/.island/dist/assets/sun.841dac10.svg +0 -11
- package/docs/.island/dist/assets/test-your-project.18bd4582.js +0 -190
- package/docs/.island/dist/assets/test-your-project.f53bebf7.js +0 -190
- package/docs/.island/dist/assets/test.0da1f99f.js +0 -67
- package/docs/.island/dist/assets/test.0e81f002.js +0 -66
- package/docs/.island/dist/assets/translator.b1077c44.svg +0 -1
- package/docs/.island/dist/assets/use-micro-generator.7d9e4016.js +0 -60
- package/docs/.island/dist/assets/use-micro-generator.db5520c1.js +0 -60
- package/docs/.island/dist/assets/using-storybook.57ea6b77.js +0 -260
- package/docs/.island/dist/assets/using-storybook.a2212f2e.js +0 -260
- package/docs/.island/dist/assets/welcome.0449a9c8.js +0 -13
- package/docs/.island/dist/assets/welcome.a8448931.js +0 -13
- package/docs/.island/dist/assets/why-module-engineering-solution.6ae8c0e3.js +0 -26
- package/docs/.island/dist/assets/why-module-engineering-solution.c9a45cbd.js +0 -26
- package/docs/.island/dist/chunk-COLCRJ2V.js +0 -1
- package/docs/.island/dist/chunk-K5FMOYDC.js +0 -10
- package/docs/.island/dist/chunk-WE42KMYS.js +0 -26
- package/docs/.island/dist/client-entry.js +0 -3
- package/docs/.island/dist/en/api/build-config.html +0 -344
- package/docs/.island/dist/en/api/build-preset.html +0 -82
- package/docs/.island/dist/en/api/design-system.html +0 -155
- package/docs/.island/dist/en/api/dev.html +0 -45
- package/docs/.island/dist/en/api/index.html +0 -41
- package/docs/.island/dist/en/api/plugin.html +0 -48
- package/docs/.island/dist/en/api/test.html +0 -58
- package/docs/.island/dist/en/guide/before-getting-started.html +0 -127
- package/docs/.island/dist/en/guide/build-your-ui.html +0 -41
- package/docs/.island/dist/en/guide/command-preview.html +0 -100
- package/docs/.island/dist/en/guide/extension.html +0 -41
- package/docs/.island/dist/en/guide/getting-started.html +0 -76
- package/docs/.island/dist/en/guide/modify-output-product.html +0 -140
- package/docs/.island/dist/en/guide/publish-your-project.html +0 -91
- package/docs/.island/dist/en/guide/test-your-project.html +0 -72
- package/docs/.island/dist/en/guide/use-micro-generator.html +0 -65
- package/docs/.island/dist/en/guide/using-storybook.html +0 -113
- package/docs/.island/dist/en/guide/welcome.html +0 -53
- package/docs/.island/dist/en/guide/why-module-engineering-solution.html +0 -49
- package/docs/.island/dist/en/index.html +0 -42
- package/docs/.island/dist/react-dom.js +0 -1
- package/docs/.island/dist/react-dom_client.js +0 -1
- package/docs/.island/dist/react.js +0 -1
- package/docs/.island/dist/react_jsx-runtime.js +0 -10
- package/docs/.island/dist/ssr-manifest.json +0 -57
- package/docs/.island/dist/test-result.png +0 -0
- package/docs/.island/dist/why-module-solution.png +0 -0
- package/docs/.island/dist/zh/api/build-config.html +0 -347
- package/docs/.island/dist/zh/api/build-preset.html +0 -82
- package/docs/.island/dist/zh/api/design-system.html +0 -149
- package/docs/.island/dist/zh/api/dev.html +0 -46
- package/docs/.island/dist/zh/api/index.html +0 -41
- package/docs/.island/dist/zh/api/plugin.html +0 -48
- package/docs/.island/dist/zh/api/test.html +0 -59
- package/docs/.island/dist/zh/guide/before-getting-started.html +0 -127
- package/docs/.island/dist/zh/guide/build-your-ui.html +0 -41
- package/docs/.island/dist/zh/guide/command-preview.html +0 -100
- package/docs/.island/dist/zh/guide/extension.html +0 -41
- package/docs/.island/dist/zh/guide/getting-started.html +0 -79
- package/docs/.island/dist/zh/guide/modify-output-product.html +0 -140
- package/docs/.island/dist/zh/guide/publish-your-project.html +0 -92
- package/docs/.island/dist/zh/guide/test-your-project.html +0 -72
- package/docs/.island/dist/zh/guide/use-micro-generator.html +0 -65
- package/docs/.island/dist/zh/guide/using-storybook.html +0 -114
- package/docs/.island/dist/zh/guide/welcome.html +0 -53
- package/docs/.island/dist/zh/guide/why-module-engineering-solution.html +0 -49
- package/docs/.island/dist/zh/index.html +0 -42
- package/docs/.island/index.html +0 -39
- package/docs/en/api/design-system.md +0 -524
- package/docs/en/api/dev.md +0 -32
- package/docs/en/api/plugin.md +0 -34
- package/docs/zh/api/build-config.md +0 -570
- package/docs/zh/api/dev.md +0 -33
- package/docs/zh/api/plugins.md +0 -108
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 7
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# 处理静态资源文件
|
|
2
6
|
|
|
3
7
|
模块工程会对代码中使用的静态资源进行处理。如果需要配置,则可以使用 [`buildConfig.asset`](/zh/api/build-config#asset) API。
|
|
@@ -6,74 +10,80 @@
|
|
|
6
10
|
|
|
7
11
|
默认情况下,模块工程对于以下静态资源会进行处理:
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
- `'.svg'`、`'.png'`、`'.jpg'`、`'.jpeg'`、`'.gif'`、`'.webp'`
|
|
14
|
+
- `'.ttf'`、`'.otf'`、`'.woff'`、`'.woff2'`、`'.eot'`
|
|
15
|
+
- `'.mp3'`、`'.mp4'`、`'.webm'`、`'.ogg'`、`'.wav'`、`'.flac'`、`'.aac'`、`'.mov'`
|
|
12
16
|
|
|
13
17
|
对于静态文件的处理,模块工程目前支持的功能有:
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
- 设置静态资源路径为 `./assets`。
|
|
20
|
+
- 对于超过 **10kb** 的文件会内联到代码中。
|
|
21
|
+
- 对于 `.svg` 后缀的文件使用 [SVGR](https://react-svgr.com/)。
|
|
18
22
|
|
|
19
23
|
让我们看下面的例子:
|
|
20
24
|
|
|
21
25
|
<CH.Spotlight>
|
|
22
26
|
|
|
23
|
-
```
|
|
27
|
+
```ts ./src/asset.ts
|
|
24
28
|
import img from './bg.png';
|
|
25
29
|
//...
|
|
26
30
|
```
|
|
27
31
|
|
|
28
32
|
---
|
|
33
|
+
|
|
29
34
|
项目源代码。
|
|
30
35
|
|
|
31
|
-
```
|
|
36
|
+
```ts ./src/asset.ts
|
|
32
37
|
import img from './bg.png';
|
|
33
38
|
//...
|
|
34
39
|
```
|
|
40
|
+
|
|
35
41
|
---
|
|
42
|
+
|
|
36
43
|
如果 `bg.png` 的大小小于 10 kb,则此时产物目录结构和产物内容为。
|
|
37
44
|
|
|
38
45
|
<CH.Code>
|
|
39
46
|
|
|
40
|
-
```
|
|
47
|
+
```bash
|
|
41
48
|
./dist
|
|
42
49
|
└── asset.js
|
|
43
50
|
```
|
|
51
|
+
|
|
44
52
|
---
|
|
45
53
|
|
|
46
|
-
```
|
|
47
|
-
var bg_default =
|
|
54
|
+
```js ./dist/asset.js
|
|
55
|
+
var bg_default = 'data:image/png;base64,';
|
|
48
56
|
console.info(bg_default);
|
|
49
57
|
```
|
|
58
|
+
|
|
50
59
|
</CH.Code>
|
|
51
|
-
---
|
|
52
60
|
|
|
53
61
|
如果 `bg.png` 的大小大于 10 kb,则此时产物目录结构和产物内容为。
|
|
54
62
|
|
|
55
63
|
<CH.Code>
|
|
56
64
|
|
|
57
|
-
```
|
|
65
|
+
```bash
|
|
58
66
|
./dist
|
|
59
67
|
├── asset.js
|
|
60
68
|
└── assets
|
|
61
69
|
└── bg.13e2aba2.png
|
|
62
70
|
```
|
|
71
|
+
|
|
63
72
|
---
|
|
64
73
|
|
|
65
|
-
```
|
|
66
|
-
var bg_default =
|
|
74
|
+
```js ./dist/asset.js
|
|
75
|
+
var bg_default = 'assets/bg.13e2aba2.png';
|
|
67
76
|
console.info(bg_default);
|
|
68
77
|
```
|
|
78
|
+
|
|
69
79
|
</CH.Code>
|
|
70
80
|
|
|
71
81
|
</CH.Spotlight>
|
|
72
82
|
|
|
73
83
|
当想要修改默认行为的时候,可以使用以下 API:
|
|
74
84
|
|
|
75
|
-
|
|
76
|
-
|
|
85
|
+
- `asset.path`:修改静态资源文件输出路径。
|
|
86
|
+
- `asset.limit`:修改内联静态资源文件的阈值。
|
|
77
87
|
|
|
78
88
|
## 设置 CDN 前缀
|
|
79
89
|
|
|
@@ -83,21 +93,24 @@ console.info(bg_default);
|
|
|
83
93
|
|
|
84
94
|
<CH.Spotlight>
|
|
85
95
|
|
|
86
|
-
```
|
|
96
|
+
```ts ./src/asset.ts
|
|
87
97
|
import img from './bg.png';
|
|
88
98
|
//...
|
|
89
99
|
```
|
|
90
100
|
|
|
91
101
|
---
|
|
102
|
+
|
|
92
103
|
项目源代码。
|
|
93
104
|
|
|
94
|
-
```
|
|
105
|
+
```ts ./src/asset.ts
|
|
106
|
+
|
|
95
107
|
```
|
|
108
|
+
|
|
96
109
|
---
|
|
97
110
|
|
|
98
111
|
`modern.config` 配置为。
|
|
99
112
|
|
|
100
|
-
```
|
|
113
|
+
```ts ./modern.config.ts
|
|
101
114
|
export default defineConfig({
|
|
102
115
|
buildConfig: {
|
|
103
116
|
format: 'umd',
|
|
@@ -112,16 +125,20 @@ export default defineConfig({
|
|
|
112
125
|
|
|
113
126
|
如果 `bg.png` 的大小大于 10 kb,则此时产物内容为。
|
|
114
127
|
|
|
115
|
-
```
|
|
116
|
-
(function(global, factory) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
128
|
+
```js ./dist/asset.js focus=7:7
|
|
129
|
+
(function (global, factory) {
|
|
130
|
+
if (typeof module === 'object' && typeof module.exports === 'object')
|
|
131
|
+
factory();
|
|
132
|
+
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
133
|
+
else if (
|
|
134
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self)
|
|
135
|
+
)
|
|
136
|
+
factory();
|
|
137
|
+
})(this, function () {
|
|
138
|
+
'use strict';
|
|
139
|
+
var bg_default = 'http://cdn/assets/bg.13e2aba2.png';
|
|
140
|
+
// src/asset.tsx
|
|
141
|
+
console.info(bg_default);
|
|
125
142
|
});
|
|
126
143
|
```
|
|
127
144
|
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 5
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# 构建 umd 产物
|
|
2
6
|
|
|
3
7
|
umd 全称为 **Universal Module Definition**,这种格式的 JS 文件可以运行在多个运行环境:
|
|
4
8
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
- 浏览器环境:基于 AMD 规范进行模块加载
|
|
10
|
+
- Node.js 环境:基于 CommonJS 进行模块加载
|
|
11
|
+
- 其他情况:将模块挂载在全局对象上。
|
|
8
12
|
|
|
9
13
|
因此我们可以通过下面的方式,将项目的构建产物指定为 umd 产物:
|
|
10
14
|
|
|
11
|
-
```
|
|
15
|
+
```ts
|
|
12
16
|
export default defineConfig({
|
|
13
17
|
buildConfig: {
|
|
14
18
|
format: 'umd',
|
|
15
|
-
}
|
|
19
|
+
},
|
|
16
20
|
});
|
|
17
21
|
```
|
|
18
22
|
|
|
@@ -49,13 +53,13 @@ export default defineConfig({
|
|
|
49
53
|
|
|
50
54
|
`modern.config.ts` 配置。
|
|
51
55
|
|
|
52
|
-
```
|
|
56
|
+
```ts
|
|
53
57
|
export default defineConfig({
|
|
54
58
|
buildConfig: {
|
|
55
59
|
format: 'umd',
|
|
56
60
|
autoExternal: false,
|
|
57
61
|
externals: ['react'],
|
|
58
|
-
}
|
|
62
|
+
},
|
|
59
63
|
});
|
|
60
64
|
```
|
|
61
65
|
|
|
@@ -63,8 +67,8 @@ export default defineConfig({
|
|
|
63
67
|
|
|
64
68
|
当源码中使用了 `react` 依赖。
|
|
65
69
|
|
|
66
|
-
```
|
|
67
|
-
import React from
|
|
70
|
+
```tsx src/index.ts
|
|
71
|
+
import React from 'react';
|
|
68
72
|
console.info(React);
|
|
69
73
|
```
|
|
70
74
|
|
|
@@ -72,26 +76,30 @@ console.info(React);
|
|
|
72
76
|
|
|
73
77
|
此时产物中不会将 `react` 代码打包到产物中。
|
|
74
78
|
|
|
75
|
-
```
|
|
76
|
-
(function(global, factory) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
79
|
+
```js dist/index.js focus=1:7
|
|
80
|
+
(function (global, factory) {
|
|
81
|
+
if (typeof module === 'object' && typeof module.exports === 'object')
|
|
82
|
+
factory(exports, require('react'));
|
|
83
|
+
else if (typeof define === 'function' && define.amd)
|
|
84
|
+
define(['exports', 'react'], factory);
|
|
85
|
+
else if (
|
|
86
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self)
|
|
87
|
+
)
|
|
88
|
+
factory((global.index = {}), global.react);
|
|
89
|
+
})(this, function (exports, _react) {
|
|
90
|
+
'use strict';
|
|
91
|
+
Object.defineProperty(exports, '__esModule', {
|
|
92
|
+
value: true,
|
|
93
|
+
});
|
|
94
|
+
_react = /*#__PURE__*/ _interopRequireDefault(_react);
|
|
95
|
+
function _interopRequireDefault(obj) {
|
|
96
|
+
return obj && obj.__esModule
|
|
97
|
+
? obj
|
|
98
|
+
: {
|
|
99
|
+
default: obj,
|
|
92
100
|
};
|
|
93
|
-
|
|
94
|
-
|
|
101
|
+
}
|
|
102
|
+
console.info(_react.default);
|
|
95
103
|
});
|
|
96
104
|
```
|
|
97
105
|
|
|
@@ -99,14 +107,13 @@ console.info(React);
|
|
|
99
107
|
|
|
100
108
|
通过上面的例子我们知道,当使用 `autoExternal` 和 `externals` API 后:
|
|
101
109
|
|
|
102
|
-
|
|
103
|
-
|
|
110
|
+
- 在 Node.js 环境下,可以通过 `require('react')` 获取 react 依赖。
|
|
111
|
+
- 在 浏览器环境下,可以通过 `global.react` 获取 react 依赖。
|
|
104
112
|
|
|
105
113
|
然而在浏览器环境下,获取第三方依赖的时候,**全局变量名称不一定与依赖名称完全相同**,此时就要使用 [`buildConfig.umdGlobals`](/zh/api/build-config#umdglobals) API。
|
|
106
114
|
|
|
107
115
|
还是使用之前的例子,当 `react` 依赖以 `windows.React` 或者 `global.React` 全局变量的形式存在于浏览器环境下,那么此时:
|
|
108
116
|
|
|
109
|
-
|
|
110
117
|
<CH.Spotlight>
|
|
111
118
|
|
|
112
119
|
```json package.json
|
|
@@ -133,14 +140,14 @@ console.info(React);
|
|
|
133
140
|
|
|
134
141
|
`modern.config.ts` 配置。
|
|
135
142
|
|
|
136
|
-
```
|
|
143
|
+
```ts
|
|
137
144
|
export default defineConfig({
|
|
138
145
|
buildConfig: {
|
|
139
146
|
format: 'umd',
|
|
140
147
|
umdGlobals: {
|
|
141
148
|
react: 'React',
|
|
142
149
|
},
|
|
143
|
-
}
|
|
150
|
+
},
|
|
144
151
|
});
|
|
145
152
|
```
|
|
146
153
|
|
|
@@ -148,8 +155,8 @@ export default defineConfig({
|
|
|
148
155
|
|
|
149
156
|
当源码中使用了 `react` 依赖。
|
|
150
157
|
|
|
151
|
-
```
|
|
152
|
-
import React from
|
|
158
|
+
```tsx src/index.ts
|
|
159
|
+
import React from 'react';
|
|
153
160
|
console.info(React);
|
|
154
161
|
```
|
|
155
162
|
|
|
@@ -157,22 +164,26 @@ console.info(React);
|
|
|
157
164
|
|
|
158
165
|
此时我们会看到这样的产物代码。
|
|
159
166
|
|
|
160
|
-
```
|
|
161
|
-
(function(global, factory) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
167
|
+
```js dist/index.js focus=7:12
|
|
168
|
+
(function (global, factory) {
|
|
169
|
+
if (typeof module === 'object' && typeof module.exports === 'object')
|
|
170
|
+
factory();
|
|
171
|
+
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
172
|
+
else if (
|
|
173
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self)
|
|
174
|
+
)
|
|
175
|
+
factory();
|
|
176
|
+
})(this, function () {
|
|
177
|
+
// ...
|
|
178
|
+
// libuild:globals:react
|
|
179
|
+
var require_react = __commonJS({
|
|
180
|
+
'libuild:globals:react'(exports, module1) {
|
|
181
|
+
module1.exports = Function('return this')()['React'];
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
// src/index.ts
|
|
185
|
+
var import_react = __toESM(require_react());
|
|
186
|
+
console.info(import_react.default);
|
|
176
187
|
});
|
|
177
188
|
```
|
|
178
189
|
|
|
@@ -184,22 +195,25 @@ console.info(React);
|
|
|
184
195
|
|
|
185
196
|
当我们将下面的代码打包成 umd 产物并运行在浏览器的时候,我们可以通过 `window.index` 来使用该模块。
|
|
186
197
|
|
|
187
|
-
```
|
|
198
|
+
```ts ./src/index.ts
|
|
188
199
|
export default () => {
|
|
189
200
|
console.info('hello world');
|
|
190
|
-
}
|
|
201
|
+
};
|
|
191
202
|
```
|
|
192
203
|
|
|
193
204
|
**默认情况下,以源码文件名称作为该模块在浏览器里全局变量的名称**。对于上面的例子,其产物内容如下:
|
|
194
205
|
|
|
195
|
-
```
|
|
196
|
-
(function(global, factory) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
], factory);
|
|
201
|
-
|
|
202
|
-
|
|
206
|
+
```js ./dist/index.js focus=6:6
|
|
207
|
+
(function (global, factory) {
|
|
208
|
+
if (typeof module === 'object' && typeof module.exports === 'object')
|
|
209
|
+
factory(exports);
|
|
210
|
+
else if (typeof define === 'function' && define.amd)
|
|
211
|
+
define(['exports'], factory);
|
|
212
|
+
else if (
|
|
213
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self)
|
|
214
|
+
)
|
|
215
|
+
factory((global.index = {}));
|
|
216
|
+
})(this, function (exports) {
|
|
203
217
|
//...
|
|
204
218
|
});
|
|
205
219
|
```
|
|
@@ -208,25 +222,28 @@ export default () => {
|
|
|
208
222
|
|
|
209
223
|
当使用该 API 后:
|
|
210
224
|
|
|
211
|
-
```
|
|
225
|
+
```ts
|
|
212
226
|
export default defineConfig({
|
|
213
227
|
buildConfig: {
|
|
214
228
|
format: 'umd',
|
|
215
229
|
umdModuleName: 'myLib',
|
|
216
|
-
}
|
|
230
|
+
},
|
|
217
231
|
});
|
|
218
232
|
```
|
|
219
233
|
|
|
220
234
|
此时构建产物的内容为:
|
|
221
235
|
|
|
222
|
-
```
|
|
223
|
-
(function(global, factory) {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
], factory);
|
|
228
|
-
|
|
229
|
-
|
|
236
|
+
```js ./dist/index.js focus=6:6
|
|
237
|
+
(function (global, factory) {
|
|
238
|
+
if (typeof module === 'object' && typeof module.exports === 'object')
|
|
239
|
+
factory(exports);
|
|
240
|
+
else if (typeof define === 'function' && define.amd)
|
|
241
|
+
define(['exports'], factory);
|
|
242
|
+
else if (
|
|
243
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self)
|
|
244
|
+
)
|
|
245
|
+
factory((global.myLib = {}));
|
|
246
|
+
})(this, function (exports) {
|
|
230
247
|
//...
|
|
231
248
|
});
|
|
232
249
|
```
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 3
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# 使用 Copy 工具
|
|
2
6
|
|
|
3
7
|
模块工程提供了 Copy 工具用于将已经存在的单个文件或整个目录复制到产物目录中。接下来我们学习如何使用它。
|
|
@@ -6,8 +10,8 @@
|
|
|
6
10
|
|
|
7
11
|
我们可以通过 [`buildConfig.copy`](/zh/api/build-config#copy) API 来使用 Copy 工具,它包含以下两个主要配置:
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
- [`patterns`](/zh/api/build-config#copypatterns)
|
|
14
|
+
- [`options`](/zh/api/build-config#copyoptions)
|
|
11
15
|
|
|
12
16
|
在开始学习之前可以先花一些时间了解它们。
|
|
13
17
|
|
|
@@ -17,23 +21,24 @@
|
|
|
17
21
|
|
|
18
22
|
其中 `patterns.from` 用于指定要复制的文件或者目录。它接收 Glob 形式字符串或具体路径。Glob 形式字符串是指 [fast-glob pattern-syntax](https://github.com/mrmlnc/fast-glob#pattern-syntax)。因此我们可以按照如下两种方式使用它:
|
|
19
23
|
|
|
20
|
-
```
|
|
24
|
+
```ts
|
|
21
25
|
export default defineConfig({
|
|
22
26
|
buildConfig: {
|
|
23
27
|
copy: {
|
|
24
28
|
patterns: [
|
|
25
|
-
{ from: './index.html', to: ''},
|
|
26
|
-
{ from: './*.html', to: ''},
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
}
|
|
29
|
+
{ from: './index.html', to: '' },
|
|
30
|
+
{ from: './*.html', to: '' },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
30
34
|
});
|
|
31
35
|
```
|
|
32
36
|
|
|
33
37
|
`patterns.context` 一般和 `patterns.from` 配合使用,默认情况下它的值与 [`buildConfig.sourceDir`](/zh/api/build-config#sourcedir) 相同,因此我们可以按照如下方式指定 `src/data.json` 文件为要复制的文件:
|
|
38
|
+
|
|
34
39
|
> 默认情况下,`buildConfig.sourceDir` 为 `src`
|
|
35
40
|
|
|
36
|
-
```
|
|
41
|
+
```ts
|
|
37
42
|
export default defineConfig({
|
|
38
43
|
buildConfig: {
|
|
39
44
|
copy: {
|
|
@@ -65,15 +70,13 @@ export default defineConfig({
|
|
|
65
70
|
});
|
|
66
71
|
```
|
|
67
72
|
|
|
68
|
-
`patterns.to` 用于指定复制文件的输出路径,默认情况下它的值为 [`buildConfig.
|
|
73
|
+
`patterns.to` 用于指定复制文件的输出路径,默认情况下它的值为 [`buildConfig.outDir`](zh/api/build-config#outDir)对应的值。因此我们按照如下方式将 `src/index.html` 复制到 `dist` 目录下:
|
|
69
74
|
|
|
70
|
-
```
|
|
75
|
+
```ts
|
|
71
76
|
export default defineConfig({
|
|
72
77
|
buildConfig: {
|
|
73
78
|
copy: {
|
|
74
|
-
patterns: [
|
|
75
|
-
{ from: './index.html', }
|
|
76
|
-
],
|
|
79
|
+
patterns: [{ from: './index.html' }],
|
|
77
80
|
},
|
|
78
81
|
},
|
|
79
82
|
});
|
|
@@ -81,22 +84,22 @@ export default defineConfig({
|
|
|
81
84
|
|
|
82
85
|
当我们配置了 `patterns.to` 的时候:
|
|
83
86
|
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
- 如果是相对路径,则该路径会相对于 `buildConfig.outDir` 计算出复制文件输出的绝对路径。
|
|
88
|
+
- 如果是绝对路径,则会直接使用该值。
|
|
86
89
|
|
|
87
90
|
最后 `patterns.globOptions` 用于配置寻找复制文件 [globby](https://github.com/sindresorhus/globby) 对象,其配置可参考:
|
|
88
91
|
|
|
89
|
-
|
|
92
|
+
- [globby.options](https://github.com/sindresorhus/globby#options)
|
|
90
93
|
|
|
91
94
|
## 不同场景使用示例
|
|
92
95
|
|
|
93
96
|
### 将文件复制文件
|
|
94
97
|
|
|
95
|
-
```
|
|
98
|
+
```ts
|
|
96
99
|
export default defineConfig({
|
|
97
100
|
buildConfig: [
|
|
98
101
|
{
|
|
99
|
-
|
|
102
|
+
outDir: 'dist',
|
|
100
103
|
copy: {
|
|
101
104
|
patterns: [
|
|
102
105
|
/**
|
|
@@ -110,17 +113,17 @@ export default defineConfig({
|
|
|
110
113
|
],
|
|
111
114
|
},
|
|
112
115
|
},
|
|
113
|
-
]
|
|
116
|
+
],
|
|
114
117
|
});
|
|
115
118
|
```
|
|
116
119
|
|
|
117
120
|
### 将文件复制到目录
|
|
118
121
|
|
|
119
|
-
```
|
|
122
|
+
```ts
|
|
120
123
|
export default defineConfig({
|
|
121
124
|
buildConfig: [
|
|
122
125
|
{
|
|
123
|
-
|
|
126
|
+
outDir: 'dist',
|
|
124
127
|
copy: {
|
|
125
128
|
patterns: [
|
|
126
129
|
/**
|
|
@@ -140,11 +143,11 @@ export default defineConfig({
|
|
|
140
143
|
|
|
141
144
|
### 从目录复制到目录
|
|
142
145
|
|
|
143
|
-
```
|
|
146
|
+
```ts
|
|
144
147
|
export default defineConfig({
|
|
145
148
|
buildConfig: [
|
|
146
149
|
{
|
|
147
|
-
|
|
150
|
+
outDir: 'dist',
|
|
148
151
|
copy: {
|
|
149
152
|
patterns: [
|
|
150
153
|
/**
|
|
@@ -167,11 +170,11 @@ export default defineConfig({
|
|
|
167
170
|
|
|
168
171
|
### 从目录到文件
|
|
169
172
|
|
|
170
|
-
```
|
|
173
|
+
```ts
|
|
171
174
|
export default defineConfig({
|
|
172
175
|
buildConfig: [
|
|
173
176
|
{
|
|
174
|
-
|
|
177
|
+
outDir: 'dist',
|
|
175
178
|
copy: {
|
|
176
179
|
patterns: [
|
|
177
180
|
/**
|
|
@@ -194,11 +197,11 @@ export default defineConfig({
|
|
|
194
197
|
|
|
195
198
|
### 使用 Glob
|
|
196
199
|
|
|
197
|
-
```
|
|
200
|
+
```ts
|
|
198
201
|
export default defineConfig({
|
|
199
202
|
buildConfig: [
|
|
200
203
|
{
|
|
201
|
-
|
|
204
|
+
outDir: 'dist',
|
|
202
205
|
copy: {
|
|
203
206
|
patterns: [
|
|
204
207
|
/**
|