7
7
8
8
import TerserPlugin from 'terser-webpack-plugin' ;
9
9
import CssMinimizerPlugin from 'css-minimizer-webpack-plugin' ;
10
- import { importSwcJsMinifierOptions } from './importFaster' ;
10
+ import {
11
+ importSwcJsMinimizerOptions ,
12
+ importLightningCssMinimizerOptions ,
13
+ } from './importFaster' ;
11
14
import type { CustomOptions , CssNanoOptions } from 'css-minimizer-webpack-plugin' ;
12
15
import type { WebpackPluginInstance } from 'webpack' ;
13
16
import type { CurrentBundler , FasterConfig } from '@docusaurus/types' ;
14
17
15
18
export type MinimizersConfig = {
16
- faster : Pick < FasterConfig , 'swcJsMinimizer' > ;
19
+ faster : Pick < FasterConfig , 'swcJsMinimizer' | 'lightningCssMinimizer' > ;
17
20
currentBundler : CurrentBundler ;
18
21
} ;
19
22
@@ -31,9 +34,11 @@ function getTerserParallel() {
31
34
return terserParallel ;
32
35
}
33
36
34
- async function getJsMinimizer ( { faster} : MinimizersConfig ) {
37
+ async function getJsMinimizer ( {
38
+ faster,
39
+ } : MinimizersConfig ) : Promise < WebpackPluginInstance > {
35
40
if ( faster . swcJsMinimizer ) {
36
- const terserOptions = await importSwcJsMinifierOptions ( ) ;
41
+ const terserOptions = await importSwcJsMinimizerOptions ( ) ;
37
42
return new TerserPlugin ( {
38
43
parallel : getTerserParallel ( ) ,
39
44
minify : TerserPlugin . swcMinify ,
@@ -69,7 +74,21 @@ async function getJsMinimizer({faster}: MinimizersConfig) {
69
74
} ) ;
70
75
}
71
76
72
- function getAdvancedCssMinifier ( ) {
77
+ async function getLightningCssMinimizer ( ) : Promise < WebpackPluginInstance > {
78
+ return new CssMinimizerPlugin ( {
79
+ minify : CssMinimizerPlugin . lightningCssMinify ,
80
+ minimizerOptions : await importLightningCssMinimizerOptions ( ) ,
81
+ } ) ;
82
+ }
83
+
84
+ async function getCssNanoMinimizer ( ) : Promise < WebpackPluginInstance > {
85
+ // This is an historical env variable to opt-out of the advanced minimizer
86
+ // Sometimes there's a bug in it and people are happy to disable it
87
+ const useSimpleCssMinifier = process . env . USE_SIMPLE_CSS_MINIFIER === 'true' ;
88
+ if ( useSimpleCssMinifier ) {
89
+ return new CssMinimizerPlugin ( ) ;
90
+ }
91
+
73
92
// Using the array syntax to add 2 minimizers
74
93
// see https://github.com/webpack-contrib/css-minimizer-webpack-plugin#array
75
94
return new CssMinimizerPlugin < [ CssNanoOptions , CustomOptions ] > ( {
@@ -101,21 +120,18 @@ function getAdvancedCssMinifier() {
101
120
} ) ;
102
121
}
103
122
104
- function getCssMinimizer ( ) : WebpackPluginInstance {
105
- // This is an historical env variable to opt-out of the advanced minifier
106
- // Sometimes there's a bug in it and people are happy to disable it
107
- const useSimpleCssMinifier = process . env . USE_SIMPLE_CSS_MINIFIER === 'true' ;
108
- if ( useSimpleCssMinifier ) {
109
- return new CssMinimizerPlugin ( ) ;
110
- } else {
111
- return getAdvancedCssMinifier ( ) ;
112
- }
123
+ async function getCssMinimizer (
124
+ params : MinimizersConfig ,
125
+ ) : Promise < WebpackPluginInstance > {
126
+ return params . faster . lightningCssMinimizer
127
+ ? getLightningCssMinimizer ( )
128
+ : getCssNanoMinimizer ( ) ;
113
129
}
114
130
115
131
async function getWebpackMinimizers (
116
132
params : MinimizersConfig ,
117
133
) : Promise < WebpackPluginInstance [ ] > {
118
- return Promise . all ( [ getJsMinimizer ( params ) , getCssMinimizer ( ) ] ) ;
134
+ return Promise . all ( [ getJsMinimizer ( params ) , getCssMinimizer ( params ) ] ) ;
119
135
}
120
136
121
137
async function getRspackMinimizers ( {
0 commit comments