首页 > 其他分享 >如何实现一个公共组件库上传到npm并在项目中使用

如何实现一个公共组件库上传到npm并在项目中使用

时间:2023-03-01 13:05:34浏览次数:51  
标签:npm vue package js 库上 组件 catui


一般多个项目使用一些公共组件的时候,我们没必要在每个项目里写公共组件代码,我们可以将公共组件封装成一个库,上传至npm,这样我们在项目中使用就可以直接从npm下载直接使用。当然我们也可以搭建自己本地的npm镜,而本文主要讲述上传npm。

创建一个新的vue项目

vue create catui

在src目录下新建package文件放置我们所写的公共组件

如何实现一个公共组件库上传到npm并在项目中使用_Vue

写一个button的公共组件

在package下新建bin-button文件,index.js文件,并在bin-button文件下新建index.vue

目录:/catui/src/package/bin-button/index.vue

<template>
<button @click="handleClick" :disabled='disabled'>
<slot></slot>
</button>
</template>
<script>
export default {
name: "BinButton",
props: {
disabled: Boolean
},
methods: {
handleClick(evt) {
this.$emit('click', evt);
}
}
};
</script>

目录:/catui/src/package/index.js

出口文件:引入封装好的组件进行批量注册,然后导出。

// 引入封装好的组件
import BinButton from "../package/bin-button/index.vue"; /
// 将来如果有其它组件,都可以写到这个数组里
const coms = [BinButton];

// 批量组件注册
const install = function (Vue) {
coms.forEach((com) => {
Vue.component(com.name, com);
});
};

export default install; // 这个方法以后再使用的时候可以被use调用

为什么导出为install? 安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为install 方法。install 方法调用时,会将 Vue 作为参数传入。

package.json 作为一个组件库,我们必须按照npm的发包规则来编写我们的package.json, 我们先来解决组件库打包的问题,首先我们需要让脚手架编译我们的组件代码,并输出到指定目录下,我们按照发包规范一般会输出到lib目录下,代码如下:

组件库上传npm需要按照npm规则来编写package.json。

{
"name": "catui", //包名
"version": "0.1.1", //版本号
"description": "", //介绍
"author": "cat", //作者
"main": "caui/xui.umd.min.js", //入口js
"license": "ISC", //许可证
"scripts": {
"serve": "vue-cli-service serve",
"lint": "vue-cli-service lint",
"build": "vue-cli-service build --target lib ./src/package/index.js --name cat-ui --dest cat-ui",
},
}

其中

  • target lib: 启动文件的路径
  • name:打包后生成的文件名
  • dest: 打包后生成的文件夹名

打包项目

打包后的目录如下:

如何实现一个公共组件库上传到npm并在项目中使用_npm_02

上传npm

首先注册npm账号,后登录

npm login
//输入账号、密码、邮箱

升级版本(按需求)

"version": "0.1.4" <=> [major].[minor]. patch 
对应的版本为大版本|中版本|小版本

npm version patch (升级小版本号)
npm version minor(升级中版本号)
npm version major (升级大版本号)

发布到npm

npm publish

如果有报错

npm publish --access public

查看镜像源,如果之前有修改过npm的源需要重新设置

npm get registry
//设置镜像源(如果不是下面的源,则需要执行下面的命令)
npm config set registry=https://registry.npmjs.org

​【特别提醒】​​:确保本地源服务是 ​​registry.npmjs.org​​,国内大家都喜欢使用taobao镜像源,但是发布不能发到该服务器上。本人使用 nrm 工具进行镜像源的管理和切换。

可以直接在npm官网搜索到

如何实现一个公共组件库上传到npm并在项目中使用_组件库_03

安装并使用

安装

yarn add catui

在main,js中引入

import catui from "catui"
vue.use(catui)

app.vue中使用

<bin-button disabled></bin-button>
<bin-button></bin-button>

下图可以看出我们设置​​disabled​​属性生效了

如何实现一个公共组件库上传到npm并在项目中使用_组件库_04

标签:npm,vue,package,js,库上,组件,catui
From: https://blog.51cto.com/u_15885506/6089859

相关文章

  • Go组件库总结之事件注册唤醒
    本篇文章我们用Go实现一个自定义事件注册并等待唤醒的机制,其中涉及到的链表操作可以参考上一篇文章。文章参考自:https://github.com/brewlin/net-protocol1.自定义唤醒事......
  • vue 父子组件之间传值
    在vue中父子组件传值是必不可少的,大家必须要学会! 首先父组件向子组件传值: 父组件:比如我们传teacher为index,如果我们传值变量可以使用:绑定我们在data中定义的变量。......
  • 基于OMAPL138+FPGA核心板多核软件开发组件MCSDK开发入门(上)
    本文测试板卡为创龙科技SOM-TL138F是一款基于TIOMAP-L138(定点/浮点DSPC674x+ARM9)+紫光同创Logos/XilinxSpartan-6低功耗FPGA处理器设计的工业级核心板。核......
  • 界面组件DevExpress WinForms v22.2 - 全面升级数据展示功能
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office......
  • npm install 报错 -4048
    方法一:删除npmrc文件。强调:不是nodejs安装目录npm模块下的那个npmrc文件,而是在C:\Users\{账户}\下的.npmrc文件。方法二:以管理员身份运行cmd,执行命令npm......
  • Vue2 组件总结
    注册全局组件使用Vue.component(...)的方式创建全局组件,注册属性,创建模版props属性:父组件传递数据到子组件。高级内容:Prop属性、Prop验证等this.$emit:将事件传......
  • npm 常用安装包命令总结
    直接安装使用npm直接安装模块,默认是生产环境,包名会注册到package.json里的dependencies中,且会把包安装到项目node_modules文件夹里面:npminstallmodule_name......
  • 封装avalonia指定组件允许拖动的工具类
    封装avalonia指定组件允许拖动的工具类创建Avalonia的MVVM项目,命名DragDemo,然后将项目的Nuget包更新到预览版<ItemGroup><PackageReferenceInclude="Aval......
  • 【FFH】自制一款ArkUI组件-应用文件管理器(一)
    前言介绍使用示例1.实现思路1.1接口函数1.2代码思路效果图GIF前言在涉及应用内部存储的开发时,常常翻阅手机自带的文件管理检查。正好在学习文件管理的接口,想着......
  • 注册组件
    注册组件一个Vue组件在使用前需要先被“注册”,这样Vue才能在渲染模板时找到其对应的实现。组件注册有两种方式:全局注册和局部注册。全局注册更改main.js文件如下:......