@nx/rspack
Version:
99 lines (98 loc) • 4.04 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.rspackInitSchematic = void 0;
exports.rspackInitGenerator = rspackInitGenerator;
const internal_1 = require("@nx/devkit/internal");
const devkit_1 = require("@nx/devkit");
const js_1 = require("@nx/js");
const plugin_1 = require("../../../plugin");
const versions_1 = require("../../utils/versions");
const version_utils_1 = require("../../utils/version-utils");
const assert_supported_rspack_version_1 = require("../../utils/assert-supported-rspack-version");
async function rspackInitGenerator(tree, schema) {
(0, assert_supported_rspack_version_1.assertSupportedRspackVersion)(tree);
const tasks = [];
const nxJson = (0, devkit_1.readNxJson)(tree);
const addPluginDefault = process.env.NX_ADD_PLUGINS !== 'false' &&
nxJson.useInferencePlugins !== false;
schema.addPlugin ??= addPluginDefault;
if (schema.addPlugin) {
await (0, internal_1.addPlugin)(tree, await (0, devkit_1.createProjectGraphAsync)(), '@nx/rspack/plugin', plugin_1.createNodes, {
buildTargetName: [
'build',
'rspack:build',
'build:rspack',
'rspack-build',
'build-rspack',
],
serveTargetName: [
'serve',
'rspack:serve',
'serve:rspack',
'rspack-serve',
'serve-rspack',
],
serveStaticTargetName: [
'serve-static',
'rspack:serve-static',
'rspack-serve-static',
],
previewTargetName: [
'preview',
'rspack:preview',
'preview:rspack',
'rspack-preview',
'preview-rspack',
],
buildDepsTargetName: [
'build-deps',
'rspack:build-deps',
'rspack-build-deps',
],
watchDepsTargetName: [
'watch-deps',
'rspack:watch-deps',
'rspack-watch-deps',
],
}, schema.updatePackageScripts);
}
const jsInitTask = await (0, js_1.initGenerator)(tree, {
...schema,
tsConfigName: schema.rootProject ? 'tsconfig.json' : 'tsconfig.base.json',
skipFormat: true,
});
tasks.push(jsInitTask);
const rspackVersions = (0, version_utils_1.getRspackVersionsForInstalledMajor)(tree);
const keepExistingVersions = schema.keepExistingVersions ?? true;
const devDependencies = {
'@rspack/core': rspackVersions.rspackCoreVersion,
'@rspack/cli': rspackVersions.rspackCoreVersion,
'@rspack/dev-server': rspackVersions.rspackDevServerVersion,
...(!schema.framework || schema.framework === 'react'
? {
'@rspack/plugin-react-refresh': rspackVersions.rspackPluginReactRefreshVersion,
'react-refresh': versions_1.reactRefreshVersion,
}
: {}),
};
if (versions_1.nxVersion !== '0.0.1') {
// Ignored for local dev / e2e tests.
devDependencies['@nx/rspack'] = versions_1.nxVersion;
}
if (schema.style === 'less') {
devDependencies['less-loader'] = versions_1.lessLoaderVersion;
}
if (schema.style === 'scss') {
devDependencies['sass-loader'] = versions_1.sassLoaderVersion;
devDependencies['sass-embedded'] = versions_1.sassEmbeddedVersion;
}
if (schema.framework !== 'none' || schema.devServer) {
devDependencies['@rspack/dev-server'] =
rspackVersions.rspackDevServerVersion;
}
const installTask = (0, devkit_1.addDependenciesToPackageJson)(tree, {}, devDependencies, undefined, keepExistingVersions);
tasks.push(installTask);
return (0, devkit_1.runTasksInSerial)(...tasks);
}
exports.default = rspackInitGenerator;
exports.rspackInitSchematic = (0, devkit_1.convertNxGenerator)(rspackInitGenerator);