当前位置: 首页 > news >正文

化妆品 网站建设案例/网站关键词快速优化

化妆品 网站建设案例,网站关键词快速优化,企查查官网入口网页版,官方网站建设费用应入什么科目在开发项目的过程中,我们经常需要安装插件依赖,那么怎么把自己开发的组件封装成一个插件,并发布到npm 插件市场或者上传到私有仓库里面呢?今天总结下自己发布插件到私有仓库的记录: 一、创建组件 执行命令创建一个空…

在开发项目的过程中,我们经常需要安装插件依赖,那么怎么把自己开发的组件封装成一个插件,并发布到npm 插件市场或者上传到私有仓库里面呢?今天总结下自己发布插件到私有仓库的记录:

一、创建组件

  1. 执行命令创建一个空项目:npm create vite
  2. 在 src 目录下面创建一个文件 package 存放组件和公共的JS方法。
    在这里插入图片描述
  3. 重点说明下 packages/index.js 因为插件需要支持按需引入和全局引入,所以这里搞了2种方式:整个案例如下
import { getCurrentInstance } from 'vue'
import EosVtable from './table'const components = [EosVtable]
export { EosVtable, setGlobalConfig }// 用于按需导入
const setGlobalConfig = (option) => {const { appContext } = getCurrentInstance()Set_Provide(option, appContext)
}const Set_Provide = (option, app) => {const context = computed(() => {const cfg = unref(option)return cfg})for (const key in option) {app.config.globalProperties[`$${key}`] = context.value[key]}
}// 定义 install 方法  全局引入
const install = (app, option) => {if (install.installed) return;install.installed = truecomponents.map(component => {app.component(component.name, component)})if (option) Set_Provide(option, app)
}
if (typeof window !== 'undefined' && window.Vue) {install(window.Vue)
}const installer = () => {return {install,setGlobalConfig,}
}export default installer()

补充下组件下的index.js下的组件暴露方法:

import Vtable from "./index.vue"
Vtable.name = "EosVtable"
Vtable.install = function (Vue) {Vue.component('EosVtable', Vtable)
}
export default Vtable

到这一步组件已经开发完毕,接下里就是上传到私有仓库的操作了。

