You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"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)()
}); // 创建 AccessProvider1. 生成 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`]);
}
}