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