二、打包组件

  1. package.json里面配置包的名称,版本号,导出路径等相关信息。切记每次上传时要记得修改版本号,否则会报错的。照着我的抄,改成自己的名称即可。
{"name": "@eosine/vtable","private": false,"version": "0.0.14","type": "module","main": "dist/@eosine-vtable.umd.cjs","module": "dist/@eosine-vtable.js","files": ["dist/*"],"scripts": {"dev": "vite","build": "vite build","preview": "vite preview","build:watch": "vite build --watch","pushnpm": "npm publish"},"dependencies": {"pinyin-match": "^1.2.6","unplugin-auto-import": "^0.18.3","vue": "^3.5.10","vxe-pc-ui": "^4.2.18","vxe-table": "4.7.85","vxe-table-plugin-element": "^4.0.4"},"devDependencies": {"@vitejs/plugin-vue": "^5.1.4","sass": "^1.79.4","vite": "^5.4.8"}
}
  1. 设置 vite.config.js这里主要是设置插件的入口文件地址 lib , 完整案例
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from "path";
import AutoImport from "unplugin-auto-import/vite"
const resolve = (dir) => path.join(__dirname, dir);
export default defineConfig({plugins: [vue(),AutoImport({imports: [// 需要自动导入的API,自动导入vue和vue-router相关函数'vue','vue-router','pinia',],// 指明 .d.ts 文件的位置和文件名,生成 `auto-import.d.ts` 全局声明dts: 'src/types/auto-import.d.ts',}),],resolve: {alias: {"@": path.resolve(__dirname, './src'),},},build: {rollupOptions: {// 请确保外部化那些你的库中不需要的依赖external: ['vue', 'element-plus'],output: {// 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量globals: {vue: 'Vue',},},},lib: {entry: "src/packages/index.js",name: "@eosine/vtable",fileName: "@eosine-vtable"},},server: {host: true,open: true,proxy: {'/api': {target: 'http://XXX.com'},'/M00': {target: 'http://XXX.com'}}},vite: {css: {preprocessorOptions: {scss: {api: 'modern-compiler', // or 'modern'},},},}
})
  1. 执行打包命令pnpm run build进行打包插件 会看到生成的 dist 文件就是整个插件的代码了。

三、npm 上传插件

插件既可以上传到npm 市场,也可上传到公司内部的私有仓库里。2种方案都给大家说下吧

上传到npm 官方

  1. 登录npm, 执行命令 npm login , 没有账户的自行注册,上传失败的,检查npm 代理路径是否为官方的,如果是淘宝镜像需要自行切换到官方才可使用,包名是否已经在插件市场存在。

设置 npm 的 registry 为官方源 npm config set registry https://registry.npmjs.org

这里推荐一个工具 nrm 来统一维护自己的镜像,全局安装以下或者自行百度该插件,主要使用命令就是新增和切换镜像:nrm use 和 nrm ls
在这里插入图片描述
2. 直接执行命令 npm publish 进行上传即可,到npm 官网查看是否发布成功
在这里插入图片描述

四、上传到私有仓库

上面说了那么多,重点核心来了,如何上传到私有仓库呢 ?前提需要咱们的服务器部署私有仓库环境,

目前主流使用的都是Verdaccio 首次上传时需要把咱们的镜像切换到自己的私有仓库镜像,并进行登录,
切换镜像 nrm use eos
登录 npm login 输入完账号和密码,
执行最后的上传命令npm publish ,即可大功告成。

能看到这里的兄弟们幸苦了,必须再送各位一波福利,终极大招,项目调试插件。

五、插件联调

这里必须再上一个命令 ,非常少用的:npm link

  1. 插件热更新,实时监听插件的代码变化,并随时打包dist文件。npm run build:watch
    注意在package.json 添加该命令
    在这里插入图片描述
  2. 在主项目里面进行链接到插件 npm link [插件名称] --global , 这里特别提示下,如果不起作用,就需要把主项目里面下载的这个依赖包进行remove 掉,重新链接。成功后如下。

在这里插入图片描述
这里再送出最后一个福利(被抖音直播洗脑了)哈哈,如果插件有固定的前缀,可以在本机环境下配置下:找到本机的 .npmrc 文件,或者在主项目根目录也行,添加镜像切换:
在这里插入图片描述
这样以后只要登录成功一次,后面就不需要再切换镜像和重复登录了。

友情提示:如果上传失败,要检查是否修改版本号了,其次登录npm 成功后,上传完成,要及时把镜像切换回去。

补充创建软链,也可自行百度
在这里插入图片描述
over ! 祝好!

相关文章:

npm发布插件到私有仓库保姆级教程

在开发项目的过程中,我们经常需要安装插件依赖,那么怎么把自己开发的组件封装成一个插件,并发布到npm 插件市场或者上传到私有仓库里面呢?今天总结下自己发布插件到私有仓库的记录: 一、创建组件 执行命令创建一个空…...

WinRAR V7.10纯净体验

前言 很多同学在安装了WinRAR之后,每次用这个软件解压文件时,都会先跳出一个广。这个广就像打开了一个新窗口,很打扰人。从WinRAR的5.40版本开始,哪怕是简体中文版的,都会这样弹广告。不管你有没有注册账号&#xff0…...

scss文件内引入其他scss文件报错

1、今天在编译一些老项目的时候,老是提示下面信息 2、而且有很多Sass import rules are deprecated and will be removed in Dart Sass 3.0.0.警告 3、用npm view sass versions看,其中sass的最新版本是1.82.0 4、经过测试"sass": "1.75…...

1-12 GD32基于定时器输入捕获

前言: 基于本人对相关知识回顾与思考,仅供学习参考 目录 前言: 1.0 输入捕获 2.0 信号周期 3.0 定时器配置 4.0 定时器配置 5.0 定时器中断 后记: 1.0 输入捕获 2.0 信号周期 获取信号周期的方法,在第一次捕获与…...

前端基础的讲解-JS(22)

什么是JSON? 1.json 是一种轻量级的数据交换格式 简单来说:json 就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。 类似于: 国际通用语言 - 英语 中国 56 个民族不同地区的通用语言 - 普通话 …...

Minecraft-Datapack数据包开发3-进度与成就

目录 简介成就与进度根进度叶子进度更多的检测方式 简介 代码已经上传: gitee github 成就与进度 工欲善其事必先利其器,别死记硬背,多使用自动生成网站 进度数据包生成器:https://misode.github.io/advancement/指令生成器&…...

泷羽sec-shell编程(3)

shell(3) 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他…...

如何解决压测过程中JMeter堆内存溢出问题

如何解决压测过程中JMeter堆内存溢出问题 背景一、为什么会堆内存溢出?二、解决堆内存溢出措施三、堆内存参数应该怎么调整?四、堆内存大小配置建议 背景 Windows环境下使用JMeter压测运行一段时间后,JMeter日志窗口报错“java.lang.OutOfMe…...

爬虫项目基础知识详解

文章目录 Python爬虫项目基础知识一、爬虫与数据分析1.1 Python中的requests库Requests 库的安装Requests 库的 get() 方法爬取网页的通用代码框架HTTP 协议及 Requests 库方法Requests 库主要方法解析 1.2 python中的json库1.3 xpath学习之python中lxml库html了解html结构html…...

uniapp 微信小程序webview 和 h5数据通信

项目是uniapp编写,因为是先开发了h5和app,小程序是突然要用的,做兼容开发已经来不及,由于微信小程序webview载入h5 因为通信必须要特殊限制(网页向小程序 postMessage 时,会在以下特定时机触发并收到消息&a…...

SSM01-MyBatis框架(一文学会MyBatis)

Mybatis框架 一、Mybatis框架简介 1.1 传统JDBC的缺陷 (1)数据库连接创建、释放频繁会造成系统资源浪费 【MyBatis通过在核心配置文件中配置数据路连接池解决此问题】 (2) SQL语句在代码中硬编码(PreparedStatement向占位符传…...

【PlantUML系列】状态图(六)

一、状态图的组成部分 状态:对象在其生命周期内可能处于的条件或情形,使用 state "State Name" as Statename 表示。初始状态:表示对象生命周期的开始,使用 [*] 表示。最终状态:表示对象生命周期的结束&…...

JS中重排和重绘的区别是什么?

在JavaScript中,当DOM(文档对象模型)发生变化时,浏览器需要重新计算和更新渲染树,这个过程通常涉及到重排(reflow)和重绘(repaint)。了解这两者之间的区别对于优化页面性…...

工业—使用Flink处理Kafka中的数据_ProduceRecord2

使用 Flink 消费 Kafka 中 ProduceRecord 主题的数据,统计在已经检验的产品中,各设备每 5 分钟 生产产品总数,将结果存入HBase 中的 gyflinkresult:Produce5minAgg 表, rowkey“...

C 库中的断言与 FreeRTOS 中的 trace 宏

在 C 编程领域,断言和 FreeRTOS 中的 trace 宏都有着独特而重要的作用。 一、断言(assert) 断言在一般的 C 库中是一个非常有用的工具,它以函数的形式存在。其核心作用在于对程序中的逻辑条件进行检查,确保特定的表达…...

JAVAWeb中的Servlet学习

一 Servlet简介 1.1动态资源和静态资源 静态资源 无需在程序运行时通过代码运行生成的资源,在程序运行之前就写好的资源.例如:html css js img ,音频文件和视频文件 动态资源 需要在程序运行时通过代码运行生成的资源,在程序运行之前无法确定的数据,运行时动态生成,例如Servle…...

docker安装ddns-go(外网连接局域网)

docker先下载镜像,目前最新版是v6.7.6 也可以csdn资源下载 再导入dockers https://download.csdn.net/download/u014756339/90096748 docker load -i ddns-go.tar 启动 docker run -d --name ddns-go --restartalways --nethost -v /opt/ddns-go:/root jeessy/…...

时间复杂度度详解

时间复杂度是衡量算法性能的重要指标,用来描述算法随着输入规模 n 增大,运行时间的增长趋势。以下是时间复杂度的核心概念与常见分类的详细讲解。 1. 时间复杂度的定义 时间复杂度反映了算法执行的 基本操作数量 与输入规模 n 的关系。它通常使用大 O表示法来表示,即: 其中…...

如何处理和优化大文件上传和下载

如何处理和优化大文件上传和下载 简单来说 文件过大会导致内存溢出,上传和下载过慢会影响用户体验,不合理的设计可能引发安全问题,还有网络问题,数据完整性,服务器压力等 文件过大,内存溢出,…...

QT 线程锁

在 Qt 中,线程锁是用来同步多线程访问共享资源的机制,防止数据竞争和线程安全问题。Qt 提供了几种线程锁和同步工具,主要包括以下几种: 1. QMutex 功能:QMutex 是 Qt 中最常用的互斥锁(mutex)…...

光猫开DMZ教程

本教程以移动光猫未例,具体操作以实际光猫为准 1、登录移动光猫管理后台 打开浏览器,在浏览器地址栏输入移动光猫登录管理地址192.168.1.1或者tplogin.cn 按“回车键”打开登录页面,然后输入路由器管理密码登录。 移动光猫登录页面 超级密…...

分区之间的一种度量方法-覆盖度量(Covering Metric)

分区之间的一种度量方法——覆盖度量(Covering Metric),用于量化一个分区如何被另一个分区覆盖或近似。以下是逐步详细解释: 1. 背景与符号说明 分区的概念: 分区是将一个集合(这里是 { 1 , … , n } \{…...

cocos creator接入字节跳动抖音小游戏JSAPI敏感词检测(进行文字输入,但输入敏感词后没有替换为*号)

今天更新了某个抖音小游戏的版本,增加了部分剧情,半天过后一条短信审核未通过,emmm…抖音总是能给开发者惊喜…打开电脑看看这次又整什么幺蛾子… 首先是一脸懵逼,后端早已接入了官方的内容安全检测能力了(https://de…...

13.Java IO 流(文件流、字符流、字符处理流、字节处理流、对象处理流、标准流、转换流、打印流、Properties 配置文件、其他流)

一、文件引入 1、文件的概念 文件是保存数据的地方(例如,文档,图片,音视频等) 2、文件流 流:数据在数据源(文件)和程序(内存)之间经历的路径 输入流&…...

掌握 DOM 操作:让你的网页动起来

文章目录 前言一、什么是 DOM?二、DOM 树的结构三、使用 JavaScript 操作 DOM总结前言 在现代 Web 开发中,动态交互几乎是每个网站的标配。而这种交互的实现,离不开 DOM(Document Object Model) 的操作。本次课程深入讲解了 DOM 的基础知识以及如何使用 JavaScript 操作 …...

JVM整理部分面试题

1.如何主动触发垃圾回收? 在Java中,垃圾回收是自动进行的,由Java虚拟机(JVM)负责管理。但是,有时候我们可能希望手动触发垃圾回收以释放一些无用的对象。这可以通过调用System.gc()方法来实现 手动触发垃…...

ubuntu20 使用 pyspacemouse获取 spacemouse wireless 输入

1. 设置设备权限 (1) 默认情况下,普通用户可能没有权限访问 HID 设备,可以通过设置 udev 规则解决: cd /etc/udev/rules.d sudo touch 99-spacemouse.rules sudo gedit 99-spacemouse.rules在新建的99-spacemouse.rules中添加以下内容 SUB…...

windows下Qt5自动编译配置QtMqtt环境(11)

文章目录 [toc]1、概述2、准备1.1 下载源码1.2 配置环境1.3 解释原理 3、编译4、验证5、参考6、视频 更多精彩内容👉内容导航 👈👉Qt网络编程 👈 1、概述 Qt默认是不包含mqtt库的,如果需要使用到mqtt库就只能自己编译配…...

速盾:高防cdn有哪些冷知识?

高防CDN(Content Delivery Network)是一种用于提供高可靠性、高性能的互联网服务的技术。它通过将内容分发到离用户最近的服务器上,并优化网络流量,以提升网站的响应速度和承载能力。除了这些基本的了解,下面是一些高防…...

全面UI组件库Telerik 2024 Q4全新发布——官方宣布支持.NET 9

Telerik DevCraft包含一个完整的产品栈来构建您下一个Web、移动和桌面应用程序。它使用HTML和每个.NET平台的UI库,加快开发速度。Telerik DevCraft提供最完整的工具箱,用于构建现代和面向未来的业务应用程序,目前提供UI for ASP.NET MVC、Ken…...