npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@deppon/deppon-ui

v2.2.1

Published

Frontend UI component library

Downloads

639

Readme

@deppon/deppon-ui

UI 组件库,基于 Element Plus,适用于 Vue 3 项目。

功能

提供 Element Plus 组件的按需导出,支持按需引入。

使用方式

方式一:从主入口引入

import { Button, Input, Form } from '@deppon/deppon-ui';

1.0.20 起,同时导出了带有 El 前缀的组件别名,例如:

import { ElHeader, Header } from '@deppon/deppon-ui';
// ElHeader 可直接配合 <el-header> 使用,Header 仍兼容旧写法

方式二:按需引入(推荐)

import Button from '@deppon/deppon-ui/es/Button';
import Input from '@deppon/deppon-ui/es/Input';

方式三:使用图标(支持按需引入)

// 方式 1:命名导入(推荐,支持 tree-shaking)
import { Fold, Expand, Document, Menu } from '@deppon/deppon-ui/icons-vue';

// 方式 2:子路径导入(也支持 tree-shaking)
import Fold from '@deppon/deppon-ui/icons-vue/Fold';
import Expand from '@deppon/deppon-ui/icons-vue/Expand';

说明:两种导入方式都支持 tree-shaking,打包工具会自动移除未使用的图标。命名导入方式更简洁,推荐使用。

方式四:使用 unplugin-element-plus 自动导入样式(推荐)

推荐:使用 unplugin-element-plus 可以自动识别模板中的 el-* 标签并自动导入对应的样式。

步骤 1:安装依赖

npm install -D unplugin-element-plus

步骤 2:配置 Vite

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import ElementPlus from 'unplugin-element-plus/vite';

export default defineConfig({
    plugins: [
        vue(),
        // 使用 unplugin-element-plus 自动导入 Element Plus 样式
        ElementPlus({
            // 使用 CSS 样式(默认)
            useSource: false,
        }),
    ],
});

步骤 3:在模板中使用(无需手动导入样式)

<template>
    <el-button>按钮</el-button>
    <el-input v-model="value" />
    <el-table :data="tableData">
        <el-table-column prop="name" label="名称" />
    </el-table>
</template>

<script setup>
import { ElButton, ElInput, ElTable, ElTableColumn } from '@deppon/deppon-ui';
// 无需手动导入样式,unplugin-element-plus 会自动处理
const value = ref('');
const tableData = ref([]);
</script>

说明

  • unplugin-element-plus 会自动检测模板中的 el-* 标签,并自动导入对应的样式
  • 这是 Element Plus 官方推荐的手动导入方式
  • 支持按需导入,只会打包你实际使用的组件样式
  • 参考文档:Element Plus 手动导入

可用组件

基础组件

  • Button - 按钮(扩展了防抖、节流、自动加载状态、权限控制等功能)
  • Link - 链接
  • Icon - 图标
  • Divider - 分割线
  • Space - 间距
  • Scrollbar - 滚动条
  • Row - 行(栅格系统)
  • Col - 列(栅格系统)

表单组件

  • Input - 输入框
  • InputNumber - 数字输入框
  • Radio - 单选框
  • Checkbox - 复选框
  • Switch - 开关
  • Select - 选择器
  • Cascader - 级联选择器
  • Transfer - 穿梭框
  • DatePicker - 日期选择器
  • TimePicker - 时间选择器
  • Upload - 上传
  • Rate - 评分
  • ColorPicker - 颜色选择器
  • Form - 表单
  • Slider - 滑块
  • Autocomplete - 自动完成

数据展示

  • Table - 表格
  • Tag - 标签
  • Progress - 进度条
  • Tree - 树形控件
  • Pagination - 分页
  • Badge - 徽章
  • Avatar - 头像
  • Card - 卡片
  • Collapse - 折叠面板
  • Timeline - 时间线
  • Empty - 空状态
  • Descriptions - 描述列表
  • Result - 结果
  • Statistic - 统计数值
  • Skeleton - 骨架屏
  • Image - 图片
  • ImageViewer - 图片预览
  • Calendar - 日历
  • Carousel - 走马灯

反馈组件

  • Alert - 警告
  • Loading - 加载
  • Message - 消息提示
  • MessageBox - 消息弹框
  • Notification - 通知
  • Popover - 弹出框
  • Tooltip - 文字提示
  • Dialog - 对话框
  • Drawer - 抽屉
  • Popconfirm - 气泡确认框

导航组件

  • NavMenu - 导航菜单
  • Tabs - 标签页
  • Breadcrumb - 面包屑
  • Dropdown - 下拉菜单
  • Steps - 步骤条
  • Affix - 固钉
  • Backtop - 回到顶部

布局组件

  • Container - 布局容器
  • Header - 顶部容器
  • Aside - 侧边栏容器
  • Main - 主区域容器
  • Footer - 底部容器

其他

  • InfiniteScroll - 无限滚动
  • Watermark - 水印
  • Tour - 漫游式引导

Button 组件扩展功能

Button 组件在 Element Plus 的基础上扩展了以下功能:

防抖和节流

<template>
    <!-- 防抖:500ms 内只执行最后一次点击 -->
    <Button :debounce="500" @click="handleClick">防抖按钮</Button>

    <!-- 节流:500ms 内最多执行一次点击 -->
    <Button :throttle="500" @click="handleClick">节流按钮</Button>
</template>

自动加载状态

当点击事件返回 Promise 时,自动管理 loading 状态:

<template>
    <Button :auto-loading="true" :on-click="handleAsyncClick"> 提交 </Button>
</template>

<script setup>
const handleAsyncClick = async () => {
    // 返回 Promise,按钮会自动显示 loading 状态
    await fetch('/api/submit');
};
</script>

权限控制

<template>
    <!-- 当 permission 为 false 时,按钮自动禁用 -->
    <Button :permission="hasPermission">操作按钮</Button>
</template>

组合使用

<template>
    <Button :throttle="1000" :auto-loading="true" :permission="userCanSubmit" :on-click="handleSubmit">
        提交订单
    </Button>
</template>