HeliumLau 2020-05-03


const path = require(‘path‘)
module.exports = {
// 修改 pages 入口
pages: {
index: {
entry: ‘examples/main.js‘, // 入口
template: ‘public/index.html‘, // 模板
filename: ‘index.html‘ // 输出文件
}
},
// 扩展 webpack 配置
chainWebpack: config => {
// @ 默认指向 src 目录,这里要改成 examples
// 另外也可以新增一个 ~ 指向 packages
config.resolve.alias
.set(‘@‘, path.resolve(‘examples‘))
.set(‘~‘, path.resolve(‘packages‘))
// 把 packages 和 examples 加入编译,因为新增的文件默认是不被 webpack 处理的
config.module
.rule(‘js‘)
.include.add(/packages/)
.end()
.include.add(/examples/)
.end()
.use(‘babel‘)
.loader(‘babel-loader‘)
.tap(options => {
// 修改它的选项...
return options
})
}
}

<template>
<button class="testBtn">测试按钮</button>
</template>
<script>
export default {
name: ‘SqButton‘ // 注意这个name是必须的
}
</script>
<style lang="scss" scoped>
.testBtn {
width: 100px;
height: 50px;
margin: 0 10px;
background-color: #fc297f;
font-size: 16px;
border-radius: 5px;
border: none;
cursor: pointer;
}
</style>// 暴露组件
import SqButton from ‘./src/SqButton‘
SqButton.install = vue => {
vue.component(SqButton.name, SqButton)
}
export default SqButtonimport SqButton from ‘./SqButton‘
// 所有组件列表
const components = [SqButton]
// 定义install方法,接收Vue作为参数
const install = function(Vue) {
// 判断是否安装,安装过就不继续往下执行
if (install.installed) return
install.installed = true
// 遍历注册所有组件
components.map(component => Vue.use(component))
}
// 检测到Vue才执行,毕竟我们是基于Vue的
if (typeof window !== ‘undefined‘ && window.Vue) {
install(window.Vue)
}
console.log(components)
export default {
install,
// 所有组件,必须具有install,才能使用Vue.use()
...components
}// 引入组件 import squi from ‘../packages‘ Vue.use(squi)


"lib": "vue-cli-service build --target lib --name sq-ui --dest lib packages/index.js"
"name": "sq-ui",
"version": "0.1.6",
"private": false,
"description": "基于 vue-cli4 的组件库",
"main": "lib/sq-ui.umd.min.js",
"author": "sq",
"keywords": [
"sq-ui"
],
"license": "MIT",
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"test:unit": "vue-cli-service test:unit",
"lint": "vue-cli-service lint",
"lib": "vue-cli-service build --target lib --name sq-ui --dest lib packages/index.js"
},# 这是复制 .gitignore 里面的 .DS_Store node_modules /dist # local env files .env.local .env.*.local # Log files npm-debug.log* yarn-debug.log* yarn-error.log* # Editor directories and files .idea .vscode *.suo *.ntvs* *.njsproj *.sln *.sw* # 以下是新增的 # 要忽略目录和指定文件 examples/ packages/ public/ vue.config.js babel.config.js *.map *.html
import squi from ‘sq-ui‘ import ‘sq-ui/lib/sq-ui.css‘ Vue.use(squi)
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</div>
<router-view/>
<sq-button></sq-button>
</div>
</template> 