封装vue组件并发布到npm

1. 项目初始化

首先,要创建项目,封装vue的插件,我们初始化vue工程都是用:
vue create xx项目名
但是我们要写的是一个简单的vue组件,不需要依赖那么多而庞大的配置,所以,这里我们用简版的webapck配置模板:
vue init webpack-simple xx项目名
但是因为用了vue-cli 4 以上的版本(我是@vue/cli 4.5.15) ,报了个错

Command vue init requires a global addon to be installed.
Please run yarn global add @vue/cli-init and try again.

解决方法:npm install -g @vue/cli-init 然后继续创建vue init webpack-simple xx项目名

完成后安装依赖,启动项目

npm install
npm run dev

2.把组件写好并查看效果

此时编写组件就像平时写项目里封装组件一样,写好并查看效果,我这里写了个图片上传组件:

在这里插入图片描述
app.vue 里就正常引入查看效果:

<template>
  <div id="app">
    <div class="center">
      <yingVueUpload
        ref="upload"
        width='90px' 
        height='90px' 
        :maxCount="9" 
        proBarColor="#E10602"
        uploadUrl="http://localhost:3033/nav/uploadImg"
        :uploadCallBack="upCallBack"></yingVueUpload>
    </div>
    <button style="margin-top: 100px;" @click="getData">
      获取数据
    </button>
  </div>
</template>

<script>
import yingVueUpload from './ying-vue-upload'; // 引入
export default {
  components: {
    yingVueUpload
  },
  name: 'app',
  data () {
    return {
      
    }
  },
  methods: {
    getData() {
      console.log(this.$refs['upload'].getDataList())
    },
    upCallBack(res) {
      return res.url
    }
  }
}
</script>

在这里插入图片描述

觉得组件编写完成后,在组件目录下新建index.js文件,写入代码如下:

在这里插入图片描述

import component from './index.vue' // 引入当前组件

// Vue.js 的插件应当有一个公开方法 install 。第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象
// 参考:https://cn.vuejs.org/v2/guide/plugins.html#%E5%BC%80%E5%8F%91%E6%8F%92%E4%BB%B6
// 此处注意,组件需要添加name属性,代表注册的组件名称,也可以修改成其他的
component.install = Vue => Vue.component(component.name, component)//注册组件

export default component

Vue的插件必须提供一个公开方法 install,该方法会在你使用该插件,也就是 Vue.use(yourPlugin)时被调用。这样也就给 Vue全局注入了你的所有的组件。

3.修改配置项

我们只需单独打包编写好的vue组件即可,
修改 webpack.config.js ,主要是entry,output

const NODE_ENV = process.env.NODE_ENV;
module.exports = {
  entry: NODE_ENV == 'development' ? './src/main.js' : './src/ying-vue-upload/index.js',// 开发模式编译整个项目查看组件效果,编译打包模式直接打包组件
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    filename: NODE_ENV == 'development' ? 'build.js' : 'ying-vue-upload.js', // 打包出的组件写个名称,到时package.json读取这个文件作为入口
    library: 'ying-vue-upload', // 指定的就是你使用require时的模块名
    // 这里照写即可
    libraryTarget: 'umd', // 指定输出格式
    umdNamedDefine: true // 会对 UMD 的构建过程中的 AMD 模块进行命名。否则就使用匿名的 define
  },
  .....
  .....
}

修改package.json 文件:

// 发布开源需要将这个字段改为 false
"private": false,
// 这个指 import xx 的时候它会去检索的路径
"main": "dist/ying-vue-upload.js",

原来在依赖里的vue移动到开发依赖
在这里插入图片描述
修改完成后执行npm run build 看下是否生效

创建.npmignore文件,上传到npm使用时,多余的源码文件可以去掉

.*
*.md
*.yml
src/
node_modules/
index.html
webpack.config.js

4.接下来直接发布组件到npm就好了

在npm官网注册账号,地址:https://www.npmjs.com/,注意邮箱要验证,会发送验证链接到你的注册邮箱,没有验证的话是不能发布代码的,看一下package.json 中 author 尽量与 npm 账户一致。切换到需要发包的项目根目录下,输入npm login,登录npm账号,输入用户名、密码、邮箱,然后npm publish。

5.下载安装,应用

npm install ying-vue-upload --save

//main.js中引入
import myPlugin from ‘ying-vue-upload’
Vue.use(myPlugin);

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值