💯你想知道的:如何在vite上开发vue插件并且发布到npm

331 阅读2分钟

技术选型

vite3, vue3,2+, rollup,node14+,npm6+

第一步 使用vite搭建vue3,并且添加配置组件

  1. pnpm create vite官网查看
  2. 新建文件夹src/package,并且添加组件

1668092339023.png
3. 写好的组件不要忘记命名

<script>
export default { name: 'watermark' }
</script>
  1. 新建 src/package/index.js 插件封装
import watermark from './watermark/watermark.vue';
const comlist = [watermark]
export default {
    install: (app) => {
        comlist.forEach(com =>{
            app.component(com.name,com)
        })
    }
  }
  
  1. 当前项目测试
//main.js
import tool from './package/index.js'
const app = createApp(App)
app.use(tool)
app.mount('#app')
//APP.vue
<script setup>

</script>

<template>
  <watermark></watermark>
</template>

<style scoped>

</style>

  1. 成功,展示效果

1668092869144.png

第二步 配置rollup

  1. 全局安装rollup:npm install --global rollup官网查看
  2. 根目录新建 rollup.config.js
  3. 项目安装相关rollup插件 官方推荐和介绍
插件名称作用
rollup-starter-lib作为 Rollup 运用于库
rollup-starter-app作为 Rollup 运用于应用程序
@rollup/plugin-node-resolve插件可以让 Rollup 查找到外部模块
@rollup/plugin-babel支持的最新 JavaScript 特性
@babel/core把 js 代码分析成 ast,方便各个插件分析语法进行相应的处理
@babel/preset-env根据指定的执行环境提供语法装换,也提供配置 polyfill
postcss通过 js 插件来转换 css 的工具
rollup-plugin-postcss需要postcss依赖
rollup-plugin-vue来解析vue文件
  1. 进入rollup.config.js 配置
  //  rollup.config.js
  import vuePlugin from "rollup-plugin-vue";
  import postcss from "rollup-plugin-postcss";
  // 如果依赖模块中存在 es 模块,需要使用 @rollup/plugin-node-resolve 插件进行转换
  import nodeResolve from '@rollup/plugin-node-resolve'
  import babel from '@rollup/plugin-babel';

  export default {
    input: "./src/package/index.js",
    output: {
      file: "build/index.es.js",
      format: "es",
    },
    external: ['vue'], // 依赖模块
    plugins: [
      nodeResolve(),
      vuePlugin(),
      babel({  // 排除node_modules
          exclude: 'node_modules/**',
          babelHelpers:"bundled"
        }),
      postcss(),
    ],
  };

5.package.json 配置

{
  "name": "vite-plugin-vue-tool",
  "private": false,//是否为私有
  "version": "0.0.2-1",//版本配置
  "type": "module",//类型
  "main": "build/index.es.js",//入口文件
  "repository": {//存储库
    "type": "git",
    "url": "https://github.com/zhaozhenghao/vite-plugin-vue-watermark"
  },
  "bugs": {//bug指向
    "url": "https://github.com/zhaozhenghao/vite-plugin-vue-watermark/issues",
    "email": "zhaozhenghao856@gmail.com"
  },
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "br": "rollup -c"//启动命令 指向rollup.config.js
  },
  "keywords": [//配置关键词
    "vue",
    "vue3",
    "vite",
    "rollup"
  ],
}

官网插件

本地测试,修改错误

  1. 第一步, 本地测试自己的写的插件 npm link 生成本地地址
  2. 第二步,在其他项目如A上运行pnpm link 插件项目名称
  3. 在项目A进行测试,调整插件是否存在问题
  4. 开始打包,在终端执行
pnpm br

第三步 发布插件

终端执行,注意发包时,本地npm环境要指向官网,而不是淘宝源 注意事项:每次发包版本只能递增不能递减

  1. 登录你在npm上的账号npm login
  2. 发包npm publish 结果展示

image.png

插件成功展示

image.png

vite-plugin-vue-tool