个人npm 库的建立 - vue组件库

工作中难免有复用组件,只是复制代码的话,过于繁琐还不宜保存,故了想到了建立自己的npm包,封装常用的组件类。此篇文章中只谈vue-cli3.0下如何快速创建库,原生创建留到下一篇文章中

前提:创建一个vue-cli3.0的项目

  1. 将src文件夹改名为examples
  2. 根目录下新增packages文件夹
  3. 新建 .npmignore文件(上传npm所需)
  4. 新建 vue.config.js
    具体

首先,在packages文件夹下写入我们需要保存的组件
详细目录如下:
在这里插入图片描述
src中 .vue文件就是自己的组件不再展示
textarea下index.js文件

import Virtual from './src/main.vue'
import CircleProgress from './src/circleProgressBar.vue'
import Redio from './src/redio.vue'

Virtual.install = function (Vue) {
  Vue.component(Virtual.name, Virtual)
}

CircleProgress.install = function (Vue) {
  Vue.component(CircleProgress.name, CircleProgress)
}

Redio.install = function (Vue) {
  Vue.component(Redio.name, Redio)
}

export default [Virtual, CircleProgress, Redio]

packages下的index.js

// 导入整合组件
import Virtual from './textarea/index'
// 存储组件列表
const textareas = Virtual

// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
const install = function (Vue) {
  // 判断是否安装
  if (install.installed) return
  // 遍历注册全局组件
  textareas.map(component => Vue.component(component.name, component))
}

if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue)
}

export default {
  // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
  install,
  // 以下是具体的组件列表
  textareas
}

packages里的操作就完成了,再在examples下man.js中引入组件测试功能

import TagTextarea from '../packages/index'
Vue.use(TagTextarea)

打开vue.config.js 配置入口文件,修改入口 不然启动不了项目

module.exports = {
  // 将 examples 目录添加为新的页面
  pages: {
    index: {
      // page 的入口
      entry: 'examples/main.js',
      // 模板来源
      template: 'public/index.html',
      // 输出文件名
      filename: 'index.html'
    }
  },
  productionSourceMap: false
}

测试完成后,打开 .npmignore 。屏蔽不必上传的东西

node_modules/
examples/
packages/
public/
vue.config.js
babel.config.js
*.map
*.html

打开papckage.json 编写配置

{
  "name": "wuyi-template", //包名
  "version": "0.1.2", //版本
  "description": "Personal component library of cy", //介绍
  "main": "lib/cy-virtual.umd.min.js", 入口文件
  "private": false, // 是否私人
  "license": "MIT", // 许可证
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "lib": "vue-cli-service build --target lib --name cy --dest lib packages/index.js" // 发布npm前打包命令
  }
}

最后有npm账号的话 就 npm login 登录 ,再 npm publish 上传就能正常使用自己的包了
没有的到npm官网注册一个账号,再执行以上操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值