vite 创建Vue3自定义指令集合插件,并发布npm

  1. 创建项目

    javascript 复制代码
    npm create create-vite@latest
  2. 项目目录结构

    1. 将没必要的都删点,不删除也行;创建对应的目录结构 在src 下创建 packages 目录,再创建 directives 文件夹 用来存放对应的指令js代码,同级创建一个 index.js 文件。用来统一引入管理的需要注册的指令

    2. index.js 代码是这样的

      javascript 复制代码
      import date from "./directives/date"; // 时间处理
      import move from "./directives/move"; // 移动处理
      import resize from "./directives/resize";
      
      const directiveList = [move, date, resize];
      
      const install = (App) => {
        // 批量注册自定义指令
        directiveList.forEach((item) => {
          item(App);
        });
      };
      export default { install };
    3. 然后 main.js 还得执行install 方法,然后就成功全局注册封装好的自定义指令了,接下来就是封装,打包,上传,下载验证

      javascript 复制代码
      import { createApp } from "vue";
      import App from "./App.vue";
      
      import install from "./packages/index";
      
      const app = createApp(App);
      
      install.install(app);
      
      app.mount("#app");
    4. vite.config.js 也需要改一下配置

      javascript 复制代码
      import { defineConfig } from "vite";
      import vue from "@vitejs/plugin-vue";
      import path from "path";
      
      export default ({ mode }) => {
        return defineConfig({
          plugins: [vue()],
          // 运行服务配置
          server: {
            host: "0.0.0.0",
            port: 8889,
            open: true,
          },
          //这里进行配置别名
          resolve: {
            alias: {
              "@": path.resolve("./src"), // @代替src
            },
          },
          // 打包配置
          build: {
            outDir: "dist",
            // 兼容
            target: "es2015",
            sourcemap: false,
            lib: {
              entry: path.resolve(__dirname, "src/packages/index.js"), // 打包入口
              name: "custom-directives", // 打包后的名称
              fileName: (format) => `custom-directives.${format}.js`,
            },
            rollupOptions: {
              // 确保外部化处理那些你不想打包进库的依赖
              external: ["vue"],
              output: {
                // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
                globals: {
                  vue: "Vue",
                },
              },
            },
          },
        });
      };
    5. 在修改 package.json 文件配置

      javascript 复制代码
      {
        "name": "custom-directives",
        "private": true,
        "version": "0.0.0",
        "type": "module",
        "scripts": {
          "dev": "vite",
          "build": "vite build",
          "preview": "vite preview"
        },
        "files": [
          "dist"
        ],
        "main": "./dist/custom-directives.umd.js",
        "module": "./dist/custom-directives.es.js",
        "exports": {
          ".": {
            "import": "./dist/custom-directives.es.js",
            "require": "./dist/custom-directives.umd.js"
          }
        },
        "dependencies": {
          "dayjs": "^1.11.13",
          "vue": "^3.4.37"
        },
        "devDependencies": {
          "@vitejs/plugin-vue": "^5.1.2",
          "vite": "^5.4.1"
        }
      }
    6. 基本可以了,然后就是打包,生成dist 文件夹,切换到 dist 文件目录下。执行 npm init -y, 生成 配置文件,我的是这样的

      javascript 复制代码
      {
        "name": "custom-directives-qingyun", // 你的插件名称
        "private": false,
        "version": "1.0.3",
        "main": "custom-directives.es.js",
        "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1"
        },
        "keywords": [],
        "author": "",
        "license": "ISC",
        "description": ""
      }
    7. 然后还可以自己加 README.md 文件,我的是这样的

  3. 注册npm 账号(有账号可以直接跳过)

    1. 切换镜像

      javascript 复制代码
      npm config set registry=https://registry.npmjs.org
    2. 注册

      javascript 复制代码
      npm adduser

      依次填入账号、密码、邮箱, 填写完成后邮箱会收到一个npm发的一次性密码(也就是验证码) 再次填入即可,如果还未填写就报错

    3. 提交代码,一定是在 dist 目录下提交的,别搞错了

      javascript 复制代码
      npm publish
    4. 成功了是这样的

    5. 然后去npm 自己的账号下看看 package ,估计也需要梯子才能访问正常

    6. 上传成功就是 下载了

      javascript 复制代码
      npm i custom-directives-qingyun
  4. 如何使用

    1. 全局引入
    javascript 复制代码
    import { createApp } from "vue";
    import "./style.css";
    import App from "./App.vue";
    import index from "./plugins/index";
    import customDirectivesQingyun from "custom-directives-qingyun";
    
    const app = createApp(App);
    
    app.use(index);
    app.use(customDirectivesQingyun);
    app.mount("#app");
    1. 使用,搞个div 试试

      javascript 复制代码
          <div class="box" v-resize="'width'"></div>

      一切正常,

  5. 看不懂或者有问题的地方可以多评论,我会及时回答

相关推荐
lastHertz6 天前
openskill 实战指南:像管理 npm 包一样管理你的 AI Skill
前端·人工智能·npm
qq_589666057 天前
npm install npm install -g @vue/cli 分别是什么意思以及安装路径
前端·vue.js·npm
Dreamboat-L8 天前
NVM的安装与使用(保姆级教程)
npm·node.js
无责任此方_修行中9 天前
踩坑实录:为什么 `pnpm run` 会偷偷帮你装依赖?—— 浅析 pnpm 与 npm run 的底层差异
javascript·后端·npm
ShiXZ21311 天前
指令集-NPM 常用指令速查手册
前端·npm·node.js
是烨笙啊11 天前
从 npm 与 Bun 的选择看 AI 时代的“最佳实践”焦虑
前端·人工智能·npm
小杍随笔11 天前
【 .npmrc 终极配置指南:统一管理 npm/pnpm 缓存与全局目录,告别磁盘混乱】
前端·缓存·npm
ppshuX12 天前
npm-cli-造轮子初体验
npm
前端工作日常13 天前
我学习到的npx内部实现机制
npm
minglie114 天前
npm ali-oss库依赖冲突
前端·npm