UNPKG

@modern-js/module-tools

Version:

Simple, powerful, high-performance modern npm package development solution.

401 lines (400 loc) • 19.3 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var transformLegacyConfig_exports = {}; __export(transformLegacyConfig_exports, { commonTransformAndLog: () => commonTransformAndLog, createConfigByBuildConfig: () => createConfigByBuildConfig, createConfigByBuildPreset: () => createConfigByBuildPreset, createConfigByDefault: () => createConfigByDefault, createConfigByPackageFields: () => createConfigByPackageFields, createConfigByPackageMode: () => createConfigByPackageMode, createUserConfigFromLegacy: () => createUserConfigFromLegacy, transformOutputToBuildConfig: () => transformOutputToBuildConfig, transformSourceToBuildConfig: () => transformSourceToBuildConfig, transformToolsToBuildConfig: () => transformToolsToBuildConfig }); module.exports = __toCommonJS(transformLegacyConfig_exports); var import_path = __toESM(require("path")); var import_utils = require("@modern-js/utils"); var import_legacy_preset = require("../constants/legacy-preset"); const transformToolsToBuildConfig = (buildConfig, legacyUserConfig) => { if (!legacyUserConfig.tools) { return; } const legacyTools = legacyUserConfig.tools; var _buildConfig_style, _legacyTools_less, _legacyTools_sass, _legacyTools_tailwindcss; buildConfig.style = { ...(_buildConfig_style = buildConfig.style) !== null && _buildConfig_style !== void 0 ? _buildConfig_style : {}, less: (_legacyTools_less = legacyTools.less) !== null && _legacyTools_less !== void 0 ? _legacyTools_less : {}, sass: (_legacyTools_sass = legacyTools.sass) !== null && _legacyTools_sass !== void 0 ? _legacyTools_sass : {}, tailwindcss: (_legacyTools_tailwindcss = legacyTools.tailwindcss) !== null && _legacyTools_tailwindcss !== void 0 ? _legacyTools_tailwindcss : {} }; if (legacyTools.postcss) { var _legacyTools_postcss_postcssOptions; buildConfig.style.postcss = typeof legacyTools.postcss === "function" ? (opts, utils) => { var _legacyOpts_postcssOptions; const legacyOpts = { postcssOptions: { plugins: opts.plugins } }; legacyTools.postcss(legacyOpts, utils); opts.plugins = (_legacyOpts_postcssOptions = legacyOpts.postcssOptions) === null || _legacyOpts_postcssOptions === void 0 ? void 0 : _legacyOpts_postcssOptions.plugins; opts.processOptions = legacyOpts.postcssOptions; } : { plugins: (_legacyTools_postcss_postcssOptions = legacyTools.postcss.postcssOptions) === null || _legacyTools_postcss_postcssOptions === void 0 ? void 0 : _legacyTools_postcss_postcssOptions.plugins, processOptions: legacyTools.postcss.postcssOptions }; } }; const transformSourceToBuildConfig = (buildConfig, legacyUserConfig) => { var _legacySource_envVars; if (!legacyUserConfig.source) { return; } const legacySource = legacyUserConfig.source; var _legacySource_alias; buildConfig.alias = (_legacySource_alias = legacySource.alias) !== null && _legacySource_alias !== void 0 ? _legacySource_alias : {}; buildConfig.define = {}; (_legacySource_envVars = legacySource.envVars) === null || _legacySource_envVars === void 0 ? void 0 : _legacySource_envVars.forEach((envVar) => { buildConfig.define[`process.env.${envVar}`] = process.env[envVar]; }); buildConfig.define = { ...buildConfig.define, ...legacySource.globalVars }; buildConfig.jsx = legacySource.jsxTransformRuntime === "classic" ? "transform" : "automatic"; }; const transformOutputToBuildConfig = (buildConfig, legacyUserConfig) => { var _legacyUserConfig_output, _legacyUserConfig_output1; if ((_legacyUserConfig_output = legacyUserConfig.output) === null || _legacyUserConfig_output === void 0 ? void 0 : _legacyUserConfig_output.disableTsChecker) { buildConfig.dts = false; } if ((_legacyUserConfig_output1 = legacyUserConfig.output) === null || _legacyUserConfig_output1 === void 0 ? void 0 : _legacyUserConfig_output1.disableSourceMap) { buildConfig.sourceMap = false; } }; const commonTransformAndLog = async (legacyUserConfig) => { var _legacyUserConfig_source, _legacyUserConfig_output, _legacyUserConfig_output1; const finalConfig = {}; finalConfig.designSystem = (_legacyUserConfig_source = legacyUserConfig.source) === null || _legacyUserConfig_source === void 0 ? void 0 : _legacyUserConfig_source.designSystem; if (legacyUserConfig.tools) { const legacyTools = legacyUserConfig.tools; if (legacyTools.babel) { import_utils.logger.warn("`tools.babel` is not support in legacy mode. Please check migrate documentation."); } if (legacyTools.lodash) { import_utils.logger.warn("`tools.lodash` is not support in legacy mode. Please check migrate documentation."); } if (legacyTools.jest) { finalConfig.testing = { jest: legacyTools.jest }; } } if ((_legacyUserConfig_output = legacyUserConfig.output) === null || _legacyUserConfig_output === void 0 ? void 0 : _legacyUserConfig_output.importStyle) { import_utils.logger.warn("`output.importStyle` is not support in legacy mode. Please check migrate documentation. By default, the style will be compiled"); } if ((_legacyUserConfig_output1 = legacyUserConfig.output) === null || _legacyUserConfig_output1 === void 0 ? void 0 : _legacyUserConfig_output1.jsPath) { import_utils.logger.warn("`output.jsPath` is not support in legacy mode."); } return finalConfig; }; const createConfigByBuildConfig = async (legacyUserConfig) => { var _legacyUserConfig_source, _legacyUserConfig_output; const legacyBuildConfig = legacyUserConfig.output.buildConfig; const createBuildConfig = (config) => { var _legacyUserConfig_output2, _legacyUserConfig_output1, _legacyUserConfig_output22, _legacyUserConfig_output3, _legacyUserConfig_output4, _legacyUserConfig_output5; const newConfig = {}; transformSourceToBuildConfig(newConfig, legacyUserConfig); var _legacyUserConfig_output_path; const legacyPath = (_legacyUserConfig_output_path = (_legacyUserConfig_output2 = legacyUserConfig.output) === null || _legacyUserConfig_output2 === void 0 ? void 0 : _legacyUserConfig_output2.path) !== null && _legacyUserConfig_output_path !== void 0 ? _legacyUserConfig_output_path : "dist"; var _config_outputPath; newConfig.outDir = import_path.default.join(legacyPath, (_config_outputPath = config.outputPath) !== null && _config_outputPath !== void 0 ? _config_outputPath : "./"); newConfig.asset = { path: (_legacyUserConfig_output1 = legacyUserConfig.output) === null || _legacyUserConfig_output1 === void 0 ? void 0 : _legacyUserConfig_output1.assetsPath }; newConfig.sourceMap = !((_legacyUserConfig_output22 = legacyUserConfig.output) === null || _legacyUserConfig_output22 === void 0 ? void 0 : _legacyUserConfig_output22.disableSourceMap); var _config_sourceMap; newConfig.sourceMap = (_config_sourceMap = config.sourceMap) !== null && _config_sourceMap !== void 0 ? _config_sourceMap : config.buildType === "bundle"; var _config_buildType; newConfig.buildType = (_config_buildType = config.buildType) !== null && _config_buildType !== void 0 ? _config_buildType : "bundleless"; var _config_format; newConfig.format = (_config_format = config.format) !== null && _config_format !== void 0 ? _config_format : "cjs"; var _config_target; newConfig.target = (_config_target = config.target) !== null && _config_target !== void 0 ? _config_target : "esnext"; newConfig.dts = ((_legacyUserConfig_output3 = legacyUserConfig.output) === null || _legacyUserConfig_output3 === void 0 ? void 0 : _legacyUserConfig_output3.disableTsChecker) ? false : {}; if (config.dtsOnly) { newConfig.dts = { ...typeof newConfig.dts === "object" ? newConfig.dts : {}, only: true }; } if (config.tsconfig) { newConfig.tsconfig = config.tsconfig; } if (!config.enableDts) { newConfig.dts = false; } if (config.bundleOptions) { const { bundleOptions } = config; if (bundleOptions.entry) { newConfig.input = config.bundleOptions.entry; } var _bundleOptions_splitting; newConfig.splitting = (_bundleOptions_splitting = bundleOptions.splitting) !== null && _bundleOptions_splitting !== void 0 ? _bundleOptions_splitting : false; var _bundleOptions_platform; newConfig.platform = (_bundleOptions_platform = bundleOptions.platform) !== null && _bundleOptions_platform !== void 0 ? _bundleOptions_platform : "node"; var _bundleOptions_minify; newConfig.minify = (_bundleOptions_minify = bundleOptions.minify) !== null && _bundleOptions_minify !== void 0 ? _bundleOptions_minify : false; var _bundleOptions_externals; newConfig.externals = (_bundleOptions_externals = bundleOptions.externals) !== null && _bundleOptions_externals !== void 0 ? _bundleOptions_externals : []; var _bundleOptions_skipDeps; newConfig.autoExternal = (_bundleOptions_skipDeps = bundleOptions.skipDeps) !== null && _bundleOptions_skipDeps !== void 0 ? _bundleOptions_skipDeps : true; } if (config.bundlelessOptions) { var _bundlelessOptions_static; const { bundlelessOptions } = config; var _bundlelessOptions_sourceDir; newConfig.sourceDir = (_bundlelessOptions_sourceDir = bundlelessOptions.sourceDir) !== null && _bundlelessOptions_sourceDir !== void 0 ? _bundlelessOptions_sourceDir : "./src"; if (bundlelessOptions.style) { import_utils.logger.warn("bundlelessOptions.style is not support in legacy mode. Please check migrate documentation. By default, the style will be compiled."); } if ((_bundlelessOptions_static = bundlelessOptions.static) === null || _bundlelessOptions_static === void 0 ? void 0 : _bundlelessOptions_static.path) { var _bundlelessOptions_static1; newConfig.asset = { path: (_bundlelessOptions_static1 = bundlelessOptions.static) === null || _bundlelessOptions_static1 === void 0 ? void 0 : _bundlelessOptions_static1.path }; } } if ((_legacyUserConfig_output4 = legacyUserConfig.output) === null || _legacyUserConfig_output4 === void 0 ? void 0 : _legacyUserConfig_output4.importStyle) { import_utils.logger.warn("`output.importStyle` is not support in legacy mode. Please check migrate documentation. By default, the style will be compiled"); } if ((_legacyUserConfig_output5 = legacyUserConfig.output) === null || _legacyUserConfig_output5 === void 0 ? void 0 : _legacyUserConfig_output5.jsPath) { import_utils.logger.warn("`output.jsPath` is not support in legacy mode."); } if (legacyUserConfig.tools) { transformToolsToBuildConfig(newConfig, legacyUserConfig); } return newConfig; }; const finalConfig = {}; if (Array.isArray(legacyBuildConfig)) { finalConfig.buildConfig = legacyBuildConfig.map((config) => createBuildConfig(config)); } else { finalConfig.buildConfig = [ createBuildConfig(legacyBuildConfig) ]; } finalConfig.designSystem = (_legacyUserConfig_source = legacyUserConfig.source) === null || _legacyUserConfig_source === void 0 ? void 0 : _legacyUserConfig_source.designSystem; if ((_legacyUserConfig_output = legacyUserConfig.output) === null || _legacyUserConfig_output === void 0 ? void 0 : _legacyUserConfig_output.copy) { finalConfig.buildConfig.push({ copy: { patterns: legacyUserConfig.output.copy } }); } if (legacyUserConfig.tools) { const legacyTools = legacyUserConfig.tools; if (legacyTools.babel) { import_utils.logger.warn("`tools.babel` is not support in legacy mode. Please check migrate documentation."); } if (legacyTools.lodash) { import_utils.logger.warn("`tools.lodash` is not support in legacy mode. Please check migrate documentation."); } if (legacyTools.jest) { finalConfig.testing = { jest: legacyTools.jest }; } } return finalConfig; }; const createConfigByBuildPreset = async (legacyUserConfig) => { var _legacyUserConfig_output; const legacyBuildPreset = (_legacyUserConfig_output = legacyUserConfig.output) === null || _legacyUserConfig_output === void 0 ? void 0 : _legacyUserConfig_output.buildPreset; const finalConfig = await commonTransformAndLog(legacyUserConfig); return { ...finalConfig, buildPreset({ preset }) { var _legacyUserConfig_output2; const buildConfigs = preset[legacyBuildPreset !== null && legacyBuildPreset !== void 0 ? legacyBuildPreset : "npm-library"]; buildConfigs.forEach((buildConfig) => { transformSourceToBuildConfig(buildConfig, legacyUserConfig); transformToolsToBuildConfig(buildConfig, legacyUserConfig); transformOutputToBuildConfig(buildConfig, legacyUserConfig); }); if ((_legacyUserConfig_output2 = legacyUserConfig.output) === null || _legacyUserConfig_output2 === void 0 ? void 0 : _legacyUserConfig_output2.copy) { buildConfigs.push({ copy: { patterns: legacyUserConfig.output.copy } }); } return buildConfigs; } }; }; const createConfigByPackageFields = async (legacyUserConfig) => { var _legacyUserConfig_output; const finalConfig = await commonTransformAndLog(legacyUserConfig); const output = legacyUserConfig.output; const packageFields = output.packageFields; const buildConfigs = []; const packageFieldsKeys = Object.keys(packageFields); for (const packageField of packageFieldsKeys) { const packageFieldValue = packageFields[packageField]; let buildConfig = {}; let outDir; if (packageField === "main") { var _output_path; outDir = `./${(_output_path = output.path) !== null && _output_path !== void 0 ? _output_path : "dist"}/js/node`; } else if (packageField === "module") { var _output_path1; outDir = `./${(_output_path1 = output.path) !== null && _output_path1 !== void 0 ? _output_path1 : "dist"}/js/treeshaking`; } else { var _output_path2; outDir = `./${(_output_path2 = output.path) !== null && _output_path2 !== void 0 ? _output_path2 : "dist"}/js/modern`; } if (packageFieldValue === "CJS+ES6") { buildConfig = { format: "cjs", target: "es6", outDir }; } else if (packageFieldValue === "ESM+ES5") { buildConfig = { format: "esm", target: "es5", outDir }; } else if (packageFieldValue === "ESM+ES6") { buildConfig = { format: "esm", target: "es6", outDir }; } transformSourceToBuildConfig(buildConfig, legacyUserConfig); transformToolsToBuildConfig(buildConfig, legacyUserConfig); transformOutputToBuildConfig(buildConfig, legacyUserConfig); buildConfigs.push(buildConfig); } buildConfigs.push({ buildType: "bundleless", outDir: "./dist/types", dts: { only: true } }); if ((_legacyUserConfig_output = legacyUserConfig.output) === null || _legacyUserConfig_output === void 0 ? void 0 : _legacyUserConfig_output.copy) { buildConfigs.push({ copy: { patterns: legacyUserConfig.output.copy } }); } return { ...finalConfig, buildConfig: buildConfigs }; }; const createConfigByPackageMode = async (legacyUserConfig) => { var _legacyUserConfig_output; const finalConfig = await commonTransformAndLog(legacyUserConfig); const packageMode = legacyUserConfig.output.packageMode; const buildConfigs = import_legacy_preset.legacyPresets[packageMode]; for (const buildConfig of buildConfigs) { transformSourceToBuildConfig(buildConfig, legacyUserConfig); transformToolsToBuildConfig(buildConfig, legacyUserConfig); transformOutputToBuildConfig(buildConfig, legacyUserConfig); } if ((_legacyUserConfig_output = legacyUserConfig.output) === null || _legacyUserConfig_output === void 0 ? void 0 : _legacyUserConfig_output.copy) { buildConfigs.push({ copy: { patterns: legacyUserConfig.output.copy } }); } return { ...finalConfig, buildConfig: buildConfigs }; }; const createConfigByDefault = async (legacyUserConfig) => { var _legacyUserConfig_output; const finalConfig = await commonTransformAndLog(legacyUserConfig); const buildConfigs = import_legacy_preset.legacyPresets["universal-js"]; for (const buildConfig of buildConfigs) { transformSourceToBuildConfig(buildConfig, legacyUserConfig); transformToolsToBuildConfig(buildConfig, legacyUserConfig); transformOutputToBuildConfig(buildConfig, legacyUserConfig); } if ((_legacyUserConfig_output = legacyUserConfig.output) === null || _legacyUserConfig_output === void 0 ? void 0 : _legacyUserConfig_output.copy) { buildConfigs.push({ copy: { patterns: legacyUserConfig.output.copy } }); } return { ...finalConfig, buildConfig: buildConfigs }; }; const createUserConfigFromLegacy = async (config) => { var _config_output; const { buildConfig, buildPreset, packageFields, packageMode } = (_config_output = config.output) !== null && _config_output !== void 0 ? _config_output : {}; if (buildConfig) { return createConfigByBuildConfig(config); } if (buildPreset) { return createConfigByBuildPreset(config); } if (packageFields) { return createConfigByPackageFields(config); } if (packageMode) { return createConfigByPackageFields(config); } return createConfigByDefault(config); }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { commonTransformAndLog, createConfigByBuildConfig, createConfigByBuildPreset, createConfigByDefault, createConfigByPackageFields, createConfigByPackageMode, createUserConfigFromLegacy, transformOutputToBuildConfig, transformSourceToBuildConfig, transformToolsToBuildConfig });