最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 将个人封装的vue组件上传到npm全纪录

    正文概述 掘金(哎呦哥哥嗨你好)   2021-02-19   633

    前言

    面对越来越多的开源组件库,学会发布库已经是前端必须会的事情了,也算是为开源贡献一份力量,在网络上看了一些前者的文章,自己也算发布成功了,路不积跬步,无以至千里,一步一步来吧,本次就把自己发布的过程记录一下

    发布环境

    本次使用的是vue-cli的环境

    vue create priject-name //创建一个项目就好
    

    搭建库环境

    1.很多教程建议将src改成examples,但是这个和组件关系不太大,我个人觉得没必要改。在src文件夹下新建一个packages文件夹(装自己组件的文件夹),下图示例

    将个人封装的vue组件上传到npm全纪录

    2.然后可以在里面创建组件,我是随手写的demo,组件文件夹是按照elementui的结构,下图示例:

    将个人封装的vue组件上传到npm全纪录

    组件是两个盒子嵌套 一个粉色一个红色

    // main.vue
    <template>
      <div>
        <div class="box">
          <div class="slot">
            <slot />
          </div>
        </div>
      </div>
    </template>
    
    <script>
    export default {
      name: "testBox", //组件全局注册时需要name,
    };
    </script>
    
    <style lang="scss" scoped>
    .box {
      width: 300px;
      height: 300px;
      background: pink;
      .slot {
        width: 100px;
        height: 100px;
        background: red;
      }
    }
    </style>
    
    //index,js
    
    import testBox from './src/main.vue'
    
    // 为组件提供 install 安装方法,供按需引入
    testBox.install = (Vue) => {
        Vue.component(testBox.name, testBox)
    }
    
    export default testBox
    
    

    3.此时,组件书写完毕,进行全局注册,网上很多人说直接在packages文件夹底下直接写一个index.js进行注册,我个人觉得容易混淆,就在packages同层级写了一个installComponents.js

    将个人封装的vue组件上传到npm全纪录

    import testBox from './packages/testBox'
    
    const components = [
        testBox
    ]
    
    // 全局注册方法 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
    const install = function (Vue) {
        // 判断是否安装
        if (install.installed) return
    
        // 遍历注册全局组件
        components.forEach(component => {
            Vue.component(component.name, component)
        })
    
        // 判断是否是直接引入文件
        if (typeof window != 'undefined' && window.Vue) {
            install(window.Vue)
        }
    }
    
    export default {
        // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
        install,
        // 具体的组件
        testBox
    }
    

    不放心的话可以在本地试试,在mian.js中导入 然后vue.use(xxx),不出意外的话是成功的哈。。。

    发布npm

    接下来就是最重要的发布了,只能再本地跑也没啥用啊

    首先在package.json中新建一个打包命令,

     "scripts": {
        "lib": "vue-cli-service build --target lib --name plugin_demo --dest lib src/installComponents.js", //专属打包
     }
    
    --target: 构建目标,默认为应用模式。这里修改为 lib 启用库模式。
    
    --dest : 输出目录,默认 dist。这里我们改成 lib
    
    [entry]: 最后一个参数为入口文件,默认为 src/App.vue。这里我们指定编译 全局注册组件的installComponents.js
    

    执行编译任务

    npm run lib
    

    配置 package.json 文件中发布到 npm 的字段

    可以看看这篇文章,说的很详细 juejin.cn/post/684490…

    name: 包名,该名字是唯一的。可在 npm 官网搜索名字,如果存在则需换个名字。
    
    version: 版本号,每次发布至 npm 需要修改版本号,不能和历史版本号相同。
    
    description: 对包的描述,在npmjs.com上搜索时会显示,有助于用户在搜索时进行筛选
    
    main: 入口文件,该字段需指向我们最终编译后的包文件。
    
    keyword:关键字,以空格分离希望用户最终搜索的词。
    
    author:格式一般是${your name} ${email}, 当然也可以是一个github地址
    
    private:是否私有,需要修改为 false 才能发布到 npm
    

    以下是我的实例:

    将个人封装的vue组件上传到npm全纪录

    注册/登录npm

    注册就略过了,但是有一点是注册之后第一次发布包时会提示说要验证邮箱,这个很坑爹,我当时没注意一直提交不成功。。。,所以仔细留意一下

    登录 npm login
    

    输入账号密码邮箱之后

    发布  npm publish
    

    发布成功之后等一会npm上面就有你的包了 我们可以下载试一下

    npm i plugin_demo_components
    

    在mian.js中引入

    import plug from 'plugin_demo_components'
    
    Vue.use(plug)
    

    然后去测试一下组件,是不是发现没样式呢哈哈哈哈。没错! 因为没引入css啊,仔细回想一下使用elementui的时候是不是也引入了他的css的,好了,咱们引入一波

    import 'plugin_demo_components/lib/plugin_demo.css'
    

    ok 大工搞成

    将个人封装的vue组件上传到npm全纪录

    将个人封装的vue组件上传到npm全纪录

    以上就是我总结的如何发布组件到npm了。希望各位也可以提供更好的意见/建议哈!!!(美女镇楼) 将个人封装的vue组件上传到npm全纪录


    起源地下载网 » 将个人封装的vue组件上传到npm全纪录

    常见问题FAQ

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

    发表评论

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

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

    联系作者

    请选择支付方式

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