Skip to content

Latest commit

 

History

History
190 lines (140 loc) · 4.6 KB

README.zh_CN.md

File metadata and controls

190 lines (140 loc) · 4.6 KB

vite-plugin-style-import

中文 | English

npm node

该插件可按需导入组件库样式

为什么只按需引入样式

由于 vite 本身已按需导入了组件库,因此仅样式不是按需导入的,因此只需按需导入样式即可。

安装 (yarn or npm)

node version: >=12.0.0

vite version: >=2.0.0

yarn add vite-plugin-style-import -D

or

npm i 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';

             

// dev
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';

使用

  • vite.config.ts 中的配置插件
import { UserConfigExport } from 'vite'
import {
  createStyleImportPlugin,
  AndDesignVueResolve,
  VantResolve,
  ElementPlusResolve,
  NutuiResolve,
  AntdResolve,
} from 'vite-plugin-style-import'

export default (): UserConfigExport => {
  return {
    // 1. 如果使用的是ant-design 系列的 需要配置这个
    // 2. 确保less安装在依赖 `yarn add less -D`
    css: {
      preprocessorOptions: {
        less: {
          javascriptEnabled: true,
        },
      },
    },
    plugins: [
      createStyleImportPlugin({
        resolves:[
          AndDesignVueResolve(),
          VantResolve(),
          ElementPlusResolve(),
          NutuiResolve(),
          AntdResolve(),]
        libs: [
          // 如果没有你需要的resolve,可以在lib内直接写,也可以给我们提供PR
          {
            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

{
  // 符合该规则的导入名字才会生效,默认null,可以同时应用于resolveComponent和resolveStyle
  importTest?: Regexp;
  // 需要导入的库名
  libraryName: string;

  // 自定义样式转换
  resolveStyle: (name: string) => string  string[];

  // 导出的名称转换格式
  // default: paramCase
  libraryNameChangeCase?: LibraryNameChangeCase;


  // 如果样式文件不是.css后缀。需要开启此选项
  // default:false
  esModule?: boolean;


   /**
   * 可能有些组件库不是很标准化。
   * 您可以打开此选项以忽略以确定文件是否存在。 导入不存在的CSS文件时防止错误。
   * 开启后性能可能会略有下降,但影响不大
   * default: false
   */
  ensureStyleFile?: boolean;
}

// LibraryNameChangeCase

export type LibraryNameChangeCase = ChangeCaseType | ((name: string) => string);

export type ChangeCaseType =
  | 'camelCase'
  | 'capitalCase'
  | 'constantCase'
  | 'dotCase'
  | 'headerCase'
  | 'noCase'
  | 'paramCase'
  | 'pascalCase'
  | 'pathCase'
  | 'sentenceCase'
  | 'snakeCase';

示例

运行示例

pnpm install
cd packages/playground/basic
pnpm run dev
pnpm run build

示例项目

Vben Admin

License

MIT