# vuepress-plugin中vue组件如何接受plugin的option
基本原理就是,在enhanceAppfile的地方,将之前需要引入的js
改为动态代码,在注册component
的地方增加app
// index.js
const enhanceAppFile = require('./enhanceAppFile')
const {resolve} = require('path')
const resolveLib = function(...paths) {
return resolve(__dirname, 'lib', ...paths)
}
module.exports = (option) => {
return {
// 注入component
enhanceAppFiles() {
return [
{
name: 'Live2dComponent',
content: enhanceAppFile(option)
}
]
},
globalUIComponents: "Live2d"
}
};
// enhanceAppFile
const { resolve } = require('path')
module.exports = function(option = {}) {
return `import Live2d from "${resolve(__dirname, './Live2d.vue')}";
export default ({ Vue }) => {
${Object.keys(option).map(key => {
let value = option[key]
switch (typeof value) {
case 'object': {
value = `() => (${JSON.stringify(value)})`
break
}
case 'string': {
value = JSON.stringify(value)
break
}
default: {
break
}
}
return `(Live2d.props.${key} || {}).default = ${value};`
}).join('\n')}
Vue.component("Live2d", Live2d);
};`
}