将组件打包成插件

150 阅读1分钟

将组件打包成插件引入到项目当中(避免直接看源码)

1 components/index.js
import  ListExport  from './ListExport/index.vue'
// 存储组件列表
const components = [
    ListExport
]
// 用于按需导入
export {
    ListExport
    }
// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
const install = function (Vue) {

// 判断是否安装
if (install.installed) return
 // 遍历注册全局组件
 components.map(component => Vue.component(component.name, component))
}

// 判断是否是直接引入文件
if (typeof window !== 'undefined' && window.Vue) {
 install(window.Vue)
}
export default {
 // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
 install,
 // 以下是具体的组件列表
 ...components
}

2 package.json
  "main": "lib/components-ui.umd.js",
  "module": "lib/components-ui.es.js",
  "exports": {
    "./lib/style.css": "./lib/style.css",
    ".": {
      "import": "./lib/components-ui.es.js",
      "require": "./lib/components-ui.umd.js"
    }
  }
  3 vite.config.js
      build: {
        outDir: "lib",
        lib: {
          //库编译模式配置
          entry: resolve(__dirname, "src/components/index.js"), //指定组件编译入口文件
          name: "components-ui",
          fileName: (format) => `components-ui.${format}.js`,
        },
        rollupOptions: {
          //rollup打包配置
          external: ["vue", "element-plus"], // 指定外部依赖
          output: {
            // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
            globals: {
              vue: "Vue",
              "element-plus": "elementPlus",
            },
          },
        },
      }
      4 引入
    import {ListExport} from "@/lib/components-ui.es.js";;