并且在根目录创建两个文件夹 packages
和examples
。
packages
:用于存放所有的组件
examples
:用于进行测试组件,把src
改为examples
如果没有vue.config.js
文件 就需要在项目根目录下创建vue.config.js
文件,并进行如下配置。
entry
属性将入口文件设置为examps
下的main.js
文件chainWebpack
对于项目进行配置,使用babel
处理将高版本语法转成低版本语法,在我们封装组件库时,这部分配置可以直接复制使用。const { defineConfig } = require('@vue/cli-service')
// module.exports = defineConfig({
// transpileDependencies: true
// })
const path = require('path')
module.exports = defineConfig({
transpileDependencies: true,
pages:{
index:{
// 修改项目入口文件
entry:'examples/main.js',
template:'public/index.html',
filename:'index.html'
}
},
// 扩展webpack配置,使webpages加入编译
chainWebpack: config => {
config.module
.rule('js')
.include.add(path.resolve(__dirname,'packages')).end()
.use('babel')
.loader('babel-loader')
.tap(options => {
return options
})
}
})
index.js
文件中conpoments
数组,将组件全部放到这个数组中install
方法,在Vue
中注册所有的组件Vue.use()
方法(这一步可以让那些通过script
导入的,无需Vue.use()
)install
对象// 整个包的入口
// 统一导出
// 导出颜色选择器组件
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/iconfont.css'
const components = [
Button,
Dialog,
Input,
Checkbox,
Radio,
RadioGroup,
Switch,
CheckboxGroup,
Form,
FormItem
]
// 定义install方法
const install = function (Vue) {
// 遍历注册所有的组件
components.forEach(component => {
Vue.component(component.name, component)
})
}
// 判断是否直接引入文件,如果是,就不用调用Vue.use()
if (typeof window !== 'undefined' && window.Vue) {
install(window.Vue)
}
// 导出install方法
export default {
install
}
vue-cli给开发者提供了很多构建目标的命令,我们可以将我们的vue项目构建成应用、库或者Web Components组件。
构建成库在vue-cli
官方文档中找到如下命令:
vue-cli-service build --target lib
在package.json
文件中的script
下加入该条指令,并且指定打包路径为 packages/index.js
。
"lib":"vue-cli-service build --target lib packages/index.js"
打包 命令如下:
npm run lib
第一步、使用git status命令查看git状态
git status
第二步、使用git add命令提交路径下文件
git add .
第三步、 使用git commit -m ‘上传组件’ 命令填写 上传描述
git commit -m '封装组件并上传到github'
git remote add origin https://github.com/RanGuMo/moran-ui.git
git branch -M main
git push -u origin main
github项目地址:https://github.com/RanGuMo/moran-ui
第一步、设置package.json
中的配置项
如果想把包发布到npm
上,package.json
中的private
必须为fasle
,并且name
必须为npm
上没有的包,否则不能上传,同时我们可以指定入口文件 "main": "dist/moran-ui.umd.min.js"
也可以添加个人信息
第二步、在项目的根目录下增加一个.npmignore
文件
这个文件的作用是将一些不需要上传到npm
的路径、文件进行忽略,我们在上传到npm
时就不会把这部分上传了。只上传dist
路径下的打包文件,不需要上传源码。
# 忽略目录
examples/
packages/
public/
# 忽略指定文件
vue.config.js
babel.config.js
*.map
第三步、上传到npm