UNPKG

@backstage/cli

Version:

CLI for developing Backstage plugins and apps

199 lines (193 loc) • 6.76 kB
'use strict'; var chalk = require('chalk'); var path = require('path'); var createDistWorkspace = require('./createDistWorkspace-4f496e3c.cjs.js'); var PackageGraph = require('./PackageGraph-84e587f4.cjs.js'); var parallel = require('./parallel-4af834f6.cjs.js'); var index = require('./index-d2845aa8.cjs.js'); var packageRoles = require('./packageRoles-54e27ede.cjs.js'); var buildBackend = require('./buildBackend-32a4adb3.cjs.js'); require('fs-extra'); require('os'); require('tar'); require('lodash/partition'); require('./run-eac5f3ab.cjs.js'); require('child_process'); require('util'); require('@backstage/errors'); require('rollup'); require('@rollup/plugin-commonjs'); require('@rollup/plugin-node-resolve'); require('rollup-plugin-postcss'); require('rollup-plugin-esbuild'); require('@svgr/rollup'); require('rollup-plugin-dts'); require('@rollup/plugin-json'); require('@rollup/plugin-yaml'); require('rollup-pluginutils'); require('./svgrTemplate-d1dad6d3.cjs.js'); require('./entryPoints-e81a0dba.cjs.js'); require('./productionPack-2038bfcf.cjs.js'); require('npm-packlist'); require('@manypkg/get-packages'); require('./Lockfile-e5943b84.cjs.js'); require('semver'); require('@yarnpkg/parsers'); require('@yarnpkg/lockfile'); require('minimatch'); require('./yarn-8315d2ff.cjs.js'); require('worker_threads'); require('commander'); require('@backstage/cli-common'); require('zod'); require('webpack'); require('fork-ts-checker-webpack-plugin'); require('html-webpack-plugin'); require('react-dev-utils/ModuleScopePlugin'); require('run-script-webpack-plugin'); require('webpack-node-externals'); require('./paths-a7d52d4f.cjs.js'); require('mini-css-extract-plugin'); require('@pmmmwh/react-refresh-webpack-plugin'); require('eslint-webpack-plugin'); require('lodash/pickBy'); require('yn'); require('react-dev-utils/FileSizeReporter'); require('react-dev-utils/formatWebpackMessages'); require('webpack-dev-server'); require('react-dev-utils/openBrowser'); require('./config-7ca1db14.cjs.js'); require('@backstage/config-loader'); require('@backstage/config'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk); function createScriptOptionsParser(anyCmd, commandPath) { let rootCmd = anyCmd; while (rootCmd.parent) { rootCmd = rootCmd.parent; } let targetCmd = rootCmd; for (const name of commandPath) { targetCmd = targetCmd == null ? void 0 : targetCmd.commands.find((c) => c.name() === name); } if (!targetCmd) { throw new Error( `Could not find package command '${commandPath.join(" ")}'` ); } const cmd = targetCmd; const expectedScript = `backstage-cli ${commandPath.join(" ")}`; return (scriptStr) => { if (!scriptStr || !scriptStr.startsWith(expectedScript)) { return void 0; } const argsStr = scriptStr.slice(expectedScript.length).trim(); const currentOpts = cmd._optionValues; const currentStore = cmd._storeOptionsAsProperties; const result = {}; cmd._storeOptionsAsProperties = false; cmd._optionValues = result; cmd.parseOptions(argsStr.split(" ")); cmd._storeOptionsAsProperties = currentOpts; cmd._optionValues = currentStore; return result; }; } async function command(opts, cmd) { let packages = await PackageGraph.PackageGraph.listTargetPackages(); if (opts.since) { const graph = PackageGraph.PackageGraph.fromPackages(packages); const changedPackages = await graph.listChangedPackages({ ref: opts.since, analyzeLockfile: true }); const withDevDependents = graph.collectPackageNames( changedPackages.map((pkg) => pkg.name), (pkg) => pkg.localDevDependents.keys() ); packages = Array.from(withDevDependents).map((name) => graph.get(name)); } const apps = new Array(); const backends = new Array(); const parseBuildScript = createScriptOptionsParser(cmd, ["package", "build"]); const options = packages.flatMap((pkg) => { var _a, _b, _c; const role = (_b = (_a = pkg.packageJson.backstage) == null ? void 0 : _a.role) != null ? _b : packageRoles.detectRoleFromPackage(pkg.packageJson); if (!role) { console.warn(`Ignored ${pkg.packageJson.name} because it has no role`); return []; } if (role === "frontend") { apps.push(pkg); return []; } else if (role === "backend") { backends.push(pkg); return []; } const outputs = createDistWorkspace.getOutputsForRole(role); if (outputs.size === 0) { console.warn(`Ignored ${pkg.packageJson.name} because it has no output`); return []; } const buildOptions = parseBuildScript((_c = pkg.packageJson.scripts) == null ? void 0 : _c.build); if (!buildOptions) { console.warn( `Ignored ${pkg.packageJson.name} because it does not have a matching build script` ); return []; } return { targetDir: pkg.dir, packageJson: pkg.packageJson, outputs, logPrefix: `${chalk__default["default"].cyan(path.relative(index.paths.targetRoot, pkg.dir))}: `, minify: buildOptions.minify, useApiExtractor: buildOptions.experimentalTypeBuild }; }); console.log("Building packages"); await createDistWorkspace.buildPackages(options); if (opts.all) { console.log("Building apps"); await parallel.runParallelWorkers({ items: apps, parallelismFactor: 1 / 2, worker: async (pkg) => { var _a, _b; const buildOptions = parseBuildScript((_a = pkg.packageJson.scripts) == null ? void 0 : _a.build); if (!buildOptions) { console.warn( `Ignored ${pkg.packageJson.name} because it does not have a matching build script` ); return; } await buildBackend.buildFrontend({ targetDir: pkg.dir, configPaths: (_b = buildOptions.config) != null ? _b : [], writeStats: Boolean(buildOptions.stats) }); } }); console.log("Building backends"); await parallel.runParallelWorkers({ items: backends, parallelismFactor: 1 / 2, worker: async (pkg) => { var _a; const buildOptions = parseBuildScript((_a = pkg.packageJson.scripts) == null ? void 0 : _a.build); if (!buildOptions) { console.warn( `Ignored ${pkg.packageJson.name} because it does not have a matching build script` ); return; } await buildBackend.buildBackend({ targetDir: pkg.dir, skipBuildDependencies: true }); } }); } } exports.command = command; //# sourceMappingURL=build-994f0f45.cjs.js.map