如和写一个库,并发布,我的colorfontcolor产生使用

news/2024/11/9 16:44:50/

闲来无事,写了一个npm包 1.1.2版本以后可以使用,前面的版本都是bug

colorfontcolor

  • 具体使用
    • 具体实现
      • 出现的细节
      • 出现的问题
  • 写包时出现的问题
    • 用的相关库
      • 问题

具体使用

npm i colorontcolor

//es6环境,vue组件中使用
<template><div><h1 ref="title">祖国繁荣昌盛</h1></div>
</template>
import colorfont  from 'colorfontcolor';export default {monted() {const el = this.$refs.titlecolorfont(el, {duration:3,blurRadius:5,color:['rgb(0, 26, 255)','#ffffff']});}
}

效果
在这里插入图片描述

具体实现

原理很简单就是将标签的文字分开装入span标签,用css动画延迟实现

出现的细节

我偷懒直接用了sass的解析,如果直接写也是可以写出来,以后会优化的,毕竟,sass包占一部分体积

出现的问题

一开始没有用热重载写的,这个工具库我是直接添加style到head里的,但是使用热重载之后我发现有点卡,发现热重载每次都重现调用第三方库的函数,导致我的style重复添加,最后看到出现了几十个重复标签

写包时出现的问题

我用的是rollup打包,这个是专门写工具库的,体积小还快。地址

用的相关库

  "dependencies": {"@rollup/plugin-commonjs": "^26.0.1","@rollup/plugin-node-resolve": "^15.2.3","@rollup/plugin-typescript": "^11.1.6","rollup-plugin-cleanup": "^3.2.1","rollup-plugin-terser": "^7.0.2","sass": "^1.77.8","tslib": "^2.6.3","typescript": "^5.5.4"}	

不清楚的库可以搜搜,文章很多而且讲的都很详细,我就不过多说了

问题

如果你要自己写一个库

  1. 在github上创建一个仓库,开源协议选择MIT license
  2. 注册npm账号
  3. 本地拉github仓库
  4. package.json修改
{"name": "github仓库名","version": "1.0.0","description": "Generate cool colors","type": "module","main": "./dist/index.cjs.js","module": "./dist/index.esm.js","types": "./dist/types/index.d.ts","files": ["dist"],"scripts": {"dev": "rollup -w -c","build:types": "tsc -b ./tsconfig.json","build": "npm run build:types && rollup -c","prepublish": "pnpm version && pnpm build"},"keywords": ["color","font","utils"],"repository": {"type": "git","url": "git+仓库地址"},"author": "LB","license": "ISC","bugs": {"url": "仓库地址//issues"},"dependencies": {"@rollup/plugin-commonjs": "^26.0.1","@rollup/plugin-node-resolve": "^15.2.3","@rollup/plugin-typescript": "^11.1.6","rollup-plugin-cleanup": "^3.2.1","rollup-plugin-terser": "^7.0.2","sass": "^1.77.8","tslib": "^2.6.3","typescript": "^5.5.4"}
}
  1. 添加rollup.config.js
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import typescript from '@rollup/plugin-typescript';
import { terser } from 'rollup-plugin-terser';
import cleanup from 'rollup-plugin-cleanup';export default [{input: './src/index.ts',output: {dir: 'dist',format: 'cjs',entryFileNames: '[name].cjs.js',},plugins: [resolve(), commonjs(), typescript(), terser(), cleanup()],}, {input: './src/index.ts',output: {dir: 'dist',format: 'esm',entryFileNames: '[name].esm.js',},plugins: [resolve(), commonjs(), typescript(), terser(), cleanup()],}
];

这个参考了一个博客,我忘了是哪个了,最近翻阅资料太多了
6. 创建tsconfig.json

