1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用vite构建一个自己的vue3.0的UI组件库 并发布到npm

使用vite构建一个自己的vue3.0的UI组件库 并发布到npm

时间:2023-04-21 11:35:26

相关推荐

使用vite构建一个自己的vue3.0的UI组件库 并发布到npm

自定义UI组件库

为何重复造轮子(制造垃圾)的理由万恶之源使用vite使用npm工具 运行以下命令。编写DIY组件Button自己写第一个组件库之Button使用rollup打包库安装 使用rolluppackage.jsrollup.config.js 发布包到npm注册npm账号使用npm 发布 如何使用在项目中导入在app.vue 中使用,测试样式生效,组件引用成功。

为何重复造轮子(制造垃圾)的理由

想学习vite 和仅仅觉得这样做有趣,尝试一些新技术。

万恶之源

由于看到别人写了一个框架,心生嫉妒,想约小伙伴搞一搞。

这气谁受得了,不搞个UI(垃圾)出来,真以为俺不行了。

OK,交代完wuhen-ui 的前因后果,我们切回正题。

使用vite

vite是尤雨溪大大新写的工具,代替webpack,具体优点就不一一赘叙了,反正就是快。

使用npm工具 运行以下命令。

我在npm install 的时候出错了,换了yarn工具下载了,如果出现一样的问题可以参照我的解决方式。

npm install -g create-vite-appcreate-vite-app 01-vue3-vitecd 01-vue3-vitenpm installnpm run dev

在根目录下新建packages文件夹放自己写的组件。目录结构如下。

编写DIY组件Button

在目录packages文件下创建文件夹button

在文件夹button文件夹下创建src文件夹,文件index.js,图中其他文件先不用管。

在src文件夹下,创建button.vue 组件,也可以脱离模板,使用ts和tsx写组件。为了方便直接使用vue了。

组件和平时项目中的自定义组件一样的写法,只是多了自定义的属性。可以先随便放点东西调试起来。以后再完善。

自己写第一个组件库之Button

button.vue代码如下

<template><button :class="['wh_button--'+type]"></button></template><script>export default {name: 'wh-button',props: {type: {type: String,default: 'default',}}</script>

button.vue组件中name是必须要的,和正常项目中自己写的组件一样。

props里是放父组件传进来的值的,可以根据这个值,自己写样式,让组件变化起来。

index.js 代码

index.js 为button组件的入口。先导入button 组件,并使用ponent函数将组件在vue 中暴露出来。

import Button from "./src/button.vue";Button.install = function(Vue) {ponent(Button.name, Button);};export default Button;

使用rollup打包库

这里只是简单使用,有不懂的百度,看文档,很多教程很详细。

安装 使用rollup

npm命令安装下面3个包

"rollup-plugin-postcss": "^4.0.0","rollup-plugin-terser": "^7.0.2","rollup-plugin-vue": "^6.0.0",

rollup-plugin-postcss 处理css文件,将css文件放在js中。

rollup-plugin-terser 压缩发布的js代码

rollup-plugin-vue 以上两个是小工具可以选择安装,这个才是主要的。

具体rollup发布 用法还是百度吧,他有很多工具,这里只是简单的使用一下。

安装完毕

package.js

由于我是单个组件发布,所以在button组件下,创建package.js 正常全局发布应该在根目录下。

代码如下

{"name": "wuhen-ui","version": "0.3.3","description": "the wuhen-ui is yyds","private": false,"main": "lib/index.js","module": "es/index.js","license": "MIT","author": "sks","scripts": {"build": "rollup -c"},"files": ["lib","README.md"]}

name组件发布的名称,由于我是要发布到npm,所以name 是不能重复的。

如果重复会发布失败。

version版本号。这个版本号每次发布都要更改不更改也会发布失败。不能和前一次发布同一个版本号。

description项目的描述

private设置成false ,必须设置公开的,不然也会出问题。

main组件的入口,我发布到lib文件夹下,所以改成这样,如果你发布到dist 就把lib替换掉。

author作者

build打包命令, 使用rollup 才能使用

files发布所指定的两个文件。

rollup.config.js

// /packages/button/rollup.config.jsimport vue from "rollup-plugin-vue";import { terser } from "rollup-plugin-terser";import postcss from "rollup-plugin-postcss";module.exports = [{// 入口input: "index.js",// 出口output: [{file: "lib/index.js",// 配置打包模块化的方式 es:ESM cjs:CommonJSformat: "es",},],// 插件plugins: [vue({// 把单文件组件中的样式,插入到html中的style标签css: true,// 把组件转换成 render 函数compileTemplate: true,}),// 代码压缩terser(),postcss(),],},];

由于是单组件发布,所以放在button目录下,全局发布的话,两个配置文件放在根目录下。

全部配置完毕后,cd到button目录下

使用npm run build 命令

cd packages/buttonnpm run build

这个时候打开button文件夹下应该生成了lib文件夹,查看是否有index.js代码

css文件也在index.js里。

发布包到npm

注册npm账号

众所周知,你需要一个npm账号

方法一:到官网注册

方法二:使用 npm命令注册: npm adduser

依次填写name password,e-mail 即可

使用npm 发布

如果你npm换成了淘宝的镜像的话,需要换成官方的源才能登录发布

npm config set registry

登录

npm login

依次输入用户名,密码,邮箱

回车

没有报错就说明登陆成功

发布

cd到要发布的目录下,全局的话根目录,我是单组件,cd到button目录下

执行

npm publish

换回淘宝源

npm config set registry https://registry.

如何使用

在项目中导入

npm install 名称 --save

在项目入口文件main.js 中导入

import { createApp } from "vue";import App from "./App.vue";import router from "./router";import store from "./store";import wuhen from "wuhen-ui"; //你的组件const app = createApp(App);app.use(router);app.use(store);app.use(wuhen); //你的组件app.mount("#app");

在app.vue 中使用,测试

<template><div id="app"><router-view /><wh-button>12312</wh-button></div></template><script>export default {name: 'App',}</script>

样式生效,组件引用成功。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。