开发流程
1.开发Vue组件页面;
不需要安装Vue,只使用template格式开发即可;
使用Element或者iView组件,也无需安装到组件库中。
<template> <div>This is a rollup vue and {{ vueTest }}</div> </template> <script> export default { name: "vue-test", data() { return { vueTest: "vue rollup", }; }, }; </script>
2.install 方法添加插件 Vue.component();
import VueTest from "./VueTest.vue"; VueTest.install = function(app) { app.component("VueTest", VueTest); }; export default VueTest;
3.定义组件库并输出;
import VueTest from "./test"; const components = [VueTest]; const install = app => { if (install.installed) return; components.forEach(component => { app.component(component.name, component); }); }; if (typeof window !== "undefined" && window.Vue) { install(window.Vue); } const myUI= { version, install }; export { VueTest }; export default myUI;
4.rollup 打包;
rollup -c
5.测试;
6.发布;
上传到GitHub
发布到npm
注册npm账号->验证邮箱->确认包名是否有重名->每次publish需要更改版本号
创建 publish.sh 文档,运行 sh 文件,执行发布命令
1).先将 npm config 的 registry 改到官方地址;2).登录,输入用户名、密码和邮箱;3).发布publish;4).修改 registry 到淘宝镜像,方便平时使用;
npm config get registry # 检查仓库镜像库 npm config set registry=http://registry.npmjs.org echo '请进行登录相关操作:' npm login # 登陆 echo "-------publishing-------" npm publish # 发布 npm config set registry=https://registry.npm.taobao.org # 设置为淘宝镜像 echo "发布完成" exit
publish 的时候报错,检查下npm注册的邮箱是否通过验证,上传的包名是否有重名。
使用
- html加载方式
加载
<link rel="stylesheet" type="text/css" href="http://unpkg.com/iview/dist/styles/iview.css"> <script type="text/javascript" src="http://vuejs.org/js/vue.min.js"></script> <script type="text/javascript" src="http://unpkg.com/iview/dist/iview.min.js"></script> //加载vue和iview的js后,再加载组件包 <script src="../dist/vue-iview-ui.js"></script>
调用组件
<script> const { VueTest } = MyUI var app = new Vue({ el: '#app', components: { VueTest } }) </script>
使用
<vue-test></vue-test>
- 单页面应用调用方式
main.js 调用后设置成公共组件
import Vue from "vue"; import iView from "iview"; import App from "./App.vue"; import { VueTest } from "../../../dist/iview-ui.cjs"; import "iview/dist/styles/iview.css"; Vue.use(iView); Vue.use(VueTest);
App.vue直接使用
<vue-test></vue-test>
- 单页面调用遇到的问题:
- vue项目会自动执行eslint,会报错 no-undef, no-unused-vars
设置package.json
"rules": { "no-unused-vars": "warn", "no-undef": "warn" }