如何发布自己的npm包(vue组件)

简介: 如何发布自己的npm包(vue组件)

请添加图片描述

如何在NPM上发布自己的第一个vue组件库,是每一名vue前端开发人员必经的进阶之路,本文将结合作者的实践项目,为各位读者详细讲解所有的操作步骤,相信你在阅读本文后,就能立马动手。

由于本文的主要目的是讲解如何创建组件库并发布到NPM,因此对于组件的创建会一笔带过。

1.创建项目

打开cmd在项目中输入一下命令初始化一个vue的项目,名称自定义

vue create app

在src的同级目录下新建一个名称为myComponents的组件库,如图所示
请添加图片描述

2.配置自己的项目

myComponents是新增的一个目录,默认不被webpack处理,所以需要在vue.config.js里面配置组件库,以便webpack编译,没有vue.config.js的话,就在目录下新建一个。并在vue.config.js填入一下内容

module.exports = defineConfig({
  transpileDependencies: true,
  configureWebpack: {
    devtool: 'source-map'
},
// 强制内联CSS
css: {
    extract: false
},
// 扩展 webpack 配置,使 components 加入编译
chainWebpack: config => {
    config.module
        .rule('js')
        .include
        .add('/myComponents')//这里根据你文件夹名称自定义,每个人不一样
        .end()
        .use('babel')
        .loader('babel-loader')
        .tap(options => {
            // 修改它的选项...
            return options
        })
}

})

3.编辑自定义组件库

请添加图片描述

  1. 在myComponents文件加下新建一个tinyMce文件夹(此文件夹即是你对组件的命名),同时,在此文件夹下新建一个src目录,src下创建的.vue文件最好保证与文件夹tinyMce命名一致。
  2. 分别在myComponents文件夹和tinyMce文件夹下新建index.js文件,这是他们的入口文件,注意路径如上图所示,不要弄错了。
  3. 要将所有的静态资源文件等等放入myComponents文件夹下,比如我就放在了assets目录下,因为外部的其他文件是不会被打包上传的。

以tinyMce/src/tinymce.vue为例子,你们可以依照自己的组件名称进行对应的修改,代码如下:

import tinymce from './src/tinymce'

// 为组件提供 install 安装方法,供按需引入
tinymce.install = Vue => {
    Vue.component(tinymce.name, tinymce)
}

// 默认导出组件
export default tinymce

编写myComponents/index.js文件,对组件库进行导出。

import tinymce from './tinyMce/index'
const components = [
    tinymce
]
// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
const install = Vue => {
    // 判断是否可以安装
    if (install.installed) return
        // 遍历注册全局组件
    components.map(component => Vue.component(component.name, component))
}
// 判断是否是直接引入文件
if (typeof window !== 'undefined' && window.Vue) {
    install(window.Vue)
}
export default {
    // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
    install,
    // 以下是具体的组件列表
    tinymce
}

4.进行本地测试能否正常使用

请添加图片描述

如图在本地的src(注意不是tinyMce下的)下的main.js导入组件并使用,并在APP.vue里面直接使用自己的组件。请添加图片描述

并使用npm run serve运行查看能否运行成功

请添加图片描述

我成功了,接下来就可以来发布自己的npm包了

5.配置发布

在package.json的sript命令中新增一条编译组件库的命令

"lib": "vue-cli-service build --target lib --name landscape-components --dest lib myComponents/index.js"

执行编译命令 --- npm run lib

在这里插入图片描述

编译成功后,会得到一个lib文件夹如图所示

请添加图片描述

5.1配置package.json文件

参考如下

  "name": "chdemo_tinymce",//组件名称
  "version": "0.1.1",//版本号
  "private": false,//原来为true,要改成false,否则发布不出去
  "description": "tinymce富文本编辑器的插入文本图片等接口集成", //包的描述
  "main": "lib/landscape-components.umd.min.js", //入口文件
  "keywords": ["tinymce"],//关键词
  "author": { "name": "ymktchic" }, //作者

