最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    正文概述 掘金(可爱子)   2021-07-27   558

    1.注意

    本文主要是模拟将组件和常见的utils打包到npm,结果就是在npm平台上任何人都能搜到这个包,是一种共享的行为,是公开的!方法是比较适用于个人或者公司愿意将一些稳定的包公开,给大家共同使用,并且长期维护

    不适用于:
    假设我司好几个项目,有很多重复的组件,utils,想减少代码复用,较少维护成本,所以建立npm私有仓储,只有项目内部使用,不公开,这种就千万不要发到公开平台去了,可参考使用 Verdaccio 搭建 npm 私有仓储

    2.打包成npm 包的流程(vue页面代码)

    2.1 vue页面代码

    父页面

    <template>
      <div id="app">
        <welcome
          
        />
      </div>
    </template>
    
    <script>
    import welcome from './components/welcome.vue'
    export default {
      components: {
         welcome,
      },
      name: 'App',
    }
    </script>
    

    子页面-公共组件welcome

    <template>
      <div class="each-page-title">欢迎进入{{ title }}</div>
    </template>
    <script>
    export default {
      props: {
        title: {
          type: String,
          required: true,
        }
      },
    }
    </script>
    
    <style scoped>
      .each-page-title {
        text-align: center;
        color: red;
        background-color: yellowgreen;
      }
    </style>
    

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    2.2 将vue组件打包到npm
    1 新建包bingxixi-common-title->新建src-> 初始化
    mkdir bingxixi-common-title
     这里的包名,我是由 项目名+功能
    cd bingxixi-common-title
    mkdir src
     待会把我们的welcome.vue放到src地下(一般是src地下,如果是单纯index.js页面,我觉得可以不用放)
    npm init
    这里如果文件名没问题的话,直接enter就好
    
    2.在src同级建立一个index.js的文件
    import welcome from './src/welcome'
    export default welcome
    
    3.创建npm 帐号以及邮箱验证

    进入官网,输入帐号,密码,邮箱,并且要把这里记录下来,待会要用
    如果有收到邮件就去邮箱验证一下,或者在登录不上去的时候去看看邮箱需要验证(邮箱一定要验证一下)

    4.正式发布

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    在bingxixi-common-title文件下进行git操作

    npm login
    #如果你们公司有自己的默认npm仓库或者使用的淘宝镜像,注意需要指定一下仓库地址;
    `npm login --registry=https://registry.npmjs.org`
    
    依次让你输入用户名、密码、和邮箱
    Username: 
    Password: 
    Email: (this IS public)
    
    npm publish --registry=https://registry.npmjs.org
    

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    以上就是发布成功了~

    5.查询

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    6.vue里面如何使用这个包

    1.安装

    npm i bingxixi-common-title --save
    

    2.main.js里面引入,并且全局注册

    import welcome from 'bingxixi-common-title'
    Vue.component('welcome', welcome);
    

    3.刚刚的公共组件不需要了,只保留父页面 父页面代码

    <template>
      <div id="app">
        <welcome
          
        />
      </div>
    </template>
    
    
    7.如何更新包以及添加md文件

    1 新建README.md文件并写入规范,用markdown写就行

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    这些使用说明,随便在npm找个,看别人怎么写的,随便改改就行

    2.更新包

    npm version patch
    npm publish --registry=https://registry.npmjs.org
    

    注意:npm version patch是在你原有的版本号,假设v1.0.0,他会在这个基础上加1,如果你的版本不是加1,你可以不用npm version patch,直接手动改package.json,然后再npm publish --registry=https://registry.npmjs.org

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    8.如何避免每次都要我输入--registry=registry.npmjs.org
    在src同级加上.npmrc文件
    通过指令npm config edit
    将下面位置改成registry=https://registry.npmjs.org
    以后就不用运行指令每次都要加这句话拉
    

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    3.2.打包成npm 包的流程(utils代码)

    3.1 vue页面代码以及utils

    vue页面

    <template>
      <div id="app">
        call me : {{ userPrivate(phone) }}
        <br>你的捐款是{{ money }}, 总共有 {{ userPrivate(money)}} 位数 
      </div>
    </template>
    
    <script>
    import { userPrivate, getNumBit } from './utils/index'
    export default {
      name: 'App',
      data() {
        return {
          phone: 18819168888,
          money: 12345.88,
          userPrivate,
          getNumBit,
        }
      }
    }
    </script>
    

    utils

     /**
       * 用户手机信息加密显示
       * @param { Number, String } phone 用户手机/帐号
       */
    module.exports = {
      // 给电话号码加密
      userPrivate(phone) {
        const phoneStr = String(phone)
        if (!phone || phoneStr.length < 11) return phone
        const privateIndex = phoneStr.indexOf('86') > -1 ? 5 : 3
        return `${phoneStr.substring(0, privateIndex)}****${
        phoneStr.substring(privateIndex + 4, phoneStr.length)}`
      },
      // 获取数字的整数位长度
      getNumBit(num) {
        let intNum = num.toFixed(0);
        return intNum.length;
      }
    }
    

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    2.2 将utils打包到npm
    1 新建包bingxixi-common-utils->将utils的index.js放到bingxixi-common-title文件底下(直接做入口文件)->初始化
    mkdir bingxixi-common-utils
     这里的包名,我是由 项目名+功能
    cd bingxixi-common-utils
    npm init
    这里如果文件名没问题的话,直接enter就好
    
    3.4.5.7步骤同上
    6.vue里面如何使用这个包

    1.安装

    npm i bingxixi-common-utils --save
    

    2.main.js里面引入,并且全局注册

    import { userPrivate, getNumBit } from 'bingxixi-common-utils'
    Vue.prototype.$userPrivate = userPrivate
    Vue.prototype.$getNumBit = getNumBit
    

    3.页面代码

    <template>
      <div id="app">
        call me : {{ $userPrivate(phone) }}
        <br>你的捐款是{{ money }}, 总共有 {{ $userPrivate(money)}} 位数
      </div>
    </template>
    
    <script>
    export default {
      name: 'App',
      data() {
        return {
          phone: 18819168888,
          money: 12345.88,
        }
      }
    }
    </script>
    
    7.添加md文件

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    3.结尾哦~

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    推荐从0到1发布一个npm包


    起源地下载网 » 从0开始将vue组件和utils打包并发布到npm(非私有仓储)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元