IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 发布自己的Vue组件库到npm让别人可以下载,像element-ui一样一个npm包发布多个组件 -> 正文阅读

[JavaScript知识库]发布自己的Vue组件库到npm让别人可以下载,像element-ui一样一个npm包发布多个组件

组件样式

发布自己的npm包

?注册npm账号

? ? ? ?https://www.npmjs.com/

第一步:使用 vue init webpack-simple yyl-npm-practice 初始化项目

提示: 不要用 vue init webpack npm-practice 初始化项目,因为我们就开发个组件,不需要那么多配置,webpack-simple就够了。

初始完项目,按照提示输入项目信息即可,然后 npm install , npm run dev 让项目跑起来,如下图:

?第二步:修改文件目录

1.在src目录下新建components文件夹,然后在此文件夹下建立Main.vue文件(我写了两个组件就建了两个)

2.在根目录下新建 index.js文件, index.js是把Main.vue和user.vue文件暴露出去的出口 。

红色的就是新建的文件

第三步:修改文件内容,配置

Main.vue中内容如下(注意name)

<template>
  <div class="user-container">
      <div class="container">
            <img src="../assets/title.jpg" alt="" class="title-img-bg">
            <div class="user">
                <img :src="propData.user_img" alt="" class="user-img">
            </div>
            <div class="user-name">{{propData.userName}}</div>
            <ul>
                <li>
                    <div class="left">部门</div>
                    <div class="right">{{propData.department}}</div>
                </li>
                <li>
                    <div class="left">邮箱</div>
                    <div class="right"><a href="#">{{propData.mail}}</a></div>

                </li>
                <li>
                    <div class="left">工号</div>
                    <div class="right">{{propData.Job_number}}</div>
                </li>
                <li>
                    <div class="left">职务</div>
                    <div class="right">{{propData.userPost}}</div>
                </li>
                <li>
                    <div class="left">城市</div>
                    <div class="right">{{propData.city}}</div>
                </li>
            </ul>
      </div>
  </div>
</template>

<script>
export default {
//每个组件中的name是必须要有的
  name: 'Main',
  props: {
        propData: {
          type: Object,
          default:{}
        }
    },
}
</script>
<style scoped>
html{
    background: #fff;
}
div{
    margin: 0;
    padding: 0;
}
.container{
    width: 321px;
    height: 100%;
    background: #fefefe;
}
.container .title-img-bg{
    width: 100%;
    height: 150px;
}
.container .user{
    width: 96px;
    height: 96px;
    background: #ffff;
    border-radius: 50%;
    margin-top: -50px;
    margin-left: 20px;
    z-index: 999;
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
}
.container .user .user-img{
    width: 92px;
    height: 92px;
    border-radius: 50%;
}
.container .user-name{
    font-size: 22px;
    color: #000;
    font-weight: 500;
    margin-top: 55px;
    padding-left: 20px;
}
.container ul{
    padding-top: 35px;
}
.container ul li{
    display: flex;
    padding: 10px 0;
}
.container ul li .left{
    color: #697078;
    font-size: 16px;
    padding-left: 17px;
    width: 85px;
    text-align: left;
}
.container ul li .right{
    width: 188px;
    font-size: 14px;
}
</style>

user.vue文件内容如下

<template>
    <div>
        <h1>{{UserName}}</h1>
    </div>
</template>

<script>
export default {
    //注意
    name: 'User',
    props:{
        UserName:{
            type:String,
            default:''
        }
    }
}
</script>

2.App.vue内容如下:

<template>
  <div>
    <!-- Main.vue组件 -->
    <Main :propData='userInfo'/> 
    <!-- user.vue组件 -->
    <User :UserName="username"/>
  </div>
</template>

<script>
import Main from '../src/components/Main.vue'
import User from '../src/components/user.vue'
export default {
    data(){
      return {
            userInfo:{
              'user_img':require('./assets/logo.png'), //图片使用自己文件中的
              'userName':'测试',
              'department':'Web前端',
              'mail':'*****.com',
              'Job_number':'1111',
              'userPost':'Web前端',
              'city':'北京'
            },
            username:'测试'
      }
    },
    components:{
      Main,
      User
    }
}
</script>

<style>
div,h1,h2,h3,h4,h5,h6,ul,li,p{
  padding: 0;
  margin: 0;
}
a{
  text-decoration: none;
}
li{
  list-style: none;
}
</style>

3.index.js内容如下:

import Main from './src/components/Main'
import User from './src/components/user'

const components = [
    Main, User
]
const install = function (Vue) {
    if (install.installed) return
    // 遍历注册全局组件
    components.map(component => Vue.component(component.name, component))
    
    // 这一步判断window.Vue是否存在,因为直接引用vue.min.js, 它会把Vue绑到Window上,我们直接引用打包好的js才能正常跑起来。
    if (typeof window !== 'undefined' && window.Vue) {
        install(window.Vue)
    }
}
export default install

?index.js内容改完如下, 因为使用 window.Vue.component('yyl-npm-practice', Main) 的时候 外部引用的时候 有可能会覆盖该组件,导致组件无法正常使用; 使用下面的的定义方式后, 在.vue 环境下 使用方式不变, 在只引用 ys-expression.js 环境下 需在 new Vue() 之前加 window['ys-expression'].default.install(); 所以我们在main.js中也写了同样的方法

?4.修改package.json(标红的就是新增和改变的属性)

?5.修改 webpack.config.js(就是修改entry和output)

?npm run build之后dist会出现map文件所以把devtoll可以提前修改一下

?

?npm run dev 让项目跑起来,我们在App.vue里面调用该组件,并做测试,调试。

第四步: 发布到npm

前面npm都注册好之后,在该组件根目录下的终端(就是 平常输入 npm run dev的地方),运行npm login,会提示输入个人信息,Email是发布成功后,自动给这个邮箱发送一个邮件,通知发布成功,输入完,登录成功。

Enter one-time password from your authenticator app:这条命令就是一次性密码如果没有一次性密码不会发布上去,?

一次性密码设置如下:

1.进入Account

2.设置2FA

?

选择Authorization and publishing 然后submit

?这个时候就需要在手机下载一个Authenticator APP

这个密码就可以输入在?Enter one-time password from your authenticator app: 这里 就可以登陆成功啦

最后就可以发布了?npm publish?如下,发布成功(每次发布的时候package.json 里面的 version不能一样,不然不能发布出去,手动改下版本就行)

?去自己的npm上点击Packages ,就能看到发布的包

?包的具体信息如下:

?

使用方法 :?

1.安装方法

?2. main.js 全局安装:

import mycomponent from 'ji-npm-practice'

Vue.use(mycomponent)

页面使用组件

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 18:50:47  更:2022-01-30 18:51:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:24:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码