5.2添加.npmignore文件

这一步比较重要,旨在发布npm包的时候忽略不必要的文件上传,需要编译上传的只有lib文件夹,package.json,README.md这三个,其他的都可以忽略。

可以按照我的配置,配置如下

# 忽略目录
src
myComponents
node_modules
public
utils
# 忽略指定文件
vue.config.js
babel.config.js
*.map
jsconfig.json

6.发布自己的npm包

先在 npm 官网(https://www.npmjs.com/)上注册一个账号,注册过程略。此处注意注册完需要2FA六位动态码绑定,动态码每隔半分钟更新一次,此动态码用于发布,可以在个人Account里面去根据流程操作进行绑定。
请添加图片描述

登录

注册成功后,在输入npm login,一下要依次输入你的用户名,密码,邮箱和六位动态码

npm login

请添加图片描述

如果提示上图信息,便表示登录成功,接下来使用如下命令发布

如果没发布成功,可以尝试把原来使用淘宝镜像源的更换成官方源,因为淘宝是只读源

npm config set registry https://registry.npmjs.org
npm publish

如果提示输入--ocp的话,就再一次输入自己的六位动态码即可。

如果收到了npm发来的邮箱,便表示你发布成功啦。

请添加图片描述

下载使用

  1. 使用vue create app

新建一个项目 ,然后在项目下输入以下命令

npm install chdemo_tinymce//我的包是chdemo_tinymce,你们的是什么就填什么即可

如果安装不成功,依然是要换成官方镜像源,使用如下命令

npm config set registry https://registry.npmjs.org

如图,同样是在main.js中引入自己的文件
请添加图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hyeIPyLn-1656645076866)

然后在APP.vue里面自己使用,无需注册。

请添加图片描述
请添加图片描述

这样就大功告成啦!

感谢阅读,记录自己的踩坑经验,总结,希望帮到各位。
腾讯云服务器,65
在这里插入图片描述

目录
相关文章
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
958 2
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
1707 4
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
1929 0
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
820 161
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。
1380 159
|
JavaScript 前端开发 UED
Vue 表情包输入组件的实现代码:支持自定义表情库、快捷键发送和输入框联动的聊天表情解决方案
本文详细介绍了在 Vue 项目中实现一个功能完善、交互友好的表情包输入组件的方法,并提供了具体的应用实例。组件设计包含表情分类展示、响应式布局、与输入框的交互及样式定制等功能。通过核心技术实现,如将表情插入输入框光标位置和点击外部关闭选择器,确保用户体验流畅。同时探讨了性能优化策略,如懒加载和虚拟滚动,以及扩展性方案,如自定义主题和国际化支持。最终,展示了如何在聊天界面中集成该组件,为用户提供丰富的表情输入体验。
1064 8
|
JavaScript 前端开发 UED
Vue 表情包输入组件实现代码及详细开发流程解析
这是一篇关于 Vue 表情包输入组件的使用方法与封装指南的文章。通过安装依赖、全局注册和局部使用,可以快速集成表情包功能到 Vue 项目中。文章还详细介绍了组件的封装实现、高级配置(如自定义表情列表、主题定制、动画效果和懒加载)以及完整集成示例。开发者可根据需求扩展功能,例如 GIF 搜索或自定义表情上传,提升用户体验。资源链接提供进一步学习材料。
1023 1
|
移动开发 JavaScript 前端开发
vue中npm打包遇到× eslint —fix found some errors. Please fix them and try committing again.husky > pre-commit hook failed (add —no-verify to bypass)报错解决方案-卓伊凡
vue中npm打包遇到× eslint —fix found some errors. Please fix them and try committing again.husky > pre-commit hook failed (add —no-verify to bypass)报错解决方案-卓伊凡
659 7
vue中npm打包遇到× eslint —fix found some errors. Please fix them and try committing again.husky > pre-commit hook failed (add —no-verify to bypass)报错解决方案-卓伊凡

热门文章

最新文章

推荐镜像

更多
  • NPM