将自己封装的vue组件打包,发布到npm

前言

在做前端开发的过程中,有很多重复的代码,尤其是vue项目,不同项目之间相互拷贝代码实在太麻烦了。这里研究一下,如何将自己的代码打包发布到npm,方便以后直接npm install 再次使用。

账号准备

发布到npm,是需要账号的,首先可以先去https://www.npmjs.com/去注册一个账号,注意记住用户名和密码。

然后在本地电脑打开命令窗口,输入npm login ,然后根据提示输入刚刚申请的npm用户名、密码、邮箱。注意一定要输入命令时,自己的npm镜像源地址一定得是官方地址,不能是淘宝镜像,要不然特别容易失败。

插件构建

1.创建项目

使用下面命令创建项目,步骤和创建vue项目一样

vue init webpack-simple location-map-image  #最后的是你的项目名,可以根据自己情况调整

使用下面的命令,让项目正常跑起来,

#安装依赖
npm install

npm run dev

2.开发插件

  • 在src目录下创建components文件夹,新建LocationMapImage.vue文件,文件里的代码我就不公布了,都是自己的插件代码,除了对package.json里的插件有依赖,不依赖于其他文件。

  • 在App的vue文件中,引入这个插件,方便自己调试插件使用,放心是不会影响后面的打包与发布的
<template>
  <div id="app" style="width: 100%;height: 100%">
   <location-map-image :geo-json="geoJson"></location-map-image>
  </div>
</template>

<script>
  import LocationMapImage from "./components/LocationMapImage";
export default {
  name: 'app',
  components:{
    LocationMapImage
  },
  data () {
    return {
      geoJson:{
        "type": "Polygon",
        "coordinates": [
          [
            [
              109.48974609375,
              34.66935854524543
            ],
            [
              108.25927734375,
              31.952162238024975
            ],
            [
              111.81884765624999,
              30.334953881988564
            ],
            [
              114.2138671875,
              31.27855085894653
            ],
            [
              113.92822265625,
              32.861132322810946
            ],
            [
              112.8076171875,
              34.32529192442733
            ],
            [
              111.9287109375,
              34.97600151317588
            ],
            [
              109.48974609375,
              34.66935854524543
            ]
          ]
        ]
      }
    }
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}

body,html{
  height: 100vh;
  width: 100vw;
  padding: 0;
  margin: 0;
}
</style>
  • 修改index.js文件,方便vue项目引入
import LocationMapImage from './src/components/LocationMapImage'
import _Vue from 'vue'

LocationMapImage.install = Vue => {
  if (!Vue) {
    window.Vue = Vue = _Vue
  }
  Vue.component(LocationMapImage.name, LocationMapImage)
}
export default LocationMapImage;
  • 将package.json 中private改为false,不然无法发布,同时增加main属性,表明程序的入口

  • 修改 webpack.config.js

如下图,根据自己的实际情况调整。入口会根据开发环境 ,生产环境切换, main.js 是npm run dev 的入口,就是App.vue, 用于调试/测试我们开发的组件;   index.js是Main.vue, 就是我们开发的组件,我们打包到生产环境打包就只是单纯的 组件

  • 修改index.html,配置引入自己编辑的js文件

 

执行npm run build 生成编译后的代码文件

到这里就完成了

 

dist文件夹下除了会生成编译后的代码文件,还会生成源码文件.map。可以通过调整webpack.confg.js,控制不生成map文件,将sourceMap的true改为false

3.调整发布配置

发布

输入npm publish 命令即可完成发布

发布完成后,前往npm官网,登录自己的账号,点击packages,就可以看到发布的包,正常发布成功后,会向你的邮箱发一个邮件

验证

新建一个vue项目,直接npm install 你发布的插件名  --save,

然后在页面中引入即可验证。和其他的vue 的UI插件用法一样

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值