vue3+ts组件库发布npm并实现按需引入

本文介绍了如何创建一个Vue3+TS组件库,并实现通过npm按需加载。通过两种打包方案,详细讲解了从创建项目、设置打包命令到发布到npm的全过程。特别是按需加载的实现,利用babel-plugin-import插件简化了引入组件的步骤。

这里分两种情况来考虑打包我们的组件库:

  1. 整体打包:适宜包体积较小且使用时对于按需加载要求不是很高的项目(实现非常简单,无法按需加载)
  2. 按需加载打包:适宜包体积比较大或者子模块比较多,使用时需要使用到按需加载(实现相对复杂,能按需加载)

综上,我们最终采用第二种方式按需加载,这里对第一种方案也做一下介绍及实现

创建一个空项目

将组件相关代码移入新项目中,并保证组件能正常的使用

方案一

创建打包命令及入口文件

3、新建packages/index.ts

注册并导出所有组件

import BaseForm from '../src/components/BaseForm/index'
import BaseInput from '../src/components/BaseForm/components/BaseInput'
import BaseNumber from '../src/components/BaseForm/components/BaseNumber'
import BaseSelect from '../src/components/BaseForm/components/BaseSelect'
import BaseRadio from '../src/components/BaseForm/components/BaseRadio'
import BaseCheckbox from '../src/components/BaseForm/components/BaseCheckbox'
import BaseDate from '../src/components/BaseForm/components/BaseDate'
import BaseDateRange from '../src/components/BaseForm/components/BaseDateRange'
import BaseNumberRange from '../src/components/BaseForm/components/BaseNumberRange'
import BaseCascader from '../src/components/BaseForm/components/BaseCascader'
import BaseSwitch from '../src/components/BaseForm/components/BaseSwitch'
import BaseText from '../src/components/BaseForm/components/BaseText'
import BaseTable from '../src/components/BaseTable/index'
const components = [BaseForm, BaseTable, BaseInput, BaseNumber, BaseSelect, BaseRadio, BaseCheckbox, BaseDate, BaseDateRange, BaseNumberRange, BaseCascader, BaseSwitch, BaseText] // 组件集合
// const components = [BaseForm, BaseInput] // 组件集合
const install = function(Vue) {
  // 注册所有的组件
  components.forEach((item) => {
    Vue.component(item.name, item)
  })
}
// 如果是直接引入文件,就不用调用Vue.use()
if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue)
}
export default { install } // 必须要有导出
export {
  BaseForm as bsForm,
  BaseTable as bsTable,
  BaseInput as bsInput,
  BaseNumber as bsNumber,
  BaseSelect as bsSelect,
  BaseRadio as bsRadio,
  BaseCheckbox as bsCheckbox,
  BaseDate as bsDate,
  BaseDateRange as bsDateRange,
  BaseNumberRange as bsNumberRange,
  BaseCascader as bsCascader,
  BaseSwitch as bsSwitch,
  BaseText as bsText,
}

4、修改package.json

### 如何在 Vue 3使用 TypeScript 和 Vite 按引入 Vant 组件 #### 安装依赖包 为了实现加载 Vant 组件,要安装 `unplugin-vue-components` 和 `unplugin-auto-import` 插件来自动导入组件和 API。此外还要安装 `@vant/eslint-config` 来确保代码风格的一致性。 ```bash npm install unplugin-vite-plugin-vue-components vite-plugin-style-import --save-dev ``` #### 配置 Vite 编辑 `vite.config.ts` 文件以支持按加载: ```typescript import { defineConfig } from &#39;vite&#39; import vue from &#39;@vitejs/plugin-vue&#39; import Components from &#39;unplugin-vue-components/vite&#39; import AutoImport from &#39;unplugin-auto-import/vite&#39; import { VantResolver } from &#39;unplugin-vue-components/resolvers&#39; export default defineConfig({ plugins: [ vue(), Components({ resolvers: [VantResolver()] }), AutoImport({ imports: [&#39;vue&#39;, &#39;vue-router&#39;], dts: &#39;src/auto-imports.d.ts&#39;, eslintrc: { enabled: true, filepath: &#39;./.eslintrc-auto-import.json&#39;, globalsPropValue: true } }) ] }) ``` 通过上述配置可以简化开发流程减少打包体积[^2]。 #### 使用 Vant 组件 现在可以在任何 `.vue` 文件里直接使用 Vant 提供的各种 UI 组件而无手动注册它们。例如要使用 Button 组件只要这样写即可: ```html <template> <van-button type="primary">按钮</van-button> </template> <script setup lang="ts"> // 不再要显式导入 van-button 或其他常用组件 </script> ``` 这种做法不仅提高了编码效率还降低了维护成本因为不再要关心具体哪些页面用了什么控件[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值