以我自己封装的一个npm包为例,用于音频打点切分,展示音频波形图,波形图选区播放等,如下图:
传送门:
npm: https://www.npmjs.com/package/audio_wave_plugin
github源码:https://github.com/panxiaoxiao0823/audio_wave_plugin
1.初始化vue简单模板:
1
2
3
4
vue init webpack-simple audio_wave_plugin
cd
audio_wave_plugin
npm
install
npm run dev
2.创建,目录结构如下:
src/myPlugin目录:如果有多个插件的话规范整理
src/myPlugin/audio_wave目录:当前要封装的组件
3.app.vue本地调试该组件,直至没有问题
4.修改src/myPlugin/audio_wave/index.js 文件,目的:将该组件作为 Vue 插件
// audioWave 插件对应组件的名字
import audioWave from './audio_wave.vue'; // Vue.js 的插件应当有一个公开方法 install 。第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象 // 参考:https://cn.vuejs.org/v2/guide/plugins.html#%E5%BC%80%E5%8F%91%E6%8F%92%E4%BB%B6 // 此处注意,组件需要添加name属性,代表注册的组件名称,也可以修改成其他的
audioWave.install = Vue => Vue.component(audioWave.name, audioWave);//注册组件
export default audioWave;
此处需要注意的是 install
。 Vue
的插件必须提供一个公开方法 install
,该方法会在你使用该插件,也就是 Vue.use(yourPlugin)
时被调用。这样也就给 Vue
全局注入了你的所有的组件。
5. 修改配置项
(1)修改 webpack.config.js ,修改完成后执行npm run build 看下是否生效
// 执行环境
const NODE_ENV = process.env.NODE_ENV;
console.log("-----NODE_ENV===",NODE_ENV);
module.exports = { // 根据不同的执行环境配置不同的入口
entry: NODE_ENV == 'development' ? './src/main.js' : './src/myPlugin/sumFunction/index.js',
output: {
path: path.resolve(__dirname, './dist'),
publicPath: '/dist/',
filename: 'audio_wave.js',
library: 'audio_wave', // 指定的就是你使用require时的模块名
libraryTarget: 'umd', // 指定输出格式
umdNamedDefine: true // 会对 UMD 的构建过程中的 AMD 模块进行命名。否则就使用匿名的 define
},
library:指定的就是你使用require时的模块名
libraryTarget:为了支持多种使用场景,我们需要选择合适的打包格式。常见的打包格式有 CMD、AMD、UMD,CMD只能在 Node 环境执行,AMD 只能在浏览器端执行,UMD 同时支持两种执行环境。显而易见,我们应该选择 UMD 格式。
有时我们想开发一个库,如lodash,underscore这些工具库,这些库既可以用commonjs和amd方式使用也可以用script方式引入。
这时候我们需要借助library和libraryTarget,我们只需要用ES6来编写代码,编译成通用的UMD就交给webpack了
umdNamedDefine:会对 UMD 的构建过程中的 AMD 模块进行命名。否则就使用匿名的 define
(2)修改package.json 文件:
// 发布开源因此需要将这个字段改为 false
"private": false, // 这个指 import 的时候它会去检索的路径
"main": "dist/audio_wave.js",
6.提交发布
(1)在npm官网注册账号,地址:https://www.npmjs.com/,注册好之后,注意邮箱要验证,会发送验证链接到你的注册邮箱,没有验证的话是不能发布代码的
(2)package.json 中 author 尽量与 npm 账户一致
(3)项目根目录下,打包之后,登录npm账号,输入用户名、密码、邮箱,npm publish发布
npm run build
npm login
npm publish
7.现在其他项目可以安装引用了
npm install audio_wave_plugin --save //main.js中引入
import audioWave from 'audio_wave_plugin' Vue.use(audioWave)
8.npm包更新迭代方法
(1)新建npm包:
npm login
npm publish
(2)已有npm包,在已有npm包基础上更新版本
npm version <update_type> npm publish
update_type 有三个参数:第一个是patch, 第二个是minor,第三个是 major
patch:这个是补丁的意思,补丁最合适;
minor:这个是小修小改;
major:这个是大改咯;
比如原来版本1.0.0
1.其他项目引用时候,main.js中Vue.use()时候报错Uncaught TypeError: Cannot read property ‘toLowerCase‘ of undefined,原因:
源代码中index.js 中注册的组件需要有name属性,代表注册的组件名称;import的文件是vue文件;
原网址: 访问
创建于: 2021-05-14 11:11:59
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论