umi-plugin-abp-setting
Version:
setting
85 lines (66 loc) • 2.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
function _react() {
const data = _interopRequireDefault(require("react"));
_react = function _react() {
return data;
};
return data;
}
function _path() {
const data = require("path");
_path = function _path() {
return data;
};
return data;
}
var _getContextContent = _interopRequireDefault(require("./utils/getContextContent"));
var _getSettingProviderContent = _interopRequireDefault(require("./utils/getSettingProviderContent"));
var _getSettingContent = _interopRequireDefault(require("./utils/getSettingContent"));
var _getRootContainerContent = _interopRequireDefault(require("./utils/getRootContainerContent"));
var _utils = require("./utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const setting_DIR = 'plugin-abp-setting'; // plugin-setting 插件创建临时文件的专有文件夹
function _default(api) {
const umiTmpDir = api.paths.absTmpPath;
const srcDir = api.paths.absSrcPath;
const settingFilePath = api.utils.winPath((0, _path().join)(srcDir, 'setting'));
api.describe({
key: "abpsetting",
enableBy: api.EnableBy.register
});
api.onGenerateFiles(() => {
// 判断 setting 工厂函数存在并且 default 暴露了一个函数
if ((0, _utils.checkIfHasDefaultExporting)(settingFilePath)) {
// 创建 setting 的 context 以便跨组件传递 setting 实例
api.writeTmpFile({
path: `${setting_DIR}/context.ts`,
content: (0, _getContextContent.default)()
}); // 创建 settingProvider,1. 生成 setting 实例; 2. 传给 context 的 Provider
api.writeTmpFile({
path: `${setting_DIR}/settingProvider.ts`,
content: (0, _getSettingProviderContent.default)(api.utils)
}); // 创建 setting 的 hook
api.writeTmpFile({
path: `${setting_DIR}/setting.tsx`,
content: (0, _getSettingContent.default)()
}); // 生成 rootContainer 运行时配置
api.writeTmpFile({
path: `${setting_DIR}/rootContainer.ts`,
content: (0, _getRootContainerContent.default)()
});
}
});
if ((0, _utils.checkIfHasDefaultExporting)(settingFilePath)) {
// 增加 rootContainer 运行时配置
api.addRuntimePlugin(() => api.utils.winPath((0, _path().join)(umiTmpDir, setting_DIR, 'rootContainer.ts')));
api.addUmiExports(() => [{
exportAll: true,
source: `../${setting_DIR}/setting`
}]);
api.addTmpGenerateWatcherPaths(() => [`${settingFilePath}.ts`, `${settingFilePath}.js`]);
}
}