vite-plugin-auto-inject-css
v1.0.2
Published
自动注入对应的 Style 文件及 UI 库组件样式,无需关心样式引入问题,助力于组件库开发 💪
Downloads
50
Maintainers
Readme
为什么要开发这款插件!!
import { ElButton } from 'element-plus';
↓ ↓ ↓ ↓ ↓ ↓
import 'element-plus/theme-chalk/el-button.css';
import { ElButton } from 'element-plus';
📦 安装
$ npm i vite-plugin-auto-inject-css -D
$ yarn add vite-plugin-auto-inject-css -D
$ pnpm add vite-plugin-auto-inject-css -D
API
| 属性 | 描述 | 类型 | 默认值 |
| --------- | --------------------- | ----------------------------------- | ------------ |
| mode | 以什么样式的模式注入. | dependencies
/ peerDependencies
| dependencies |
| baseCss | 是否注入基础样式. | boolean
| true |
| resolvers | 要注入的库列表. | ElementPlusResolver[]
| [] |
Resolver
| 属性 | 描述 | 类型 | 默认值 |
| ------ | --------------- | --------------------------------------- | ------ |
| inject | 自定义注入样式. | (name?: string) => string \| string[]
| - |
🔨 使用案例
import { defineConfig, loadEnv } from 'vite'
import Vue from '@vitejs/plugin-vue'
import {
ElementPlusResolver,
createAutoInjectCssPlugin,
} from 'vite-plugin-auto-inject-css'
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd())
return {
server: {
open: true,
host: true,
https: !!env.https,
},
plugins: [
Vue(),
createAutoInjectCssPlugin({
resolvers: [ElementPlusResolver()],
}),
],
}
})
↓ ↓ ↓ ↓ ↓ ↓ 📚
dist
├─ assets
│ ├─ index-Ca3M0RQA.js # js文件
│ ├─ index-CwY391-e.css # 按需打包的UI库组件样式
├─ index.html # 入口 html
库模式 🚀
import { defineConfig } from 'vite'
import Vue from '@vitejs/plugin-vue'
import {
ElementPlusResolver,
createAutoInjectCssPlugin,
} from 'vite-plugin-auto-inject-css'
export default defineConfig(() => {
return {
build: {
target: 'es2018',
emptyOutDir: true,
copyPublicDir: true,
lib: {
entry: './src/App.vue',
},
rollupOptions: {
external: ['vue', 'element-plus'],
output: [
{
format: 'es',
dir: 'es',
},
{
format: 'cjs',
dir: 'lib',
exports: 'named',
},
],
},
},
plugins: [
Vue(),
createAutoInjectCssPlugin({
mode: 'peerDependencies',
resolvers: [ElementPlusResolver()],
}),
],
}
})
↓ ↓ ↓ ↓ ↓ ↓
import { ElButton } from 'element-plus';
↓ ↓ ↓ ↓ ↓ ↓
import 'element-plus/theme-chalk/base.css';
import 'element-plus/theme-chalk/el-button.css';
import { ElButton } from 'element-plus';
const { ElButton } = require('element-plus')
↓ ↓ ↓ ↓ ↓ ↓
'use strict';
require('element-plus/theme-chalk/base.css');
require('element-plus/theme-chalk/el-button.css');
const { ElButton } = require('element-plus');
如果当前 style 不属于 UI 库自身的,那么会在输出目录下生成 style 文件并自动注入在对应的 chunk 中.
↓ ↓ ↓ ↓ ↓ ↓
import './App.css'
或
require('./App.css')
自定义注入样式 🚀
import { defineConfig } from 'vite'
import {
ElementPlusResolver,
createAutoInjectCssPlugin,
} from 'vite-plugin-auto-inject-css'
export default defineConfig(() => {
return {
plugins: [
createAutoInjectCssPlugin({
mode: 'peerDependencies',
resolvers: [
ElementPlusResolver({
inject: (name) => `element-plus/theme-chalk/${name}.css`,
}),
],
}),
],
}
})
🍵 捐赠
如果您正在使用这个项目或者喜欢这个项目,可以通过以下方式支持我:
- Star、Fork、Watch 一键三连 🚀