mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-09-17 10:06:18 +00:00
* Stabilize Windows frontend development startup Next.js Turbopack can infer a user-level workspace root and hit an internal Rust task panic on Windows. Keep the frontend root explicit and select Webpack on Windows while preserving Turbopack elsewhere. Constraint: The existing non-Windows development workflow should keep Turbopack. Rejected: Disable Turbopack on every platform | unnecessary performance regression. Confidence: high Scope-risk: narrow Reversibility: clean Directive: Revisit the Windows Webpack fallback after the upstream Turbopack panic is resolved. Tested: Prettier, ESLint, TypeScript, 139 frontend test files with 1060 tests, and Windows pnpm dev smoke test on port 3010. Not-tested: Production build and browser E2E suite. Related: #4957 * Make the frontend bundler fallback diagnosable Keep the Windows Webpack fallback while allowing local diagnosis to select either supported Next.js bundler. Resolve the Turbopack root through the Node 20-compatible URL API so the explicit workspace boundary remains effective across the declared Next.js engine range. Constraint: Windows defaults to Webpack because of the observed Turbopack panic, while non-Windows defaults to Turbopack. Rejected: Accept arbitrary bundler values | Next.js only supports the two explicit flags and invalid values should fail early. Confidence: high Scope-risk: narrow Reversibility: clean Directive: Revisit the default Windows fallback when the upstream TaskGuard issue is resolved; the override is intentionally retained for diagnosis. Tested: Frontend format, ESLint, TypeScript, 139-file/1062-test Rstest suite, target launcher tests, and next.config.js absolute-root load check. Not-tested: Production build and browser E2E suite.
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { describe, expect, test } from "@rstest/core";
|
|
|
|
import { getDevBundler, getNextDevArgs } from "../../../scripts/dev.mjs";
|
|
|
|
describe("frontend dev launcher", () => {
|
|
test("uses webpack on Windows to avoid Turbopack runtime instability", () => {
|
|
expect(getDevBundler("win32")).toBe("webpack");
|
|
expect(getNextDevArgs("win32")).toEqual(["dev", "--webpack"]);
|
|
});
|
|
|
|
test("allows an explicit bundler override on every platform", () => {
|
|
expect(getDevBundler("win32", { DEER_FLOW_DEV_BUNDLER: "turbo" })).toBe(
|
|
"turbo",
|
|
);
|
|
expect(
|
|
getNextDevArgs("linux", [], { DEER_FLOW_DEV_BUNDLER: "webpack" }),
|
|
).toEqual(["dev", "--webpack"]);
|
|
});
|
|
|
|
test("rejects an unsupported bundler override", () => {
|
|
expect(() =>
|
|
getDevBundler("linux", { DEER_FLOW_DEV_BUNDLER: "invalid" }),
|
|
).toThrow('DEER_FLOW_DEV_BUNDLER must be either "turbo" or "webpack"');
|
|
});
|
|
|
|
test("passes through extra Next.js arguments", () => {
|
|
expect(getNextDevArgs("win32", ["--", "--port", "3302"])).toEqual([
|
|
"dev",
|
|
"--webpack",
|
|
"--port",
|
|
"3302",
|
|
]);
|
|
});
|
|
|
|
test("keeps Turbopack for non-Windows development", () => {
|
|
expect(getDevBundler("linux")).toBe("turbo");
|
|
expect(getDevBundler("darwin")).toBe("turbo");
|
|
expect(getNextDevArgs("linux")).toEqual(["dev", "--turbo"]);
|
|
});
|
|
});
|