Compare commits

...

2 Commits

Author SHA1 Message Date
Jonathan Cammisuli e9fb446aa0 fix(core): do not hide task list with run-many if there is only 1 task (#31324) 2025-05-23 21:30:01 -04:00
Colum Ferry a12fff2a52 fix(module-federation): use runtimeChunk false when not in dev mode (#31256)
## Current Behavior
In #30637 `runtimeChunk: false` was removed to allow HMR for styles.

## Expected Behavior
We need to set runtimeChunk to false or multiple when working with MF.
https://github.com/nrwl/nx/issues/31114#issuecomment-2881996043

## Related Issue(s)

Fixes #31114

(cherry picked from commit 1ab77c8a55)
2025-05-21 10:29:41 -04:00
9 changed files with 51 additions and 3 deletions
@@ -11,6 +11,7 @@ export async function withModuleFederationForSSR(
if (global.NX_GRAPH_CREATION) {
return (config) => config;
}
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedLibraries, sharedDependencies, mappedRemotes } =
await getModuleFederationConfig(options, {
@@ -27,6 +28,9 @@ export async function withModuleFederationForSSR(
},
optimization: {
...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
},
resolve: {
...(config.resolve ?? {}),
@@ -12,6 +12,7 @@ export async function withModuleFederation(
if (global.NX_GRAPH_CREATION) {
return (config) => config;
}
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedLibraries, sharedDependencies, mappedRemotes } =
await getModuleFederationConfig(options);
@@ -26,6 +27,9 @@ export async function withModuleFederation(
},
optimization: {
...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
},
resolve: {
...(config.resolve ?? {}),
@@ -12,6 +12,7 @@ export async function withModuleFederationForSSR(
if (global.NX_GRAPH_CREATION) {
return (config) => config;
}
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedLibraries, sharedDependencies, mappedRemotes } =
getModuleFederationConfig(options, {
@@ -26,6 +27,9 @@ export async function withModuleFederationForSSR(
};
config.optimization = {
...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
};
config.plugins.push(
@@ -24,6 +24,7 @@ export async function withModuleFederation(
return config;
};
}
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedDependencies, sharedLibraries, mappedRemotes } =
getModuleFederationConfig(options);
@@ -42,6 +43,9 @@ export async function withModuleFederation(
config.optimization = {
...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
};
if (
@@ -12,6 +12,7 @@ export async function withModuleFederationForSSR(
if (global.NX_GRAPH_CREATION) {
return (config) => config;
}
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedLibraries, sharedDependencies, mappedRemotes } =
await getModuleFederationConfig(options, {
@@ -23,6 +24,9 @@ export async function withModuleFederationForSSR(
config.output.uniqueName = options.name;
config.optimization = {
...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
};
config.plugins.push(
@@ -16,6 +16,7 @@ export async function withModuleFederation(
if (global.NX_GRAPH_CREATION) {
return (config) => config;
}
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedDependencies, sharedLibraries, mappedRemotes } =
await getModuleFederationConfig(options);
@@ -27,6 +28,9 @@ export async function withModuleFederation(
config.output.scriptType = 'text/javascript';
config.optimization = {
...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
};
if (
+9 -3
View File
@@ -43,6 +43,7 @@ pub struct App {
pub components: Vec<Box<dyn Component>>,
pub quit_at: Option<std::time::Instant>,
focus: Focus,
run_mode: RunMode,
previous_focus: Focus,
done_callback: Option<ThreadsafeFunction<(), ErrorStrategy::Fatal>>,
forced_shutdown_callback: Option<ThreadsafeFunction<(), ErrorStrategy::Fatal>>,
@@ -111,6 +112,7 @@ impl App {
let main_terminal_pane_data = TerminalPaneData::new();
Ok(Self {
run_mode,
components,
pinned_tasks,
quit_at: None,
@@ -121,7 +123,7 @@ impl App {
tui_config,
user_has_interacted: false,
is_forced_shutdown: false,
layout_manager: LayoutManager::new(task_count),
layout_manager: LayoutManager::new_with_run_mode(task_count, run_mode),
frame_area: None,
layout_areas: None,
terminal_pane_data: [main_terminal_pane_data, TerminalPaneData::new()],
@@ -154,7 +156,11 @@ impl App {
.select_task(task.clone());
if pinned_tasks.len() == 1 && idx == 0 {
self.display_and_focus_current_task_in_terminal_pane(self.tasks.len() != 1);
self.display_and_focus_current_task_in_terminal_pane(match self.run_mode {
RunMode::RunMany => true,
RunMode::RunOne if self.tasks.len() == 1 => false,
RunMode::RunOne => true,
});
} else {
self.assign_current_task_to_pane(idx);
}
@@ -179,7 +185,7 @@ impl App {
}
fn should_set_interactive_by_default(&self, task_id: &str) -> bool {
self.tasks.len() == 1
matches!(self.run_mode, RunMode::RunOne)
&& self
.pty_instances
.get(task_id)
@@ -1,5 +1,7 @@
use ratatui::layout::{Constraint, Direction, Layout, Rect};
use crate::native::tui::lifecycle::RunMode;
/// Represents the available layout modes for the TUI application.
///
/// - `Auto`: Layout is determined based on available terminal space
@@ -119,6 +121,18 @@ impl LayoutManager {
}
}
pub fn new_with_run_mode(task_count: usize, run_mode: RunMode) -> Self {
let mut layout_manager = Self::new(task_count);
layout_manager.set_task_list_visibility(match run_mode {
// nx run task with no dependent tasks
RunMode::RunOne if task_count == 1 => TaskListVisibility::Hidden,
// nx run task with dependent tasks
RunMode::RunOne => TaskListVisibility::Visible,
RunMode::RunMany => TaskListVisibility::Visible,
});
layout_manager
}
/// Sets the layout mode.
pub fn set_mode(&mut self, mode: LayoutMode) {
self.mode = mode;
@@ -64,6 +64,7 @@ function applyNxIndependentConfig(
): void {
const isProd =
process.env.NODE_ENV === 'production' || options.mode === 'production';
const isDevServer = process.env['WEBPACK_SERVE'];
const hashFormat = getOutputHashFormat(options.outputHashing as string);
config.context = path.join(options.root, options.projectRoot);
config.target ??= options.target as 'async-node' | 'node' | 'web';
@@ -178,6 +179,9 @@ function applyNxIndependentConfig(
}),
],
concatenateModules: true,
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
};
config.stats = {