vue封装公共组件库并发布到npm库

利用的原理:

  vue框架提供的api: Vue.use( plugin),我们把封装好组件的项目打包成vue库,并提供install方法,然后发布到npm中。
  Vue.use( plugin )的时候会自动执行插件中的install方法。

一、组件库代码目录调整

1、根目录创建packages文件夹
2、在packages文件夹中新增components文件夹  ——用于存放所有的组件
3、在packages文件夹中新增index.js
【以后我们的所有操作都是基于packages这个文件进行的,也就是将它打包成dist】
4、把src改成examples  ——用于进行代码测试

 二、配置文件

1、packages/index.js文件

// 导入组件
import MyButton from './components/MyButton.vue'

// 组件列表
const components = [MyButton]

// 定义install方法,接收vue作为参数。
const install = function (Vue) {
  components.forEach(component => {
    Vue.component(component.name, component)
  })
}

// 判断是否是直接引入文件(通过script导入),如果是,就不用调用Vue.use()
if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue)
}

// 导出install
export default {
  install
}

2、新增vue.config.js配置 

const path = require('path')
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  pages: {
    index: {
      entry: 'examples/main.js',// 因为我们改了src目录,所以对应的入口文件配置也要做修改
      template: 'public/index.html',
      filename: 'index.html',
    },
  },
  // 扩展webpack配置,使packages加入编译
// 通过chainWebpack对于项目进行配置,使用babel处理:将高版本语法转成低版本语法
 chainWebpack: (config) => { config.module .rule('js') .include.add(path.resolve(__dirname, 'packages')) .end() .use('babel') .loader('babel-loader') .tap((option) => { // 修改选项 return option }) } })

 

三、打包

vue-cli 给开发者提供了很多构建目标的命令,我们可以将我们的vue项目构建成应用、库或者Web Components组件。
构建成库在vue-cli官方文档中找到如下命令:
  vue-cli-service build --target lib
在package.json文件中的script下加入该条指令,并且指定打包路径为 packages/index.js

 然后打包:

npm run lib

打包成功后,得到如下文件,其中有不同规范下的js文件

 四、将组件库上传到npm

1、设置package.json中的配置项

如果想把包发布到npm上, package.json 中的private必须为fasle,并且name必须为npm上没有的包,否则不能上传,同时我们可以指定入口文件"main": "dist/buttonn-ui.umd.min.js"
也可以添加个人信息  

 2、在项目的根目录下增加一个.npmignore文件

这个文件的作用是将一些不需要上传到npm的路径、文件进行忽略,我们在上传到npm时就不会把这部分上传了。只上传dist 路径下的打包文件,不需要上传源码。

 3、上传到npm

(1)npm config get registry  // 检查npm源是不是: https:/lregistry.npmjs.orgl,大多数人都改成了淘宝镜像,需要改回来
(2)npm login  // 登录npm,没有账号需要先注册
(3)npm publish  // 发布到npm库

发布成功后,过一会可以在官网查看发布的库: https://www.npmjs.com/

【注意,如果需要再次上传到 npm ,需要修改 package.json 中的版本号 version】

五、在项目中使用

 1、安装

npm install buttonn-ui

2、全局导入

import buttonnUi from 'buttonn-ui'

Vue.use(buttonnUi)

 

 


本文参考:
https://blog.csdn.net/qq_43322436/article/details/130805129
https://blog.csdn.net/weixin_45304198/article/details/130317464?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-130317464-blog-106998015.235%5Ev38%5Epc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-130317464-blog-106998015.235%5Ev38%5Epc_relevant_default_base3&utm_relevant_index=5

posted @ 2023-06-15 16:49  Stitchhhhh  阅读(1053)  评论(0编辑  收藏  举报