zoukankan      html  css  js  c++  java
  • vue 之 封装成UI组件库

    注意点:在创建项目时,一定要注意名字,可以取 zmztya-ui

    第一步:新创建一个demo项目

    1/将src变为examples

    2/添加一个packages文件,用于存放控件,然后fonts也放入其中

    第二步:

    添加vue.config.js

    const { resolve } = require('path')
    const path  = require('path')
    module.exports = {
      pages: {
        index: {
          //修改项目的入口文件
          entry: 'examples/main.js',
          template: 'public/index.html',
          filename: 'index.html'
        }
      },
       //扩展 webpack 配置,是packages加入编译
      chainWebpack: config => {
        config.module
        .rule('js')
        .include.add(path.resolve(__dirname, 'packages')).end()
        .use('babel')
        .loader('babel-loader')
        .tap(options => {
          return options
        })
      }
    }

    第三步:在packages文件中添加index.js文件

    import Button from './Button.vue'
    import Dialog from './Dialog.vue'
    import Input from './Input.vue'

    import './fonts/iconfont.css'
    const components = [
      Button,
      Dialog,
      Input
    ]
    
    const install = (Vue) => {
      components.forEach(component => {
        Vue.component(component.name, component)
      })
    }
    
    /* 判断是否是直接引入文件,如果是,就不要调用Vue.use() */
    if (typeof window !== 'undefined' && window.Vue) {
      install(window.Vue)
    }
    
    export default {
      install
    }

    第四步:main.js

    import Vue from 'vue'
    import App from './App.vue'
    import zmztyaUI from '../packages'
    
    Vue.config.productionTip = false
    Vue.use(zmztyaUI)
    
    new Vue({
      render: h => h(App)
    }).$mount('#app')

    第五步进行打包:

    {
      "name": "zmztya-ui",  //打包的名字
      "version": "0.1.0",   //版本
      "private": true,
      "scripts": {
        "serve": "vue-cli-service serve",
        "build": "vue-cli-service build",
        "lint": "vue-cli-service lint",
        "lib": "vue-cli-service build --target lib packages/index.js"  //执行命令 指定打包的文件路径
      },
      "dependencies": {
        "core-js": "^3.6.5",
        "vue": "^2.6.11"
      },
      "devDependencies": {
        "@vue/cli-plugin-babel": "~4.5.0",
        "@vue/cli-plugin-eslint": "~4.5.0",
        "@vue/cli-service": "~4.5.0",
        "@vue/eslint-config-standard": "^5.1.2",
        "babel-eslint": "^10.1.0",
        "eslint": "^6.7.2",
        "eslint-plugin-import": "^2.20.2",
        "eslint-plugin-node": "^11.1.0",
        "eslint-plugin-promise": "^4.2.1",
        "eslint-plugin-standard": "^4.0.0",
        "eslint-plugin-vue": "^6.2.2",
        "sass": "^1.26.5",
        "sass-loader": "^8.0.2",
        "vue-template-compiler": "^2.6.11"
      }
    }
     
    执行 yarn lib  会生成 dist文件夹

    第六:写文档

    涉及的知识点
    vue基础语法
    组件基本语法(sync,provide,inject)
    插槽的使用
    props校验
    过渡与动画的处理
    计算属性与监听属性
    v-mode语法糖
    vue插件机制
    npm发布
    
    其实生成的lib文件有demo.html文件
    
    初始化
     vue create demo
    安装组件库
      yarn add zmztya-ui
    
    全局导入
     import zmztyaUI from 'zmztya-ui'
     import 'zmztya-ui/lib/zmztyaui.css'
    
     Vue.use(zmztyaUI)

    第七步: 上传

    创建 .gitignore文件 和 .npmignore文件,这两个文件用于在上传文件时忽略信息(注意:其实只要dist文件就可以了)

    .npmignore文件内容
    examples/
    packages/
    public/
    
    
    vue.config.js
    babel.config.js
    *.map

    npm上传操作(若安装了nrm的就要保证源是npm 不是cnpm)

    执行命令

    nrm ls

    npm login

     需要输入用户名

    需要输入密码

    需要输入邮箱

    会出现的问题

    409 Conflict - PUT https://registry.npm.taobao.org/-/user/org.couchdb.user:zmztya - [conflict] User zmztya already exists

    解决:需要重新设置"镜像源"

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

    npm publish

    就会开始发布了

    会出现的问题

    https://blog.csdn.net/qlingsu/article/details/105643070

  • 相关阅读:
    网页布局 选择符 选择符权重
    css基础
    新手入门html 表格 表单 超链接 图片
    新手入门html
    批量安装Windows系统
    无人值守批量安装服务器
    PXE实现无人值守批量安装服务器
    小白必看:零基础安装Linux系统(超级详细)
    项目实战:rsync+sersync实现数据实时同步
    rsync学习笔记
  • 原文地址:https://www.cnblogs.com/zmztya/p/14706268.html
Copyright © 2011-2022 走看看