{"compilerOptions": {"baseUrl": ".","target": "es5","lib": ["dom", "dom.iterable", "esnext"],"allowJs": true,"skipLibCheck": true,"esModuleInterop": true,"allowSyntheticDefaultImports": true,"strict": true,"forceConsistentCasingInFileNames": true,"noFallthroughCasesInSwitch": true,"module": "esnext","moduleResolution": "node","resolveJsonModule": true,"isolatedModules": true,"downlevelIteration": true,"declaration": true,"declarationDir": "dist/types","emitDeclarationOnly": true,"rootDir": "src","paths": {"@/*": ["src/*"],"@types/*": ["src/types/*"],"@utils/*": ["src/utils/*"]}},"include": ["src"]
}

具体目录大致这杨样在这里插入图片描述
dist是运训npm run build产生的打包结果会被放到npm包里
7. 打包完后,登录npm npm login,可能出现的问题,登录不上,切换国外镜像源
外国 npm config set registry https://registry.npmjs.org/ 中国 npm config set registry https://registry.npmmirror.com/,登录完后控制台可能没反应过来,看看npm账号是否又授权信息
在这里插入图片描述
有的话就终止控制台,直接npm publish,记住每次更显后都需要更改package.json的version,只能更大
有问题的可以私信


http://www.ppmy.cn/news/1514603.html

相关文章

【QAMISRA】解决永久license文件替换后未生效的问题

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决浮动版永久license文件替换后未生效的问题。 2、 问题场景 客户替换永久版license文件且重启lserv服务后&#xff0c;license信息还是原来临时license的信息。 3、软硬件环境 1、软件版本&#xff1a; QA-MIS…

快速查找数组中出现奇数次的数字

一个面试题。其实算脑筋急转弯。 我觉得甚至都不能说是智力题。这种题目纯看经验&#xff0c;自己做过类似的&#xff0c;就有印象&#xff0c;就能往这个方面去想。人和人的思维方式都不一样&#xff0c;不一定我就能想到你希望我能想到的。 快速查找数组中出现奇数次的数字…

发那科机器人常见的异常解决方案

第一类错误&#xff1a;示教板空白、机器人死机 判断方法&#xff1a;1、PSU 上红色LED 亮代表电源供给报警&#xff0c;可能保险F4熔断、查看CP2、CP3线路&#xff08;200ACV输出&#xff09;、更换PSU&#xff1b;绿色PIN熄灭代表电源供给单元未获得200V 的交流电源输入&…

深入探讨MySQL的锁机制:全局锁、表级锁和行级锁

深入探讨MySQL的锁机制&#xff1a;全局锁、表级锁和行级锁 在数据库管理中&#xff0c;锁机制是确保数据一致性和并发控制的重要手段。MySQL提供了多种锁策略&#xff0c;包括全局锁、表级锁和行级锁。本文将详细探讨这些锁机制的概念、使用场景及其示例代码&#xff0c;帮助…

Python学习-打工人挣钱

编程案例 example one: # 假设小王每天可以挣500元,周内每天花60,周末每天花100,一年365天可以挣多少钱?MoneySum=0 for i in range(365):if i % 7 in [6,0]:MoneySum

【Redis】基本全局命令

Redis的基本全局命令 keysexistsdelexpirettltype Redis 有 5 种数据结构&#xff0c;但它们都是键值对种的值&#xff0c;对于键来说有⼀些通⽤的命令。 keys 返回所有满足样式 &#xff08;pattern&#xff09;的key。支持如下统配样式。 h?llo 匹配 hello , hallo 和 hxl…

wangEditor5在vue中自定义菜单,取消网络图片和插入视频,上传图片,视频功能

参考博客&#xff1a;wangEditor5在vue中自定义菜单栏--格式刷&#xff0c;上传图片&#xff0c;视频功能_wangeditor自定义菜单-CSDN博客 1.安装插件 npm install wangeditor/editor npm install wangeditor/editor-for-vue 2.富文本组件richText.vue <template><…

【Unity】通用GM QA工具 运行时数值修改 命令行 测试工具

GM工具使用: GM工具通常用于游戏运行时修改数值(加钱/血量)、解锁关卡等&#xff0c;用于快速无死角测试游戏。一个通用型GM工具对于游戏项目是非常实用且必要的&#xff0c;但通用不能向易用妥协&#xff0c;纯命令行GM门槛太高&#xff0c;对QA不友好。 这类运行时命令行工具…