UNPKG

@red-hat-developer-hub/cli

Version:
121 lines (115 loc) 4.39 kB
'use strict'; var getPackages = require('@manypkg/get-packages'); var chalk = require('chalk'); var fs = require('fs-extra'); var path = require('path'); var buildScalprumPlugin = require('../../lib/builder/buildScalprumPlugin.cjs.js'); var productionPack = require('../../lib/packager/productionPack.cjs.js'); var paths = require('../../lib/paths.cjs.js'); var tasks = require('../../lib/tasks.cjs.js'); var backend = require('./backend.cjs.js'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; } var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk); var fs__default = /*#__PURE__*/_interopDefaultCompat(fs); var path__default = /*#__PURE__*/_interopDefaultCompat(path); async function frontend(_, opts) { const { name, version, scalprum: scalprumInline, files } = await fs__default.default.readJson(paths.paths.resolveTarget("package.json")); let scalprum = void 0; if (opts.scalprumConfig) { const scalprumConfigFile = paths.paths.resolveTarget(opts.scalprumConfig); tasks.Task.log( `Using external scalprum config file: ${chalk__default.default.cyan(scalprumConfigFile)}` ); scalprum = await fs__default.default.readJson(scalprumConfigFile); } else if (scalprumInline) { tasks.Task.log(`Using scalprum config inlined in the 'package.json'`); scalprum = scalprumInline; } else { let scalprumName; if (name.includes("/")) { const fragments = name.split("/"); scalprumName = `${fragments[0].replace("@", "")}.${fragments[1]}`; } else { scalprumName = name; } scalprum = { name: scalprumName, exposedModules: { PluginRoot: "./src/index.ts" } }; tasks.Task.log(`No scalprum config. Using default dynamic UI configuration:`); tasks.Task.log(chalk__default.default.cyan(JSON.stringify(scalprum, null, 2))); tasks.Task.log( `If you wish to change the defaults, add "scalprum" configuration to plugin "package.json" file, or use the '--scalprum-config' option to specify an external config.` ); } const distDynamicRelativePath = "dist-dynamic"; const target = path__default.default.resolve(paths.paths.targetDir, distDynamicRelativePath); tasks.Task.log( `Packing main package to ${chalk__default.default.cyan( path__default.default.join(distDynamicRelativePath, "package.json") )}` ); if (opts.clean) { await fs__default.default.remove(target); } await fs__default.default.mkdirs(target); await fs__default.default.writeFile( path__default.default.join(target, ".gitignore"), ` * ` ); await productionPack.productionPack({ packageDir: paths.paths.targetDir, targetDir: target }); tasks.Task.log( `Customizing main package in ${chalk__default.default.cyan( path__default.default.join(distDynamicRelativePath, "package.json") )} for dynamic loading` ); if (files && Array.isArray(files) && !files.includes("dist-scalprum")) { files.push("dist-scalprum"); } const monoRepoPackages = await getPackages.getPackages(paths.paths.targetDir); await backend.customizeForDynamicUse({ embedded: [], isYarnV1: false, monoRepoPackages, overridding: { name: `${name}-dynamic`, // We remove scripts, because they do not make sense for this derived package. // They even bring errors, especially the pre-pack and post-pack ones: // we want to be able to use npm pack on this derived package to distribute it as a dynamic plugin, // and obviously this should not trigger the backstage pre-pack or post-pack actions // which are related to the packaging of the original static package. scripts: {}, files } })(path__default.default.resolve(target, "package.json")); const resolvedScalprumDistPath = path__default.default.join(target, "dist-scalprum"); tasks.Task.log( `Generating dynamic frontend plugin assets in ${chalk__default.default.cyan( resolvedScalprumDistPath )}` ); await fs__default.default.remove(resolvedScalprumDistPath); await buildScalprumPlugin.buildScalprumPlugin({ targetDir: paths.paths.targetDir, pluginMetadata: { ...scalprum, version }, resolvedScalprumDistPath }); return target; } exports.frontend = frontend; //# sourceMappingURL=frontend.cjs.js.map