UNPKG

@nx/rspack

Version:

The Nx Plugin for Rspack contains executors and generators that support building applications using Rspack.

78 lines (77 loc) 4.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.configurationGenerator = configurationGenerator; const tslib_1 = require("tslib"); const devkit_1 = require("@nx/devkit"); const generator_utils_1 = require("../../utils/generator-utils"); const create_ts_config_1 = require("../application/lib/create-ts-config"); const init_1 = tslib_1.__importDefault(require("../init/init")); const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup"); async function configurationGenerator(tree, options) { const task = await (0, init_1.default)(tree, { ...options, }); const { targets, root, projectType } = (0, devkit_1.readProjectConfiguration)(tree, options.project); const { target, framework } = (0, generator_utils_1.determineFrameworkAndTarget)(tree, options, root, targets); options.framework = framework; options.target = target; let foundStylePreprocessorOptions; let buildTargetName = 'build'; let serveTargetName = 'serve'; /** * This is for when we are converting an existing project * to use the vite executors. */ let projectAlreadyHasRspackTargets = {}; if (!options.newProject) { const userProvidedTargetName = { build: options.buildTarget, serve: options.serveTarget, }; const { validFoundTargetName, projectContainsUnsupportedExecutor, userProvidedTargetIsUnsupported, alreadyHasNxRspackTargets, } = (0, generator_utils_1.findExistingTargetsInProject)(targets, userProvidedTargetName); projectAlreadyHasRspackTargets = alreadyHasNxRspackTargets; if (alreadyHasNxRspackTargets.build && (alreadyHasNxRspackTargets.serve || (0, ts_solution_setup_1.getProjectType)(tree, options.project, projectType) === 'library' || options.framework === 'nest')) { throw new Error(`The project ${options.project} is already configured to use the @nx/rspack executors. Please try a different project, or remove the existing targets and re-run this generator to reset the existing Rspack Configuration. `); } if (!validFoundTargetName.build && projectContainsUnsupportedExecutor) { throw new Error(`The project ${options.project} cannot be converted to use the @nx/rspack executors.`); } if (!projectContainsUnsupportedExecutor && !validFoundTargetName.build && !validFoundTargetName.serve) { await (0, generator_utils_1.handleUnknownExecutors)(options.project); } await (0, generator_utils_1.handleUnsupportedUserProvidedTargets)(userProvidedTargetIsUnsupported, userProvidedTargetName, validFoundTargetName, options.framework); /** * Once the user is at this stage, then they can go ahead and convert. */ buildTargetName = validFoundTargetName.build ?? buildTargetName; serveTargetName = validFoundTargetName.serve ?? serveTargetName; // Not needed atm // if (projectType === 'application' && options.target !== 'node') { // moveAndEditIndexHtml(tree, options, buildTargetName); // } foundStylePreprocessorOptions = targets?.[buildTargetName]?.options?.stylePreprocessorOptions; (0, generator_utils_1.deleteWebpackConfig)(tree, root, targets?.[buildTargetName]?.options?.webpackConfig); (0, create_ts_config_1.editTsConfig)(tree, root, options.framework, (0, devkit_1.joinPathFragments)((0, devkit_1.offsetFromRoot)(root), 'tsconfig.base.json')); } if (!projectAlreadyHasRspackTargets.build) { (0, generator_utils_1.addOrChangeBuildTarget)(tree, options, buildTargetName); } if ((options.framework !== 'none' || options.devServer) && options.framework !== 'nest' && !projectAlreadyHasRspackTargets.serve) { (0, generator_utils_1.addOrChangeServeTarget)(tree, options, serveTargetName); } (0, generator_utils_1.writeRspackConfigFile)(tree, options, foundStylePreprocessorOptions); await (0, devkit_1.formatFiles)(tree); return task; } exports.default = configurationGenerator;