Vue3 + Vite 构建组件库发布到 npm

你有构建完组件库后,因为不知道如何发布到 npm 的烦恼吗?本教程手把手教你用 Vite 构建组件库发布到 npm

搭建项目

  1. 这里我们使用 Vite 初始化项目,执行命令:
pnpm create vite my-vue-app --template vue
  1. 这里以我的项目 vue3-xmw-table 为例

调整目录结构

  1. 首先需要创建一个 packages 目录,用来存放组件
  2. src 目录改为 examples 用作示例
  3. 启动项目的时候,默认入口文件是 src/main.js,将 src 目录改为 examples 之后,就需要重新配置入口文件,在根目录下创建一个 vue.config.js 文件
  // vue.config.js
  module.exports = {
    // 将 examples 目录添加为新的页面
    pages: {
      index: {
        // page 的入口
        entry: 'examples/main.ts',
        // 模板来源
        template: 'public/index.html',
        // 输出文件名
        filename: 'index.html'
      }
    }
  }
  1. 修改根目录入口文件 index.html 中的 main.ts 引入路劲
  <script type="module" src="/examples/main.ts"></script>
  1. 完整的目录结构如下:
    在这里插入图片描述

组件开发

  1. 之前我们创建的 packages 目录,用来存放组件

  2. 该目录下存放每个组件单独的开发目录,和一个 index.js 整合所有组件,并对外导出

  3. 每个组件都应该归类于单独的目录下,包含其组件源码目录 src,和 index.js 便于外部引用

  4. 这里以组件 xmwTable 为例,完整的 packages 目录结构如下:
    在这里插入图片描述

  5. xmwTable/src/main.vue 就是组件的入口文件,这里有一点要非常注意:

需要注意的是,组件必须声明 name,这个 name 就是组件的标签

<script lang="ts">
  export default {
    name: "vue3-xmw-table", //这个⾮常重要,就是未来你放到其他项⽬中,组件标签的名字,⽐如:<vue3-xmw-table></vue3-xmw-table>
  };
</script>

整合并导出组件

  1. 编辑 packages/xmwTable/index.ts,实现组件的导出
// 导入组件,组件必须声明 name
import XmwTable from './src/main.vue'

// 为组件添加 install 方法,用于按需引入
XmwTable.install = function (Vue: any) {
    Vue.component(XmwTable.name, XmwTable)
}

export default XmwTable
  1. 编辑 packages/index.ts 文件,实现组件的全局注册
// packages / index.js

// 导入单个组件
import XmwTable from './xmwTable/index'

// 以数组的结构保存组件,便于遍历
const components = [
   XmwTable
]

// 定义 install 方法
const install = function (Vue: any) {
   if (install.installed) return
   install.installed = true
   // 遍历并注册全局组件
   components.map(component => {
       Vue.component(component.name, component)
   })
}

if (typeof window !== 'undefined' && window.Vue) {
   install(window.Vue)
}

export default {
   // 导出的对象必须具备一个 install 方法
   install,
   // 组件列表
   ...components
}

编写 package.json 文件

  1. package.json 文件里面有很多字段要填写,否则不能正确发布。最重要的是以下几个:
    • name: 包名,该名字是唯一的。可在 npm 官网搜索名字,如果存在则需换个名字。
    • version: 版本号,不能和历史版本号相同。
    • files: 配置需要发布的文件。
    • main: 入口文件,默认为 index.js,这里改为 dist/vue3-xmw-table.umd.js
    • module: 模块入口,这里改为 dist/vue3-xmw-table.es.js
  2. 完整的 package.json 如下:
{
 "name": "vue3-xmw-table",
 "version": "1.1.2",
 "main": "dist/vue3-xmw-table.umd.js",
 "module": "dist/vue3-xmw-table.es.js",
 "types": "vue3-xmw-table.d.ts",
 "files": [
   "dist/*",
   "vue3-xmw-table.d.ts"
 ],
 "private": false,
 "author": {
   "name": "baiwumm",
   "email": "843348394@qq.com"
 },
 "license": "ISC",
 "scripts": {
   "dev": "vite",
   "build": "vite build",
   "preview": "vite preview"
 },
 "dependencies": {
   "@types/node": "^17.0.6",
   "element-plus": "^1.3.0-beta.1",
   "vue": "^3.2.26",
   "vue-router": "^4.0.12"
 },
 "devDependencies": {
   "@vitejs/plugin-vue": "^2.0.0",
   "@vitejs/plugin-vue-jsx": "^1.3.10",
   "@vue/compiler-sfc": "^3.1.4",
   "eslint": "^8.6.0",
   "eslint-plugin-vue": "^8.2.0",
   "sass": "^1.45.2",
   "sass-loader": "^12.4.0",
   "typescript": "^4.4.4",
   "vite": "^2.7.2",
   "vue-tsc": "^0.29.8"
 }
}

