@modern-js/module-tools-v2
Version:
The meta-framework suite designed from scratch for frontend-focused modern web development.
139 lines (132 loc) • 6.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.transformToAbsPath = exports.transformBuildPresetToBaseConfigs = exports.transformBuildConfigToBaseConfigs = exports.requiredBuildConfig = exports.normalizeBuildConfig = exports.checkConfig = void 0;
var _path = _interopRequireDefault(require("path"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
const transformBuildPresetToBaseConfigs = async (options, preset) => {
const {
BuildInPreset,
presetList
} = await Promise.resolve().then(() => _interopRequireWildcard(require("../constants/build-presets")));
const {
addEntryToPreset
} = await Promise.resolve().then(() => _interopRequireWildcard(require("../utils/entry")));
if (typeof preset === 'function') {
const partialBuildConfig = await preset({
preset: BuildInPreset
});
if (!partialBuildConfig) {
throw new Error('The `buildPreset` function does not allow no return value');
}
if (partialBuildConfig) {
const {
validPartialBuildConfig
} = await Promise.resolve().then(() => _interopRequireWildcard(require("../utils/config")));
validPartialBuildConfig(partialBuildConfig);
}
return transformBuildConfigToBaseConfigs(partialBuildConfig, options);
}
const inPresetList = p => p in presetList;
if (preset && inPresetList(preset)) {
return transformBuildConfigToBaseConfigs(await addEntryToPreset(presetList[preset], options.context), options);
}
// buildConfig and buildPreset is undefined
return transformBuildConfigToBaseConfigs(await addEntryToPreset(presetList['base-config'], options.context), options);
};
exports.transformBuildPresetToBaseConfigs = transformBuildPresetToBaseConfigs;
const transformBuildConfigToBaseConfigs = async (config, options) => {
const {
buildCmdOptions
} = options;
const {
ensureArray
} = await Promise.resolve().then(() => _interopRequireWildcard(require('@modern-js/utils')));
const {
assignTsConfigPath
} = await Promise.resolve().then(() => _interopRequireWildcard(require("../utils/dts")));
const partialConfigs = ensureArray(config);
const configs = await Promise.all(partialConfigs.map(async config => {
let newConfig = await requiredBuildConfig(config, options.context);
newConfig = await assignTsConfigPath(newConfig, buildCmdOptions);
newConfig = await transformToAbsPath(newConfig, options);
return newConfig;
}));
return configs;
};
exports.transformBuildConfigToBaseConfigs = transformBuildConfigToBaseConfigs;
const requiredBuildConfig = async (partialBuildConfig, context) => {
const {
mergeDefaultBaseConfig
} = await Promise.resolve().then(() => _interopRequireWildcard(require("../utils/config")));
const mergedConfig = await mergeDefaultBaseConfig(partialBuildConfig, context);
return mergedConfig;
};
exports.requiredBuildConfig = requiredBuildConfig;
const transformToAbsPath = async (baseConfig, options) => {
let newConfig = baseConfig;
const {
transformEntryToAbsPath
} = await Promise.resolve().then(() => _interopRequireWildcard(require("../utils/entry")));
const {
context
} = options;
newConfig.path = _path.default.isAbsolute(newConfig.path) ? newConfig.path : _path.default.join(context.appDirectory, newConfig.path);
// `bundlelessOptions.sourceDir` or `bundleOptions.entry`
if (newConfig.buildType === 'bundleless') {
newConfig.bundlelessOptions.sourceDir = _path.default.join(context.appDirectory, newConfig.bundlelessOptions.sourceDir);
} else {
newConfig = await transformEntryToAbsPath(newConfig, {
appDirectory: context.appDirectory
});
}
// dts path
if (newConfig.dts) {
newConfig.dts.distPath = _path.default.join(newConfig.path, newConfig.dts.distPath);
newConfig.dts.tsconfigPath = _path.default.join(context.appDirectory, newConfig.dts.tsconfigPath);
}
// Maybe need transform 'config.copy'
return newConfig;
};
exports.transformToAbsPath = transformToAbsPath;
const checkConfig = async config => {
const {
buildConfig,
buildPreset
} = config;
if (buildConfig && buildPreset) {
const {
logger
} = await Promise.resolve().then(() => _interopRequireWildcard(require('@modern-js/utils')));
logger.warn(`因为同时出现 'buildConfig' 和 'buildPreset' 配置,因此仅 'buildConfig' 配置生效`);
}
};
exports.checkConfig = checkConfig;
const normalizeBuildConfig = async (api, context, buildCmdOptions) => {
const config = api.useResolvedConfigContext();
// const { appDirectory } = context;
const {
buildConfig,
buildPreset
} = config;
await checkConfig(config);
let baseConfigs;
// buildConfig High priority
if (buildConfig) {
baseConfigs = await transformBuildConfigToBaseConfigs(buildConfig, {
buildCmdOptions,
context
});
} else {
baseConfigs = await transformBuildPresetToBaseConfigs({
context,
buildCmdOptions
}, buildPreset);
}
return baseConfigs;
};
exports.normalizeBuildConfig = normalizeBuildConfig;
//# sourceMappingURL=normalize.js.map