1、在项目根目录新建文件夹 packages
2、将自己写的所有组件复制粘贴进去
3、将自己开发的src改成examples (平时更新组件调试用) 直接删了也没事
//新建vue.config.js
const path = require('path')
module.exports = {
pages: {
index: {
//修改项目入口
entry: 'examples/main.js',
template: 'public/index.html',
filename: 'index.html'
}
},
// 扩展 webpack 配置,使 packages 加入编译
chainWebpack: config => {
//对所有的js 使用babel处理
config.module
.rule('js')
.include.add(path.resolve(__dirname, 'packages')).end()
.use('babel')
.loader('babel-loader')
.tap(options => {
// 修改它的选项...
return options
})
}
}
4、在packgaes新建index.js文件
// 统一导出
import Button from './button'
import Dialog from './dialog'
import Input from './input'
import Checkbox from './checkbox'
import Radio from './radio'
import RadioGroup from './radio-group'
import Switch from './switch'
import CheckboxGroup from './checkbox-group'
import Form from './form'
import FormItem from './form-item'
import './fonts/font.scss' //fonts 也需要引入
// 存储组件列表
const components = [
Button,
Dialog,
Input,
Checkbox,
Radio,
RadioGroup,
Switch,
CheckboxGroup,
Form,
FormItem
]
// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
const install = function (Vue) {
// 遍历注册全局组件
components.forEach(component => {
Vue.component(component.name, component)
})
}
// 判断是否是直接引入文件,如果是,就不用调用 Vue.use()
if (typeof window !== 'undefined' && window.Vue) {
install(window.Vue)
}
// 导出的对象必须具有 install,才能被 Vue.use() 方法安装
export default {
install
}
5、新增打包命令(package.json)
//打包命令
"ax:lib": "vue-cli-service build --target lib packages/index.js"
6、发布到npm 需要public (package.json)
//更新版本递增
"private": false,
"varsion":'0.0.1'
"main": "dist/ax-ui.umd.min.js",
"author": {
"name": "安歆"
},
7、增加 `.npmignore文件
# 忽略目录
examples/
packages/
public/
# 忽略指定文件
vue.config.js
babel.config.js
*.map
8、发布到npm (需要自己注册账号)
npm login
npm publish