前言 我们为什么要写个组件上传到npm镜像上呢,我们肯定遇到过这样一个场景,项目中有很多地方与某个功能相似,你想到的肯定是把该功能封装成Component组件,后续方便我们调用。但是过了一段…
#### 前言
我们为什么要写个组件上传到
1 | npm |
镜像上呢,我们肯定遇到过这样一个场景,项目中有很多地方与某个功能相似,你想到的肯定是把该功能封装成
1 | Component |
组件,后续方便我们调用。但是过了一段时间,你的
1 | Leader |
让你去开发另一个项目,结果你在哪个项目中又看见了类似的功能,你这时会怎么做? 你也可以使用
1 | Ctrl + c + v |
大法,拿过来上一个项目封装好的代码,但是如果需求有些变动,你得维护两套项目的代码,甚至以后更多的项目….,这时你就可以封装一个功能上传到你们公司内网的
1 | npm |
上(或者自己的账号上),这样每次遇到类似的功能直接
1 | npm install |
安装
1 | import |
导入进来使用就可以,需求有变动时完全可以改动一处代码。
配置环境
笔者这里使用的是
1 | Webpack |
配置(有点菜,不要介意),也可以安装一个
1 | Vue-cli |
简单版的,它那里面有暴露
1 | Webpack |
的配置(也得修改自行配置),我们来配置一下打包组件环境,一般开发组件库都是使用的
1 | umd |
格式,这种格式支持
1 | Es Module |
、
1 | CommonJs |
、
1 | AMD |
三种引入方式使用,主要就是
1 | Webpack |
里的
1 | library |
和
1 | libraryTarget |
,如果不明白的看这里详解webpack的out.libraryTarget属性
项目结构
1 | |- /node_modules |
初始化Package.json
1 | npm init -y |
安装Webpack && Loader && Plugin
1 | cnpm i webpack webpack-cli -D |
css-loader style-loader 配置
1 | .css |
文件及样式使用
file-loader 配置特殊字体和图片使用
vue-loader 处理
1 | .vue |
文件后缀
vue 使用Vue语法
vue-template-compiler 处理
1 | .vue |
文件里的
1 | template |
模板语法
webpack.config.js
1 | const VueLoaderPlugin = require('vue-loader/lib/plugin') |
index.html
1 | <!DOCTYPE html> |
以上我们基本环境就搭建完啦,可以在终端使用
1 | npx webpack |
运行看看哦。
封装组件
我这里只做一个示例哈,代码就不写那么复杂,大家知道怎么打包使用就行,具体封装成啥样看你们公司需求啦。笔者这里使用tplv-k3u1fbpfcp-zoom-1.image ‘手把手教你写一个Vue组件发布到npm且可外链引入使用’)1
Element Ui
组件来做一个示例,相信大部分小伙伴公司也在使用1
Element Ui
。假如我们项目中有以下类似的功能就可以单独封装起来。
,后者则是我们打包好的文件
1 | Tag |
文件,默认
1 | main |
就去找这个入口文件。
1 | { |
如果淘宝镜像之前被更改,先改回来执行以下命令
1 | npm config set registry http://registry.npmjs.org |
注册完之后,执行
1 | npm login |
, 依次填写你的
1 | 用户名 |
、
1 | 密码 |
、
1 | 邮箱 |
执行
1 | npm publish |
发布,然后等待进度条完成即可。
整理一些常见的发布错误
这是因为镜像设置成淘宝镜像了,设置回来即可
1 | no_perms Private mode enable, only admin can publish this module |
一般是没有登录,重新登录一下
1 | npm login |
即可
1 | npm publish failed put 500 unexpected status code 401 |
包名被占用,改个包名即可,最好在官网查一下是否有包名被占用,之后再重命名
1 | npm ERR! you do not have permission to publish “your module name”. Are you logged in as the correct user? |
邮箱未验证,去官网验证一下邮箱
1 | you must verify your email before publishing a new package |
npm安装使用
1 | cnpm i custom-tag-waren -D |
main.js
1 | import Vue from 'vue' |
到此为止就完成了一个组件的打包上传下载,这样我们在每个项目需要的时候直接
1 | npm install |
安装就行,当需求改动的时候只改一个文件然后再次发布就行。是不是很方便啦。
外链引入
我们也不上传
1 | npm |
上,直接使用外链的形式使用,下面我们来看看
import引入
1 | <template> |
上面
1 | example |
中,我们看到直接引入了
1 | index.js |
文件并进行注册组件,直接就可以使用啦。
script引入
1 | <!DOCTYPE html> |
上面
1 | example |
中,直接使用
1 | script |
标签引入进来,也是注册完使用就可以。那么我们怎么知道他名字是Tag,这个你在封装组件的使用,必须指定Name名称。
1 | export default { |
感谢
谢谢你读完本篇文章,希望对你能有所帮助,如有问题欢迎各位指正。
我是蛙人(✿◡‿◡),如果觉得写得可以的话,请点个赞吧❤。
感兴趣的小伙伴可以加入 [ 前端娱乐圈交流群 ] 欢迎大家一起来交流讨论
写作不易,「点赞」+「在看」+「转发」 谢谢支持❤
往期好文
《分享12个Webpack中常用的Loader》
《聊聊什么是CommonJs和Es Module及它们的区别》
《带你轻松理解数据结构之Map》
《这些工作中用到的JavaScript小技巧你都知道吗?》
《【建议收藏】分享一些工作中常用的Git命令及特殊问题场景怎么解决》
《你真的了解ES6中的函数特性么?》
参考
https://blog.csdn.net/weixin_43606158/article/details/1068086
本文标题: 手把手教你写一个Vue组件发布到npm且可外链引入使用
本文作者: OSChina
发布时间: 2021年04月15日 09:46
最后更新: 2025年04月03日 11:07
原始链接: https://haoxiang.eu.org/5777c75f/
版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!