万纯 c91d0b5845 feat: 添加api.copyTmpFiles
plugin建议把运行时代码写在runtime目录,然后通过api.copyTmpFiles复制至项目的.fes/plugin-name目录
2021-01-12 20:19:14 +08:00

55 lines
1.4 KiB
JavaScript

import { readFileSync } from 'fs';
import { join } from 'path';
export default (api) => {
api.addRuntimePluginKey(() => 'request');
// 配置
api.describe({
key: 'request',
config: {
schema(joi) {
return joi.object({
dataField: joi
.string()
.pattern(/^[a-zA-Z]*$/)
.allow('')
});
},
default: {
dataField: ''
}
}
});
const namespace = 'plugin-request';
const absoluteFilePath = `${namespace}/request.js`;
const requestTemplate = readFileSync(join(__dirname, 'template', 'request.js'), 'utf-8');
api.onGenerateFiles(() => {
// 文件写出
const { dataField = '' } = api.config.request;
api.writeTmpFile({
path: absoluteFilePath,
content: requestTemplate
.replace('REPLACE_DATA_FIELD', JSON.stringify(dataField))
});
});
let generatedOnce = false;
api.onGenerateFiles(() => {
if (generatedOnce) return;
generatedOnce = true;
api.copyTmpFiles({
namespace,
path: join(__dirname, 'template'),
ignore: ['request.js']
});
});
api.addPluginExports(() => [
{
exportAll: true,
source: absoluteFilePath
}
]);
};