UNPKG

@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
"use strict"; 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