diff --git a/.changeset/moody-cameras-act.md b/.changeset/moody-cameras-act.md new file mode 100644 index 000000000000..06f3f11e56b4 --- /dev/null +++ b/.changeset/moody-cameras-act.md @@ -0,0 +1,5 @@ +--- +"@rspack/cli": minor +--- + +Support TypeScript as configuration file. diff --git a/packages/rspack-cli/tests/build/typescript/main.ts b/packages/rspack-cli/tests/build/typescript/main.ts new file mode 100644 index 000000000000..41d13d1a9a1e --- /dev/null +++ b/packages/rspack-cli/tests/build/typescript/main.ts @@ -0,0 +1 @@ +console.log("Main typescript file"); diff --git a/packages/rspack-cli/tests/build/typescript/rspack.config.ts b/packages/rspack-cli/tests/build/typescript/rspack.config.ts new file mode 100644 index 000000000000..06bc7746d8e8 --- /dev/null +++ b/packages/rspack-cli/tests/build/typescript/rspack.config.ts @@ -0,0 +1,12 @@ +import * as path from "path"; + +const config = { + mode: "production", + entry: "./main.ts", + output: { + path: path.resolve(__dirname, "dist"), + filename: "foo.bundle.js", + }, +}; + +export = config; diff --git a/packages/rspack-cli/tests/build/typescript/tsconfig.json b/packages/rspack-cli/tests/build/typescript/tsconfig.json new file mode 100644 index 000000000000..391488ab17f4 --- /dev/null +++ b/packages/rspack-cli/tests/build/typescript/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "module": "commonjs" + } +} diff --git a/packages/rspack-cli/tests/build/typescript/typescript.test.ts b/packages/rspack-cli/tests/build/typescript/typescript.test.ts new file mode 100644 index 000000000000..afffb0e4ae0e --- /dev/null +++ b/packages/rspack-cli/tests/build/typescript/typescript.test.ts @@ -0,0 +1,26 @@ +import { run } from "../../utils/test-utils"; +import { existsSync } from "fs"; +import { resolve } from "path"; + +describe("webpack cli", () => { + it("should support default config in typescript", async () => { + const { exitCode, stderr, stdout } = await run(__dirname, []); + + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect(existsSync(resolve(__dirname, "dist/foo.bundle.js"))).toBeTruthy(); + }); + + it("should support specifying config in typescript", async () => { + const { exitCode, stderr, stdout } = await run(__dirname, [ + "-c", + "./rspack.config.ts" + ]); + + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect(existsSync(resolve(__dirname, "dist/foo.bundle.js"))).toBeTruthy(); + }); +});