@modern-js/module-tools-docs 2.29.0 → 2.31.0
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/CHANGELOG.md +15 -0
- package/docs/en/api/config/build-config.mdx +80 -53
- package/docs/en/api/config/build-preset.mdx +15 -33
- package/docs/en/api/config/design-system.md +42 -34
- package/docs/en/api/config/plugins.md +3 -3
- package/docs/en/api/config/testing.md +2 -2
- package/docs/en/api/plugin-api/plugin-hooks.md +24 -24
- package/docs/en/components/register-esbuild-plugin.mdx +2 -2
- package/docs/en/guide/advance/asset.mdx +8 -27
- package/docs/en/guide/advance/build-umd.mdx +18 -66
- package/docs/en/guide/advance/external-dependency.mdx +7 -27
- package/docs/en/guide/advance/in-depth-about-build.md +4 -4
- package/docs/en/guide/advance/in-depth-about-dev-command.md +2 -2
- package/docs/en/guide/advance/theme-config.mdx +4 -8
- package/docs/en/guide/basic/before-getting-started.md +1 -1
- package/docs/en/guide/basic/publish-your-project.md +8 -7
- package/docs/en/guide/basic/test-your-project.mdx +10 -47
- package/docs/en/guide/basic/use-micro-generator.md +4 -4
- package/docs/en/guide/basic/using-storybook.mdx +12 -44
- package/docs/en/guide/best-practices/components.mdx +44 -402
- package/docs/en/guide/faq/build.mdx +16 -0
- package/docs/en/guide/intro/getting-started.md +21 -2
- package/docs/en/plugins/guide/getting-started.mdx +8 -24
- package/docs/en/plugins/guide/plugin-object.mdx +2 -8
- package/docs/en/plugins/official-list/plugin-import.mdx +9 -52
- package/docs/en/plugins/official-list/plugin-node-polyfill.md +2 -2
- package/docs/zh/api/config/build-config.mdx +83 -56
- package/docs/zh/api/config/build-preset.mdx +12 -30
- package/docs/zh/api/config/design-system.md +6 -6
- package/docs/zh/api/config/plugins.md +3 -3
- package/docs/zh/api/config/testing.md +2 -2
- package/docs/zh/components/register-esbuild-plugin.mdx +2 -2
- package/docs/zh/guide/advance/asset.mdx +9 -30
- package/docs/zh/guide/advance/build-umd.mdx +19 -67
- package/docs/zh/guide/advance/external-dependency.mdx +8 -28
- package/docs/zh/guide/advance/in-depth-about-build.md +4 -4
- package/docs/zh/guide/advance/in-depth-about-dev-command.md +2 -2
- package/docs/zh/guide/advance/theme-config.mdx +4 -8
- package/docs/zh/guide/basic/publish-your-project.md +2 -2
- package/docs/zh/guide/basic/test-your-project.mdx +11 -49
- package/docs/zh/guide/basic/use-micro-generator.md +4 -4
- package/docs/zh/guide/basic/using-storybook.mdx +13 -45
- package/docs/zh/guide/best-practices/components.mdx +50 -410
- package/docs/zh/guide/faq/build.mdx +16 -0
- package/docs/zh/guide/intro/getting-started.md +20 -1
- package/docs/zh/plugins/guide/getting-started.mdx +8 -24
- package/docs/zh/plugins/guide/plugin-object.mdx +2 -8
- package/docs/zh/plugins/official-list/plugin-import.mdx +10 -55
- package/docs/zh/plugins/official-list/plugin-node-polyfill.md +2 -2
- package/modern.config.ts +1 -12
- package/package.json +3 -5
- package/theme/index.ts +0 -2
- package/theme/index.css +0 -9
|
@@ -26,7 +26,7 @@ sidebar_position: 1
|
|
|
26
26
|
对于 TypeScript 项目,只需要在 `tsconfig.json` 中配置 [compilerOptions.paths](https://www.typescriptlang.org/tsconfig#paths), Module Tools 会自动识别 `tsconfig.json` 里的别名,因此不需要额外配置 `alias` 字段。
|
|
27
27
|
:::
|
|
28
28
|
|
|
29
|
-
```js modern.config.ts
|
|
29
|
+
```js title="modern.config.ts"
|
|
30
30
|
export default defineConfig({
|
|
31
31
|
buildConfig: {
|
|
32
32
|
alias: {
|
|
@@ -40,7 +40,7 @@ export default defineConfig({
|
|
|
40
40
|
|
|
41
41
|
`alias` 的值定义为函数时,可以接受预设的 alias 对象,并对其进行修改。
|
|
42
42
|
|
|
43
|
-
```js modern.config.ts
|
|
43
|
+
```js title="modern.config.ts"
|
|
44
44
|
export default defineConfig({
|
|
45
45
|
buildConfig: {
|
|
46
46
|
alias: alias => {
|
|
@@ -52,7 +52,7 @@ export default defineConfig({
|
|
|
52
52
|
|
|
53
53
|
也可以在函数中返回一个新对象作为最终结果,新对象会覆盖预设的 alias 对象。
|
|
54
54
|
|
|
55
|
-
```js modern.config.ts
|
|
55
|
+
```js title="modern.config.ts"
|
|
56
56
|
export default defineConfig({
|
|
57
57
|
buildConfig: {
|
|
58
58
|
alias: alias => {
|
|
@@ -88,7 +88,7 @@ Module Tools 在进行打包时,默认会内联体积小于 10KB 的图片、
|
|
|
88
88
|
|
|
89
89
|
例如,将 `limit` 设置为 `0` 来避免资源内联:
|
|
90
90
|
|
|
91
|
-
```js modern.config.ts
|
|
91
|
+
```js title="modern.config.ts"
|
|
92
92
|
export default defineConfig({
|
|
93
93
|
buildConfig: {
|
|
94
94
|
asset: {
|
|
@@ -105,7 +105,7 @@ export default defineConfig({
|
|
|
105
105
|
- 类型: `string`
|
|
106
106
|
- 默认值: `undefined`
|
|
107
107
|
|
|
108
|
-
```js modern.config.ts
|
|
108
|
+
```js title="modern.config.ts"
|
|
109
109
|
export default defineConfig({
|
|
110
110
|
buildConfig: {
|
|
111
111
|
asset: {
|
|
@@ -126,7 +126,7 @@ export default defineConfig({
|
|
|
126
126
|
|
|
127
127
|
开启 svgr 功能后,可以使用默认导出的方式将 SVG 当做组件使用。
|
|
128
128
|
|
|
129
|
-
```js index.ts
|
|
129
|
+
```js title="index.ts"
|
|
130
130
|
// true
|
|
131
131
|
import Logo from './logo.svg';
|
|
132
132
|
|
|
@@ -137,7 +137,7 @@ export default () => <Logo />;
|
|
|
137
137
|
|
|
138
138
|
目前不支持下面的用法:
|
|
139
139
|
|
|
140
|
-
```js index.ts
|
|
140
|
+
```js title="index.ts"
|
|
141
141
|
import { ReactComponent } from './logo.svg';
|
|
142
142
|
```
|
|
143
143
|
|
|
@@ -145,7 +145,7 @@ import { ReactComponent } from './logo.svg';
|
|
|
145
145
|
|
|
146
146
|
当开启功能后,可以通过在 `modern-app-env.d.ts` 文件中增加类型定义,修改使用 SVG 的类型:
|
|
147
147
|
|
|
148
|
-
```ts modern-app-env.d.ts
|
|
148
|
+
```ts title="modern-app-env.d.ts"
|
|
149
149
|
declare module '*.svg' {
|
|
150
150
|
const src: React.FunctionComponent<React.SVGProps<SVGSVGElement>>;
|
|
151
151
|
export default src;
|
|
@@ -177,7 +177,7 @@ declare module '*.svg' {
|
|
|
177
177
|
|
|
178
178
|
当我们希望关闭对于第三方依赖的默认处理行为时候,可以通过以下方式来实现:
|
|
179
179
|
|
|
180
|
-
```ts modern.config.ts
|
|
180
|
+
```ts title="modern.config.ts"
|
|
181
181
|
export default defineConfig({
|
|
182
182
|
buildConfig: {
|
|
183
183
|
autoExternal: false,
|
|
@@ -188,7 +188,7 @@ export default defineConfig({
|
|
|
188
188
|
这样对于 `"dependencies"` 和 `"peerDependencies"` 下面的依赖都会进行打包处理。如果只想要关闭其中某个下面的依赖处理,则可以使用
|
|
189
189
|
`buildConfig.autoExternal` 的对象形式:
|
|
190
190
|
|
|
191
|
-
```ts modern.config.ts
|
|
191
|
+
```ts title="modern.config.ts"
|
|
192
192
|
export default defineConfig({
|
|
193
193
|
buildConfig: {
|
|
194
194
|
autoExternal: {
|
|
@@ -226,7 +226,7 @@ export default defineConfig({
|
|
|
226
226
|
|
|
227
227
|
- 类型: `object`
|
|
228
228
|
|
|
229
|
-
```js modern.config.ts
|
|
229
|
+
```js title="modern.config.ts"
|
|
230
230
|
export default defineConfig({
|
|
231
231
|
buildConfig: {
|
|
232
232
|
copy: {
|
|
@@ -275,7 +275,7 @@ type Options = {
|
|
|
275
275
|
|
|
276
276
|
由于 `define` 功能是由全局文本替换实现的,所以需要保证全局变量值为字符串,更为安全的做法是将每个全局变量的值转化为字符串,使用 `JSON.stringify` 进行转换,如下所示:
|
|
277
277
|
|
|
278
|
-
```js modern.config.ts
|
|
278
|
+
```js title="modern.config.ts"
|
|
279
279
|
export default defineConfig({
|
|
280
280
|
buildConfig: {
|
|
281
281
|
define: {
|
|
@@ -327,7 +327,7 @@ export default defineConfig({
|
|
|
327
327
|
|
|
328
328
|
**默认情况下,在出现类型错误的时候会导致构建失败**。将 `abortOnError` 设置为 `false` 后,即使代码中出现了类型问题,构建依然会成功:
|
|
329
329
|
|
|
330
|
-
```js modern.config.ts
|
|
330
|
+
```js title="modern.config.ts"
|
|
331
331
|
export default defineConfig({
|
|
332
332
|
buildConfig: {
|
|
333
333
|
dts: {
|
|
@@ -350,7 +350,7 @@ export default defineConfig({
|
|
|
350
350
|
|
|
351
351
|
比如输出到 `outDir` 下面的 `types` 目录:
|
|
352
352
|
|
|
353
|
-
```js modern.config.ts
|
|
353
|
+
```js title="modern.config.ts"
|
|
354
354
|
export default defineConfig({
|
|
355
355
|
buildConfig: {
|
|
356
356
|
dts: {
|
|
@@ -367,7 +367,7 @@ export default defineConfig({
|
|
|
367
367
|
- 类型: `boolean`
|
|
368
368
|
- 默认值: `false`
|
|
369
369
|
|
|
370
|
-
```js modern.config.ts
|
|
370
|
+
```js title="modern.config.ts"
|
|
371
371
|
export default defineConfig({
|
|
372
372
|
buildConfig: {
|
|
373
373
|
dts: {
|
|
@@ -386,7 +386,7 @@ export default defineConfig({
|
|
|
386
386
|
- 类型: `boolean`
|
|
387
387
|
- 默认值: `true`
|
|
388
388
|
|
|
389
|
-
```js modern.config.ts
|
|
389
|
+
```js title="modern.config.ts"
|
|
390
390
|
export default defineConfig({
|
|
391
391
|
buildConfig: {
|
|
392
392
|
dts: {
|
|
@@ -403,7 +403,7 @@ TypeScript 配置文件的路径。
|
|
|
403
403
|
- 类型: `string`
|
|
404
404
|
- 默认值: `./tsconfig.json`
|
|
405
405
|
|
|
406
|
-
```js modern.config.ts
|
|
406
|
+
```js title="modern.config.ts"
|
|
407
407
|
export default defineConfig({
|
|
408
408
|
buildConfig: {
|
|
409
409
|
dts: {
|
|
@@ -422,12 +422,12 @@ export default defineConfig({
|
|
|
422
422
|
|
|
423
423
|
例如,我们需要修改生成文件的后缀:
|
|
424
424
|
|
|
425
|
-
```js modern.config.ts
|
|
425
|
+
```js title="modern.config.ts"
|
|
426
426
|
export default defineConfig({
|
|
427
427
|
buildConfig: {
|
|
428
428
|
esbuildOptions: options => {
|
|
429
429
|
options.outExtension = { '.js': '.mjs' };
|
|
430
|
-
return
|
|
430
|
+
return options;
|
|
431
431
|
},
|
|
432
432
|
},
|
|
433
433
|
});
|
|
@@ -460,7 +460,7 @@ import RegisterEsbuildPlugin from '@site-docs/components/register-esbuild-plugin
|
|
|
460
460
|
|
|
461
461
|
开启前:
|
|
462
462
|
|
|
463
|
-
```js ./dist/index.js
|
|
463
|
+
```js title="./dist/index.js"
|
|
464
464
|
// 辅助函数
|
|
465
465
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
466
466
|
// ...
|
|
@@ -481,7 +481,7 @@ export var yourCode = function () {
|
|
|
481
481
|
|
|
482
482
|
开启后:
|
|
483
483
|
|
|
484
|
-
```js ./dist/index.js
|
|
484
|
+
```js title="./dist/index.js"
|
|
485
485
|
// 从 @swc/helpers 导入的辅助函数
|
|
486
486
|
import { _ as _async_to_generator } from '@swc/helpers/_/_async_to_generator';
|
|
487
487
|
|
|
@@ -505,7 +505,7 @@ type Externals = (string | RegExp)[];
|
|
|
505
505
|
- 构建类型:`仅支持 buildType: 'bundle'`
|
|
506
506
|
- 示例:
|
|
507
507
|
|
|
508
|
-
```js modern.config.ts
|
|
508
|
+
```js title="modern.config.ts"
|
|
509
509
|
export default defineConfig({
|
|
510
510
|
buildConfig: {
|
|
511
511
|
// 避免打包 React
|
|
@@ -527,7 +527,7 @@ esm 代表 "ECMAScript 模块",它需要运行环境支持 import 和 export
|
|
|
527
527
|
|
|
528
528
|
- 示例:
|
|
529
529
|
|
|
530
|
-
```js modern.config.ts
|
|
530
|
+
```js title="modern.config.ts"
|
|
531
531
|
export default defineConfig({
|
|
532
532
|
buildConfig: {
|
|
533
533
|
format: 'esm',
|
|
@@ -541,7 +541,7 @@ cjs 代表 "CommonJS",它需要运行环境支持 exports、require 和 module
|
|
|
541
541
|
|
|
542
542
|
- 示例:
|
|
543
543
|
|
|
544
|
-
```js modern.config.ts
|
|
544
|
+
```js title="modern.config.ts"
|
|
545
545
|
export default defineConfig({
|
|
546
546
|
buildConfig: {
|
|
547
547
|
format: 'cjs',
|
|
@@ -555,7 +555,7 @@ iife 代表 "立即调用函数表达式",它将代码包裹在函数表达式
|
|
|
555
555
|
|
|
556
556
|
- 示例:
|
|
557
557
|
|
|
558
|
-
```js modern.config.ts
|
|
558
|
+
```js title="modern.config.ts"
|
|
559
559
|
export default defineConfig({
|
|
560
560
|
buildConfig: {
|
|
561
561
|
format: 'iife',
|
|
@@ -569,7 +569,7 @@ umd 代表 "Universal Module Definition",用于在不同环境(浏览器、N
|
|
|
569
569
|
|
|
570
570
|
- 示例:
|
|
571
571
|
|
|
572
|
-
```js modern.config.ts
|
|
572
|
+
```js title="modern.config.ts"
|
|
573
573
|
export default defineConfig({
|
|
574
574
|
buildConfig: {
|
|
575
575
|
format: 'umd',
|
|
@@ -595,7 +595,7 @@ type Input =
|
|
|
595
595
|
|
|
596
596
|
**数组用法:**
|
|
597
597
|
|
|
598
|
-
```js modern.config.ts
|
|
598
|
+
```js title="modern.config.ts"
|
|
599
599
|
export default defineConfig({
|
|
600
600
|
buildConfig: {
|
|
601
601
|
input: ['src/index.ts', 'src/index2.ts'],
|
|
@@ -609,7 +609,7 @@ export default defineConfig({
|
|
|
609
609
|
|
|
610
610
|
**对象的 Key 是产物的文件名称,Value 是源码的文件路径。**
|
|
611
611
|
|
|
612
|
-
```js modern.config.ts
|
|
612
|
+
```js title="modern.config.ts"
|
|
613
613
|
export default defineConfig({
|
|
614
614
|
buildConfig: {
|
|
615
615
|
format: 'esm',
|
|
@@ -629,7 +629,7 @@ export default defineConfig({
|
|
|
629
629
|
|
|
630
630
|
如果你需要支持 React 16,则可以设置 `jsx` 为 `transform`:
|
|
631
631
|
|
|
632
|
-
```js modern.config.ts
|
|
632
|
+
```js title="modern.config.ts"
|
|
633
633
|
export default defineConfig({
|
|
634
634
|
buildConfig: {
|
|
635
635
|
jsx: 'transform',
|
|
@@ -655,7 +655,7 @@ export default defineConfig({
|
|
|
655
655
|
|
|
656
656
|
开启 `metafile` 生成:
|
|
657
657
|
|
|
658
|
-
```js modern.config.ts
|
|
658
|
+
```js title="modern.config.ts"
|
|
659
659
|
export default defineConfig({
|
|
660
660
|
buildConfig: {
|
|
661
661
|
buildType: 'bundle',
|
|
@@ -673,7 +673,7 @@ export default defineConfig({
|
|
|
673
673
|
- 类型: `'terser' | 'esbuild' | false | object`
|
|
674
674
|
- 默认值: `false`
|
|
675
675
|
|
|
676
|
-
```js modern.config.ts
|
|
676
|
+
```js title="modern.config.ts"
|
|
677
677
|
export default defineConfig({
|
|
678
678
|
buildConfig: {
|
|
679
679
|
minify: {
|
|
@@ -692,7 +692,7 @@ export default defineConfig({
|
|
|
692
692
|
- 类型: `string`
|
|
693
693
|
- 默认值: `./dist`
|
|
694
694
|
|
|
695
|
-
```js modern.config.ts
|
|
695
|
+
```js title="modern.config.ts"
|
|
696
696
|
export default defineConfig({
|
|
697
697
|
buildConfig: {
|
|
698
698
|
outDir: './dist/esm',
|
|
@@ -707,7 +707,7 @@ export default defineConfig({
|
|
|
707
707
|
- 类型: `'browser' | 'node'`
|
|
708
708
|
- 默认值: `'node'`
|
|
709
709
|
|
|
710
|
-
```js modern.config.ts
|
|
710
|
+
```js title="modern.config.ts"
|
|
711
711
|
export default defineConfig({
|
|
712
712
|
buildConfig: {
|
|
713
713
|
platform: 'browser',
|
|
@@ -724,7 +724,7 @@ export default defineConfig({
|
|
|
724
724
|
|
|
725
725
|
在某些场景下,你可能不需要这些功能,那么可以通过此配置关闭它,关闭后,其引用路径将不会发生改变。
|
|
726
726
|
|
|
727
|
-
```js modern.config.ts
|
|
727
|
+
```js title="modern.config.ts"
|
|
728
728
|
export default {
|
|
729
729
|
buildConfig: {
|
|
730
730
|
redirect: {
|
|
@@ -752,7 +752,7 @@ import 'other-package/dist/index.css';
|
|
|
752
752
|
|
|
753
753
|
但是这个三方包的 package.json 里并没有将样式文件配置到 `"sideEffects"` 里。
|
|
754
754
|
|
|
755
|
-
```json other-package/package.json
|
|
755
|
+
```json title="other-package/package.json"
|
|
756
756
|
{
|
|
757
757
|
"sideEffects": ["dist/index.js"]
|
|
758
758
|
}
|
|
@@ -766,7 +766,7 @@ import 'other-package/dist/index.css';
|
|
|
766
766
|
|
|
767
767
|
这时候就可以使用这个配置项,手动配置模块的`"sideEffects"`,配置支持正则和函数形式。
|
|
768
768
|
|
|
769
|
-
```js modern.config.ts
|
|
769
|
+
```js title="modern.config.ts"
|
|
770
770
|
export default defineConfig({
|
|
771
771
|
buildConfig: {
|
|
772
772
|
sideEffects: [/\.css$/],
|
|
@@ -830,7 +830,7 @@ less 相关配置。
|
|
|
830
830
|
- 类型: `string`
|
|
831
831
|
- 默认值: `undefined`
|
|
832
832
|
|
|
833
|
-
```js modern.config.ts
|
|
833
|
+
```js title="modern.config.ts"
|
|
834
834
|
export default defineConfig({
|
|
835
835
|
buildConfig: {
|
|
836
836
|
style: {
|
|
@@ -851,7 +851,7 @@ export default defineConfig({
|
|
|
851
851
|
|
|
852
852
|
设置 `object` 类型时,可以指定 `Less` 的实现库。
|
|
853
853
|
|
|
854
|
-
```js modern.config.ts
|
|
854
|
+
```js title="modern.config.ts"
|
|
855
855
|
export default defineConfig({
|
|
856
856
|
buildConfig: {
|
|
857
857
|
style: {
|
|
@@ -865,7 +865,7 @@ export default defineConfig({
|
|
|
865
865
|
|
|
866
866
|
`string` 类型时,指定 `Less` 的实现库的路径
|
|
867
867
|
|
|
868
|
-
```js modern.config.ts
|
|
868
|
+
```js title="modern.config.ts"
|
|
869
869
|
export default defineConfig({
|
|
870
870
|
buildConfig: {
|
|
871
871
|
style: {
|
|
@@ -895,7 +895,7 @@ Sass 相关配置。
|
|
|
895
895
|
- 类型: `string | Function`
|
|
896
896
|
- 默认值: `undefined`
|
|
897
897
|
|
|
898
|
-
```js modern.config.ts
|
|
898
|
+
```js title="modern.config.ts"
|
|
899
899
|
export default defineConfig({
|
|
900
900
|
buildConfig: {
|
|
901
901
|
style: {
|
|
@@ -917,7 +917,7 @@ export default defineConfig({
|
|
|
917
917
|
|
|
918
918
|
设置为 `object` 类型时,可以指定 `Sass` 的实现库。
|
|
919
919
|
|
|
920
|
-
```js modern.config.ts
|
|
920
|
+
```js title="modern.config.ts"
|
|
921
921
|
export default defineConfig({
|
|
922
922
|
buildConfig: {
|
|
923
923
|
style: {
|
|
@@ -931,7 +931,7 @@ export default defineConfig({
|
|
|
931
931
|
|
|
932
932
|
`string` 类型时,指定 `Sass` 的实现库的路径
|
|
933
933
|
|
|
934
|
-
```js modern.config.ts
|
|
934
|
+
```js title="modern.config.ts"
|
|
935
935
|
export default defineConfig({
|
|
936
936
|
buildConfig: {
|
|
937
937
|
style: {
|
|
@@ -945,14 +945,40 @@ export default defineConfig({
|
|
|
945
945
|
|
|
946
946
|
## style.postcss
|
|
947
947
|
|
|
948
|
-
|
|
949
|
-
- processOptions
|
|
948
|
+
用于配置 PostCSS 的选项,传入的值会与默认配置通过 `Object.assign` 合并。注意 `Object.assign` 是浅拷贝,因此会完全覆盖内置的 plugins 数组。
|
|
950
949
|
|
|
951
|
-
|
|
950
|
+
详细配置请查看 [PostCSS](https://github.com/postcss/postcss#options)。
|
|
952
951
|
|
|
953
|
-
|
|
952
|
+
- 类型:
|
|
953
|
+
|
|
954
|
+
```ts
|
|
955
|
+
type PostcssOptions = {
|
|
956
|
+
processOptions?: ProcessOptions;
|
|
957
|
+
plugins?: AcceptedPlugin[];
|
|
958
|
+
};
|
|
959
|
+
```
|
|
960
|
+
|
|
961
|
+
- 默认值:
|
|
954
962
|
|
|
955
|
-
```
|
|
963
|
+
```ts
|
|
964
|
+
const defaultConfig = {
|
|
965
|
+
plugins: [
|
|
966
|
+
// 以下插件默认启用
|
|
967
|
+
require('postcss-flexbugs-fixes'),
|
|
968
|
+
require('postcss-media-minmax'),
|
|
969
|
+
require('postcss-nesting'),
|
|
970
|
+
// 以下插件仅在 target 为 `es5` 时启用
|
|
971
|
+
require('postcss-custom-properties'),
|
|
972
|
+
require('postcss-initial'),
|
|
973
|
+
require('postcss-page-break'),
|
|
974
|
+
require('postcss-font-variant'),
|
|
975
|
+
],
|
|
976
|
+
};
|
|
977
|
+
```
|
|
978
|
+
|
|
979
|
+
- 示例:
|
|
980
|
+
|
|
981
|
+
```js title="modern.config.ts"
|
|
956
982
|
export default defineConfig({
|
|
957
983
|
buildConfig: {
|
|
958
984
|
style: {
|
|
@@ -973,7 +999,7 @@ export default defineConfig({
|
|
|
973
999
|
|
|
974
1000
|
将 `inject` 设置为 `true` 来开启此功能:
|
|
975
1001
|
|
|
976
|
-
```js modern.config.ts
|
|
1002
|
+
```js title="modern.config.ts"
|
|
977
1003
|
export default defineConfig({
|
|
978
1004
|
buildConfig: {
|
|
979
1005
|
inject: true,
|
|
@@ -985,7 +1011,7 @@ export default defineConfig({
|
|
|
985
1011
|
|
|
986
1012
|
例如,你在源码里写了 `import './index.scss'`,那么在产物中你会看到以下代码:
|
|
987
1013
|
|
|
988
|
-
```js dist/index.js
|
|
1014
|
+
```js title="dist/index.js"
|
|
989
1015
|
// node_modules/style-inject/dist/style-inject.es.js
|
|
990
1016
|
function styleInject(css, ref) {
|
|
991
1017
|
// ...
|
|
@@ -1034,7 +1060,7 @@ CSS Modules 配置。
|
|
|
1034
1060
|
|
|
1035
1061
|
一个常用的配置是 `localsConvention`,它可以改变 CSS Modules 的类名生成规则。
|
|
1036
1062
|
|
|
1037
|
-
```js modern.config.ts
|
|
1063
|
+
```js title="modern.config.ts"
|
|
1038
1064
|
export default defineConfig({
|
|
1039
1065
|
buildConfig: {
|
|
1040
1066
|
style: {
|
|
@@ -1068,7 +1094,7 @@ Tailwind CSS 相关配置。
|
|
|
1068
1094
|
<details>
|
|
1069
1095
|
<summary>Tailwind CSS 配置详情</summary>
|
|
1070
1096
|
|
|
1071
|
-
```js modern.config.ts
|
|
1097
|
+
```js title="modern.config.ts"
|
|
1072
1098
|
const tailwind = {
|
|
1073
1099
|
content: [
|
|
1074
1100
|
'./config/html/**/*.html',
|
|
@@ -1082,6 +1108,7 @@ const tailwind = {
|
|
|
1082
1108
|
],
|
|
1083
1109
|
};
|
|
1084
1110
|
```
|
|
1111
|
+
|
|
1085
1112
|
</details>
|
|
1086
1113
|
|
|
1087
1114
|
值为 `object` 类型时,与默认配置通过 `Object.assign` 合并。
|
|
@@ -1117,7 +1144,7 @@ type Target =
|
|
|
1117
1144
|
|
|
1118
1145
|
例如,将代码编译到 `es5` 语法:
|
|
1119
1146
|
|
|
1120
|
-
```js modern.config.ts
|
|
1147
|
+
```js title="modern.config.ts"
|
|
1121
1148
|
export default defineConfig({
|
|
1122
1149
|
buildConfig: {
|
|
1123
1150
|
target: 'es5',
|
|
@@ -1136,7 +1163,7 @@ export default defineConfig({
|
|
|
1136
1163
|
|
|
1137
1164
|
使用示例:
|
|
1138
1165
|
|
|
1139
|
-
```js modern.config.ts
|
|
1166
|
+
```js title="modern.config.ts"
|
|
1140
1167
|
export default defineConfig({
|
|
1141
1168
|
buildConfig: {
|
|
1142
1169
|
transformImport: [
|
|
@@ -1161,7 +1188,7 @@ export default defineConfig({
|
|
|
1161
1188
|
- 类型: `Record<string, string>`
|
|
1162
1189
|
- 默认值: `{}`
|
|
1163
1190
|
|
|
1164
|
-
```ts modern.config.ts
|
|
1191
|
+
```ts title="modern.config.ts"
|
|
1165
1192
|
export default defineConfig({
|
|
1166
1193
|
buildConfig: {
|
|
1167
1194
|
umdGlobals: {
|
|
@@ -1181,7 +1208,7 @@ export default defineConfig({
|
|
|
1181
1208
|
- 类型: `string | Function`
|
|
1182
1209
|
- 默认值: `name => name`
|
|
1183
1210
|
|
|
1184
|
-
```js modern.config.ts
|
|
1211
|
+
```js title="modern.config.ts"
|
|
1185
1212
|
export default defineConfig({
|
|
1186
1213
|
buildConfig: {
|
|
1187
1214
|
format: 'umd',
|
|
@@ -1201,7 +1228,7 @@ export default defineConfig({
|
|
|
1201
1228
|
|
|
1202
1229
|
同时函数形式可以接收一个参数,为当前打包文件的输出路径
|
|
1203
1230
|
|
|
1204
|
-
```js modern.config.ts
|
|
1231
|
+
```js title="modern.config.ts"
|
|
1205
1232
|
export default defineConfig({
|
|
1206
1233
|
buildConfig: {
|
|
1207
1234
|
format: 'umd',
|
|
@@ -13,7 +13,7 @@ sidebar_position: 2
|
|
|
13
13
|
|
|
14
14
|
字符串的形式可以让你直接使用内置的预设。
|
|
15
15
|
|
|
16
|
-
```js modern.config.ts
|
|
16
|
+
```js title="modern.config.ts"
|
|
17
17
|
import { defineConfig } from '@modern-js/module-tools';
|
|
18
18
|
|
|
19
19
|
export default defineConfig({
|
|
@@ -34,7 +34,7 @@ export default defineConfig({
|
|
|
34
34
|
|
|
35
35
|
:::
|
|
36
36
|
|
|
37
|
-
```json package.json
|
|
37
|
+
```json title="package.json"
|
|
38
38
|
{
|
|
39
39
|
"main": "./dist/lib/index.js",
|
|
40
40
|
"module": "./dist/es/index.js",
|
|
@@ -72,7 +72,7 @@ export const buildConfig = [
|
|
|
72
72
|
|
|
73
73
|
在类 [NPM](https://www.npmjs.com/) 包管理器下使用,并且 Library 支持类似 [unpkg](https://unpkg.com/) 的模式。在预设 `'npm-library'` 的基础上,额外提供 `umd` 产物。
|
|
74
74
|
|
|
75
|
-
```json package.json
|
|
75
|
+
```json title="package.json"
|
|
76
76
|
{
|
|
77
77
|
"main": "./dist/lib/index.js",
|
|
78
78
|
"module": "./dist/es/index.js",
|
|
@@ -120,7 +120,7 @@ export const buildConfig = [
|
|
|
120
120
|
|
|
121
121
|
对于源码中包含的样式文件,产物中提供样式的编译产物和样式的源文件。
|
|
122
122
|
|
|
123
|
-
```json package.json
|
|
123
|
+
```json title="package.json"
|
|
124
124
|
{
|
|
125
125
|
"main": "./dist/lib/index.js", // bundleless type
|
|
126
126
|
"module": "./dist/es/index.js", // bundleless type
|
|
@@ -158,7 +158,7 @@ export const buildConfig = [
|
|
|
158
158
|
|
|
159
159
|
在类 [NPM](https://www.npmjs.com/) 包管理器下使用的组件(库),同时支持类 [unpkg](https://unpkg.com/) 的模式。 在预设 `'npm-component'` 的基础上,额外提供 `umd` 产物。
|
|
160
160
|
|
|
161
|
-
```json package.json
|
|
161
|
+
```json title="package.json"
|
|
162
162
|
{
|
|
163
163
|
"main": "./dist/lib/index.js", // bundleless type
|
|
164
164
|
"module": "./dist/es/index.js", // bundleless type
|
|
@@ -204,7 +204,7 @@ export const buildConfig = [
|
|
|
204
204
|
|
|
205
205
|
例如希望 `'npm-library'` 预设支持 `'es2017'`,则可以按照如下方式配置:
|
|
206
206
|
|
|
207
|
-
```js modern.config.ts
|
|
207
|
+
```js title="modern.config.ts"
|
|
208
208
|
import { defineConfig } from '@modern-js/module-tools';
|
|
209
209
|
|
|
210
210
|
export default defineConfig({
|
|
@@ -217,7 +217,7 @@ export default defineConfig({
|
|
|
217
217
|
函数的配置方式,可以通过 `preset` 参数获取到预设值,然后对里面的构建配置进行修改来自定义你的构建配置。
|
|
218
218
|
以下是一个函数的配置方式的例子,它配置了压缩构建产物的功能:
|
|
219
219
|
|
|
220
|
-
```js modern.config.ts
|
|
220
|
+
```js title="modern.config.ts"
|
|
221
221
|
import { defineConfig } from '@modern-js/module-tools';
|
|
222
222
|
|
|
223
223
|
export default defineConfig({
|
|
@@ -248,10 +248,9 @@ export default defineConfig({
|
|
|
248
248
|
|
|
249
249
|
包含了所有可用的构建预设对应的构建配置。可以通过 `buildPreset` 所支持的字符串来使用构建配置,也可以使用这些字符串的下划线命令的方式。下面是两种方式的使用示例:
|
|
250
250
|
|
|
251
|
+
- 使用 `buildPreset` 所支持的字符串。
|
|
251
252
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
```ts modern.config.ts
|
|
253
|
+
```ts title="modern.config.ts"
|
|
255
254
|
import { defineConfig } from '@modern-js/module-tools';
|
|
256
255
|
|
|
257
256
|
export default defineConfig({
|
|
@@ -260,25 +259,10 @@ export default defineConfig({
|
|
|
260
259
|
},
|
|
261
260
|
});
|
|
262
261
|
```
|
|
263
|
-
---
|
|
264
262
|
|
|
265
|
-
使用 `buildPreset`
|
|
263
|
+
- 使用 `buildPreset` 所支持的字符串的下划线命名方式。
|
|
266
264
|
|
|
267
|
-
```ts modern.config.ts
|
|
268
|
-
import { defineConfig } from '@modern-js/module-tools';
|
|
269
|
-
|
|
270
|
-
export default defineConfig({
|
|
271
|
-
buildPreset({ preset }) {
|
|
272
|
-
return preset['npm-library'];
|
|
273
|
-
},
|
|
274
|
-
});
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
使用 `buildPreset` 所支持的字符串的下划线命名方式。
|
|
280
|
-
|
|
281
|
-
```ts modern.config.ts
|
|
265
|
+
```ts title="modern.config.ts"
|
|
282
266
|
import { defineConfig } from '@modern-js/module-tools';
|
|
283
267
|
|
|
284
268
|
export default defineConfig({
|
|
@@ -288,8 +272,6 @@ export default defineConfig({
|
|
|
288
272
|
});
|
|
289
273
|
```
|
|
290
274
|
|
|
291
|
-
</CH.Spotlight>
|
|
292
|
-
|
|
293
275
|
#### `extendPreset`
|
|
294
276
|
|
|
295
277
|
类型:`Function`
|
|
@@ -300,7 +282,7 @@ export default defineConfig({
|
|
|
300
282
|
|
|
301
283
|
例如在 `'npm-library'` 构建预设的基础上增加 `define` 配置:
|
|
302
284
|
|
|
303
|
-
```ts modern.config.ts
|
|
285
|
+
```ts title="modern.config.ts"
|
|
304
286
|
import { defineConfig } from '@modern-js/module-tools';
|
|
305
287
|
|
|
306
288
|
export default defineConfig({
|
|
@@ -969,7 +969,7 @@ const designSystem = {
|
|
|
969
969
|
|
|
970
970
|
要覆盖默认配置中的选项,请在 `designSystem` 中添加要覆盖的属性:
|
|
971
971
|
|
|
972
|
-
```js modern.config.ts
|
|
972
|
+
```js title="modern.config.ts"
|
|
973
973
|
import { defineConfig } from '@modern-js/module-tools';
|
|
974
974
|
|
|
975
975
|
const designSystem = {
|
|
@@ -999,7 +999,7 @@ export default defineConfig({
|
|
|
999
999
|
|
|
1000
1000
|
例如,如果您想添加一个额外的断点但保留现有的断点,则可以扩展 `screens` 属性:
|
|
1001
1001
|
|
|
1002
|
-
```js modern.config.ts
|
|
1002
|
+
```js title="modern.config.ts"
|
|
1003
1003
|
import { defineConfig } from '@modern-js/module-tools';
|
|
1004
1004
|
|
|
1005
1005
|
const designSystem = {
|
|
@@ -1018,7 +1018,7 @@ export default defineConfig({
|
|
|
1018
1018
|
|
|
1019
1019
|
您当然可以覆盖默认主题的某些部分,并在同一配置中扩展默认主题的其他部分:
|
|
1020
1020
|
|
|
1021
|
-
```js modern.config.ts
|
|
1021
|
+
```js title="modern.config.ts"
|
|
1022
1022
|
import { defineConfig } from '@modern-js/module-tools';
|
|
1023
1023
|
|
|
1024
1024
|
const designSystem = {
|
|
@@ -1048,7 +1048,7 @@ export default defineConfig({
|
|
|
1048
1048
|
|
|
1049
1049
|
例如,您可以在 `fill` 配置上通过引用 `theme('colors')` 为调色板中的每种颜色生成 `fill` utilities。
|
|
1050
1050
|
|
|
1051
|
-
```js modern.config.ts
|
|
1051
|
+
```js title="modern.config.ts"
|
|
1052
1052
|
import { defineConfig } from '@modern-js/module-tools';
|
|
1053
1053
|
|
|
1054
1054
|
const designSystem = {
|
|
@@ -1069,7 +1069,7 @@ export default defineConfig({
|
|
|
1069
1069
|
|
|
1070
1070
|
如果出于任何原因想要引用默认配置中的值,则可以从 `tailwindcss/defaultTheme` 导入它。一个有用的示例是,如果要将添加默认配置提供的字体中某一个字体:
|
|
1071
1071
|
|
|
1072
|
-
```js modern.config.ts
|
|
1072
|
+
```js title="modern.config.ts"
|
|
1073
1073
|
import { defineConfig } from '@modern-js/module-tools';
|
|
1074
1074
|
|
|
1075
1075
|
const defaultTheme = require('tailwindcss/defaultTheme');
|
|
@@ -1134,7 +1134,7 @@ const designSystem = {
|
|
|
1134
1134
|
|
|
1135
1135
|
另一个示例是在自定义插件中添加新的属性以进行引用。例如,如果您为项目编写了渐变插件,则可以向该插件引用的主题对象添加渐变属性:
|
|
1136
1136
|
|
|
1137
|
-
```js modern.config.ts
|
|
1137
|
+
```js title="modern.config.ts"
|
|
1138
1138
|
import { defineConfig } from '@modern-js/module-tools';
|
|
1139
1139
|
|
|
1140
1140
|
const designSystem = {
|
|
@@ -25,7 +25,7 @@ sidebar_position: 4
|
|
|
25
25
|
|
|
26
26
|
使用 npm 上的插件,需要通过包管理器安装插件,并通过 import 引入。
|
|
27
27
|
|
|
28
|
-
```js modern.config.ts
|
|
28
|
+
```js title="modern.config.ts"
|
|
29
29
|
import { myPlugin } from 'my-plugin';
|
|
30
30
|
|
|
31
31
|
export default defineConfig({
|
|
@@ -37,7 +37,7 @@ export default defineConfig({
|
|
|
37
37
|
|
|
38
38
|
使用本地代码仓库中的插件,直接通过相对路径 import 引入即可。
|
|
39
39
|
|
|
40
|
-
```js modern.config.ts
|
|
40
|
+
```js title="modern.config.ts"
|
|
41
41
|
import { myPlugin } from './plugins/myPlugin';
|
|
42
42
|
|
|
43
43
|
export default defineConfig({
|
|
@@ -49,7 +49,7 @@ export default defineConfig({
|
|
|
49
49
|
|
|
50
50
|
如果插件提供了一些自定义的配置项,你可以通过插件函数的参数传入配置。
|
|
51
51
|
|
|
52
|
-
```js modern.config.ts
|
|
52
|
+
```js title="modern.config.ts"
|
|
53
53
|
import { myPlugin } from 'my-plugin';
|
|
54
54
|
|
|
55
55
|
export default defineConfig({
|