@zougt/theme-css-extract-webpack-plugin
v1.4.0
Published
extracts theme CSS into separate files
Downloads
27
Readme
@zougt/theme-css-extract-webpack-plugin
这个 webpack 插件与@zougt/some-loader-utils结合轻松实现在线动态主题,使用文档直接查看@zougt/some-loader-utils
Options
| Name | Type | Default | Description |
| :-----------------------------------------------------: | :----------: | :----------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| multipleScopeVars
| {Object[]}
| []
| 与@zougt/less-loader和@zougt/sass-loader的multipleScopeVars
对应即可 |
| extract
| {Boolean}
| true
| 是否提取 |
| outputDir
| {String}
| /
| 提取的 css 文件存放目录 |
| removeCssScopeName
| {Boolean}
| false
| 是否将提取的 css 文件内移除对应的权重类名 |
| customThemeCssFileName
| {Function}
| null
| 自定义 css 文件名的函数 |
| defaultScopeName
| {String}
| multipleScopeVars[0].scopeName | 默认使用主题名称 |
| themeLinkTagId
| {String}
| theme-link-tag
| 在 html 中使用主题 css 文件的 link 标签的 id |
| themeLinkTagAppend
| {Boolean}
| false
| 是否在其他 css 之后插入主题 css 文件的 link 标签 |
| customLinkHref
| {Function}
| null
| 预设主题模式,抽取 css 后,自定义默认添加到 html 的 link 的 href |
multipleScopeVars
Type: Object[]
Default: []
与@zougt/less-loader和@zougt/sass-loader的multipleScopeVars
对应
multipleScopeVars[].scopeName
Type: String
extract
Type: Boolean
Default: true
是否提取 ,提取主题 css 文件的操作只在 webpackConfig.mode:"production"才生效,但@zougt/theme-css-extract-webpack-plugin
另外一个功能是defaultScopeName
与html-webpack-plugin
结合在 html 文件的 html 标签添加默认的 className,在开发模式需要
通常这样使用:
new ThemeCssExtractWebpackPlugin({
multipleScopeVars,
extract: process.env.NODE_ENV === 'production',
});
outputDir
Type: String
Default: /
提取的 css 文件存放目录
removeCssScopeName
Type: Boolean
Default: false
是否将提取的 css 文件内移除对应的权重类名
多主题编译示例中移除之后的 css 内容:
theme-default.css
.un-btn {
background-color: #0081ff;
}
theme-mauve.css
.un-btn {
background-color: #9c26b0;
}
customThemeCssFileName
Type: Function
Default: null
自定义 css 文件名的函数
new ThemeCssExtractWebpackPlugin({
multipleScopeVars,
extract: process.env.NODE_ENV === 'production',
customThemeCssFileName: (scopeName) => {
return `${scopeName}-antd`;
},
});
提取的 css 文件名:
├── /dist/
│ ├── theme-default-antd.css
│ └── theme-mauve-antd.css
defaultScopeName
Type: String
Default: ""
defaultScopeName
为空时会默认取自multipleScopeVars[0].scopeName
默认使用主题的 scopeName,使用了html-webpack-plugin
的钩子在 html 文件的 html 标签添加默认的 className(当removeCssScopeName
为 false 有效),并且当extract
为 true 和存在themeLinkTagId
时,会在 html 中插入使用默认主题 css 文件的 link 标签
<!DOCTYPE html>
<html class="theme-default">
<head>
<meta charset="utf-8" />
<title></title>
<link href="/theme-default.css" rel="stylesheet" id="theme-link-tag" />
<link href="/static/css/style.8445032bddc5.css" rel="stylesheet" />
</head>
<body></body>
</html>
themeLinkTagId
Type: String
Default: theme-link-tag
在 html 中使用主题 css 文件的 link 标签的 id
当themeLinkTagId
为 false 时即不会生成对应的 link 标签
themeLinkTagAppend
Type: Boolean
Default: false
是否在其他 css 之后插入主题 css 文件的 link 标签