umi-plugin-abp-feature
Version:
feature
81 lines (62 loc) • 2.6 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 _getFeatureProviderContent = _interopRequireDefault(require("./utils/getFeatureProviderContent"));
var _getFeatureContent = _interopRequireDefault(require("./utils/getFeatureContent"));
var _getRootContainerContent = _interopRequireDefault(require("./utils/getRootContainerContent"));
var _utils = require("./utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const feature_DIR = 'plugin-abp-feature'; // plugin-feature 插件创建临时文件的专有文件夹
function _default(api) {
const umiTmpDir = api.paths.absTmpPath;
const srcDir = api.paths.absSrcPath;
const featureFilePath = api.utils.winPath((0, _path().join)(srcDir, 'feature'));
api.onGenerateFiles(() => {
// 判断 feature 工厂函数存在并且 default 暴露了一个函数
if ((0, _utils.checkIfHasDefaultExporting)(featureFilePath)) {
// 创建 feature 的 context 以便跨组件传递 feature 实例
api.writeTmpFile({
path: `${feature_DIR}/context.ts`,
content: (0, _getContextContent.default)()
}); // 创建 featureProvider,1. 生成 feature 实例; 2. 遍历修改 routes; 3. 传给 context 的 Provider
api.writeTmpFile({
path: `${feature_DIR}/featureProvider.ts`,
content: (0, _getFeatureProviderContent.default)(api.utils)
}); // 创建 feature 的 hook
api.writeTmpFile({
path: `${feature_DIR}/feature.tsx`,
content: (0, _getFeatureContent.default)()
}); // 生成 rootContainer 运行时配置
api.writeTmpFile({
path: `${feature_DIR}/rootContainer.ts`,
content: (0, _getRootContainerContent.default)()
});
}
});
if ((0, _utils.checkIfHasDefaultExporting)(featureFilePath)) {
// 增加 rootContainer 运行时配置
api.addRuntimePlugin(() => api.utils.winPath((0, _path().join)(umiTmpDir, feature_DIR, 'rootContainer.ts')));
api.addUmiExports(() => [{
exportAll: true,
source: `../${feature_DIR}/feature`
}]);
api.addTmpGenerateWatcherPaths(() => [`${featureFilePath}.ts`, `${featureFilePath}.js`]);
}
}