• vue组件打包并发布到npm


    一、创建项目

    vue create 项目名称

    二、配置相关文件

    1.修改文件名

    src目录更改为-examples // 改成 examples 用作示例展示
    新增 packages   用于编写存放组件

    2.根目录下新建 vue.config.js文件

    因为src 目录更名为 examples ,导致项目无法运行
    在 vue.config.js 添加以下配置

    module.exports = {
      pages: {
        index: {
          entry: "examples/main.js",
          template: "public/index.html",
          filename: "index.html"
        }
      }
    }

    然后就可以在 packages  新建组件了 例如以下截图

      packages/lemonUploads/index.js 添加以下代码

    1. // 导入组件,组件必须声明 name
    2. import LemonUploads from './index.vue';
    3. // 为组件提供 install 安装方法,供按需引入
    4. LemonUploads.install = function(Vue) {
    5. Vue.component(LemonUploads.name, LemonUploads);
    6. };
    7. // 默认导出组件
    8. export default LemonUploads;

    将packages中的所有组件导出

    packages下新建 index.js 并添加

    1. // 导入组件
    2. import LemonUploads from './lemonUploads/index';
    3. // 存储组件列表
    4. const components = [LemonUploads];
    5. // 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
    6. const install = function (Vue) {
    7. // 遍历注册全局组件
    8. components.forEach((component) => {
    9. Vue.component(component.name, component);
    10. });
    11. };
    12. // 判断是否是直接引入文件
    13. if (typeof window !== 'undefined' && window.Vue) {
    14. install(window.Vue);
    15. }
    16. export default {
    17. // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
    18. install,
    19. // 以下是具体的组件列表
    20. LemonUploads,
    21. };

    在组件项目中引入

    main,js中添加如下:

    1. // 导入组件库
    2. import LemonUploads from './../packages/lemonUploads/index'
    3. // 注册组件库
    4. app.use(Antd)
    5. app.use(LemonUploads)
    6. app.mount('#app')

    3.发布到npm

    1)更改配置文件-package.json

    1. "name": "lemon-upload",
    2. "version": "1.8.42",
    3. "private": false,
    4. "keyword": "上传文件 vue antdesign upload",
    5. "description": "基于vue3.x+antdesign的文件上传组件",
    6. "author": "LemonSong",
    7. "main": "",

    2)更改打包编译方式

    1. "scripts": {
    2. "serve": "vue-cli-service serve",
    3. "build": "vue-cli-service build",
    4. "lint": "vue-cli-service lint",
    5. "lib": "vue-cli-service build --target lib --name lemonUploads --dest lib packages/index.js"
    6. },

    3)新增.npmignore文件 写入一些不必要上传的文件名称

    1. .DS_Store
    2. node_modules/
    3. examples/
    4. public/
    5. packages/
    6. vue.config.js
    7. babel.config.js
    8. *.map
    9. *.html
    10. # local env files
    11. .env.local
    12. .env.*.local
    13. # Log files
    14. npm-debug.log*
    15. yarn-debug.log*
    16. yarn-error.log*
    17. # Editor directories and files
    18. .idea
    19. .vscode
    20. *.suo
    21. *.ntvs*
    22. *.njsproj
    23. *.sln
    24. *.sw*

     4)打包编译

    npm  run lib

    5)发布npm

    登录npm

    npm login

    发布命令

    npm publish

     

  • 相关阅读:
    uni-app vue3 setup nvue中webview层级覆盖问题
    破局模块总结 -- 宁向东的清华管理学课总结
    【Redis 常用五大数据类型】
    视频剪辑教程:视频嵌套技巧深度解析,提升剪辑水平的捷径
    elmentui el-select下拉输入不清空已选值
    |行业洞察·设计|《2024年设计行业AI应用调研报告-D5渲染器&青年建筑》
    【快应用】通知消息定时提醒
    剑指offer 05. 从尾到头打印链表
    uni-app : 生成三位随机数、自定义全局变量、自定义全局函数、传参、多参数返回值
    【雅思备考IELTS】美文阅读 艾米莉·勃朗特《呼啸山庄》Wuthering Heights by Emily Bronte
  • 原文地址:https://blog.csdn.net/qianqianNingmeng/article/details/126049167