vue3打包组件为npm包

发布时间:2023-08-10 01:31:02
修改时间:2023-08-16 13:55:32
总阅读数:287
今日阅读数:0
昨日日阅读数:0
字数:4035

编写组件

新建组件 src/components/z-ui/z-time/ZTime.vue
<template>
    <div>
        {{ dayjs(props.data).format("YYYY-MM-DD HH:mm:ss") }}
    </div>
</template>

<script setup>
import  dayjs from "dayjs";

let props = defineProps({
    data: {
        type: [String, Date,Number],
        default: new Date()
    }
});

</script>

<style scoped>

</style>

dayjs 为第三方依赖,如需使用先npm install dayjs 进行安装

组件引入

新建按需引入 src/components/z-ui/z-time/index.js
import ZTime from './ZTime.vue'
export default {
    install(app) {
        app.component('ZTime', ZTime)
    }
}
export {ZTime}
新建全局引入 src/components/index.js
export * from './z-ui/z-time'


import ZTime from './z-ui/z-time/index.js'


const components = [
    ZTime
]
const ZUI = {
    install(app) {
        components.forEach((component) => {
            component.install(app)
        });
    },
};

export {
    ZUI
}

打包配置

新建 vite.config.prod.js
import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'

import * as path from 'path'

// https://vitejs.dev/config/
export default defineConfig({
    build: {
        outDir: "z-ui", //输出文件名称
        lib: {
            entry: path.resolve(__dirname, "./src/components/index.js"), //指定组件编译入口文件
            name: "z-ui",
            fileName: "z-ui",
        }, //库编译模式配置
        rollupOptions: {
            // 确保外部化处理那些你不想打包进库的依赖
            external: ["vue"],
            output: {
                // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
                globals: {
                    vue: "Vue",
                },
            },
        }, // rollup打包配置
    },

    plugins: [vue()],
    resolve: {
        alias: {
            '@': path.resolve(process.cwd(), './src'),
        },

    },

})
修改 package.json

增加配置

"scripts": {

    "build:com": "vite build --mode production --config ./vite.config.prod.js",

  },
"main": "z-ui/z-ui.js",
  "files": [
    "z-ui",
    "src"
  ],

完整如下

{
  "name": "z-ui",
  "private": false,
  "version": "0.0.1",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "build:com": "vite build --mode production --config ./vite.config.prod.js",
    "preview": "vite preview"
  },

  "type": "module",
  "main": "z-ui/z-ui.js",
  "files": [
    "z-ui",
    "src"
  ],
  "dependencies": {
    "@rollup/plugin-commonjs": "^24.1.0",
    "dayjs": "^1.11.7",
    "lodash": "^4.17.21",
    "vue": "^3.2.47"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.1.0",
    "vite": "^4.3.2"
  },
  "peerDependencies": {
    "dayjs": "^1.11.7"
  }
}

组件发布

配置npm远程仓库

(按具体仓库发布说明操作)

推送到仓库

npm run build:com
npm publish





使用组件

新建项目


安装依赖

npm install z-ui

全局引入

修改 main.js 增加引入

import "z-ui/z-ui/style.css"
import {ZUI} from 'z-ui'

使用案例

<script setup>

</script>

<template>


  <z-time></z-time>

</template>

局部引入

修改 main.js 增加引入

import "z-ui/z-ui/style.css"

使用案例


<script setup>

import {ZTime} from "z-ui";


</script>

<template>

  <z-time></z-time>

</template>