@yuo/vite-plugin-style-import
@yuo/vite依赖插件
该插件可按需导入组件库样式
为什么只按需引入样式
由于 vite 本身已按需导入了组件库,因此仅样式不是按需导入的,因此只需按需导入样式即可。
安装
node version: >=16.0.0
@yuo/vite version: >=1.0.0
npm i @yuo/vite-plugin-style-import -D
效果
import { Button } from 'ant-design-vue';
↓ ↓ ↓ ↓ ↓ ↓
import { Button } from 'ant-design-vue';
import 'ant-design-vue/lib/button/style/index.js';
import { ElButton } from 'element-plus';
↓ ↓ ↓ ↓ ↓ ↓
import { Button } from 'element-plus';
import 'element-plus/lib/theme-chalk/el-button.css`;
// prod
import Button from 'element-plus/lib/el-button';
import 'element-plus/lib/theme-chalk/el-button.css';
使用
import { UserConfigExport } from 'vite'
import styleImport, {
AndDesignVueResolve,
VantResolve,
ElementPlusResolve,
NutuiResolve,
AntdResolve,
} from '@yuo/vite-plugin-style-import'
export default (): UserConfigExport => {
return {
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true,
},
},
},
plugins: [
styleImport({
resolves:[
AndDesignVueResolve(),
VantResolve(),
ElementPlusResolve(),
NutuiResolve(),
AntdResolve(),]
libs: [
{
libraryName: 'ant-design-vue',
esModule: true,
resolveStyle: (name) => {
return `ant-design-vue/es/${name}/style/index`
},
},
],
}),
],
}
}
配置说明
| include | string 、 RegExp 、(string 、RegExp)[] 、null 、undefined | ['**/*.js', '**/*.ts', '**/*.tsx', '**/*.jsx'] | 包含的文件格式 |
| exclude | string 、RegExp 、 (string 、 RegExp)[] 、 null 、 undefined | 'node_modules/**' | 排除的的文件/文件夹 |
| libs | Lib[] | - | 要导入的库列表 |
| resolves | Lib[] | - | 要导入的库列表 (由插件内置) |
Lib
{
importTest?: Regexp;
libraryName: string;
resolveStyle: (name: string) => string | string[];
libraryNameChangeCase?: LibraryNameChangeCase;
esModule?: boolean;
ensureStyleFile?: boolean;
resolveComponent?: (name: string) => string;
transformComponentImportName?: (name: string) => string;
}
export type LibraryNameChangeCase = ChangeCaseType | ((name: string) => string);
export type ChangeCaseType =
| 'camelCase'
| 'capitalCase'
| 'constantCase'
| 'dotCase'
| 'headerCase'
| 'noCase'
| 'paramCase'
| 'pascalCase'
| 'pathCase'
| 'sentenceCase'
| 'snakeCase';
License
MIT