vite 打包配置

  1. 因为组件库一般都是 jsx 语法编写,所以要加上 @vitejs/plugin-vue-jsx,打包成 lib,编辑 vite.config.ts
// filename: vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

// https://vitejs.dev/config/
export default defineConfig({
 plugins: [vue(), vueJsx({})],
 build: {
   rollupOptions: {
     // 请确保外部化那些你的库中不需要的依赖
     external: ['vue'],
     output: {
       // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
       globals: {
         vue: 'Vue',
       },
     },
   },
   lib: {
     entry: './packages/index.ts',
     name: 'vue3-table',
   },
 },
})
  1. 执行 yarn run build 会生成 dist 文件夹,里面有以下几个文件:
    在这里插入图片描述

本地模拟

  1. 修改文件 main.ts
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import XmwTable from '../dist/vue3-xmw-table.es.js'

createApp(App).use(router).use(ElementPlus).use(XmwTable).mount('#app')
  1. vue3-xmw-table 组件能成功显示在页面,则证明组件的打包是没问题的。

发布到 npm

  1. 先查看 npmregistry
npm config get registry
  1. 设置 npmregistry 为官方源
npm config set registry https://registry.npmjs.org
  1. 执行命令 npm login 登录到 npm
npm login
  1. 执行命令 npm publish 发布到 npm
npm publish

如出现以下信息,则证明包发布成功:
在这里插入图片描述

注:上传的 npm 包,在 72小时 后不可删除,如果是测试用的包,记得 72小时 内删除。

安装验证

  1. 执行命令
npm i vue3-xmw-table
  1. main.ts 引入并注册
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import Xmwtable from 'vue3-xmw-table'

createApp(App).use(router).use(ElementPlus).use(Xmwtable).mount('#app')
  1. 页面中引用
<!-- 数据表格 -->
 <vue3-xmw-table
   stripe
   border
   show-summary
   :summary-method="getSummaries"
   :tableData="state.tableData"
   :loading="state.loading"
   :columns="state.firstLoad ? firstColumns : state.tableColumns"
   :tableConfig="tableConfig"
   :showPagination="false"
   style="margin-top: 20px"
   :span-method="objectSpanMethod"
 >
   <template v-slot:handler="{ scope }">
     <el-button
       size="small"
       type="primary"
       @click="
         scope.$index == state.tableData.length - 1
           ? hanglerEditSpending(scope)
           : handlerEdit(scope)
       "
       >编辑</el-button
     >
     <el-button
       type="danger"
       size="small"
       @click="handlerDelect(scope)"
       :disabled="scope.$index == state.tableData.length - 1"
       >删除</el-button
     >
   </template>
 </vue3-xmw-table>

组件正常显示,恭喜💐你,你的包已经发布成功拉,赶紧去使用吧🎉🎉

  • 40
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于 Vue 3 + Vite 项目构建,你可以按照以下步骤进行操作: 1. 确保你的开发环境已经安装了 Node.js。你可以在终端中运行 `node -v` 来检查是否已安装 Node.js,并确保其版本大于等于 12.0.0。 2. 安装 Vue CLI,它是一个官方提供的脚手架工具,用于创建和管理 Vue.js 项目。在终端中运行以下命令来全局安装 Vue CLI: ``` npm install -g @vue/cli ``` 3. 创建一个新的 Vue 3 项目。在终端中运行以下命令: ``` vue create my-project ``` 在创建过程中,你会被提示选择预设配置。选择 "Manually select features",然后按下空格键选择 "Choose Vue version"。选择 Vue 3.x 版本。 4. 进入到项目目录中: ``` cd my-project ``` 5. 安装 Vite。在终端中运行以下命令: ``` npm install -D vite ``` 6. 修改项目配置文件 `package.json`,将 `scripts` 中的 `serve` 和 `build` 命令替换为 Vite 的命令: ```json "scripts": { "dev": "vite", "build": "vite build", "serve": "vite preview" } ``` 7. 使用 Vite 运行项目。在终端中运行以下命令: ``` npm run dev ``` 这将启动开发服务器,你可以在浏览器中访问 `http://localhost:3000` 来预览你的 Vue 3 + Vite 项目。 8. 构建项目。在终端中运行以下命令: ``` npm run build ``` 这将生成一个生产优化的构建版本,可以在 `dist` 目录中找到。 这样,你就成功使用 Vue 3 + Vite 构建了一个项目。你可以根据自己的需求进行开发和调整。希望对你有帮助!如有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白雾茫茫丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值