From 5e681924b89b92fdc83b5a1678a010fd7d320494 Mon Sep 17 00:00:00 2001 From: molvqingtai Date: Fri, 19 May 2023 04:15:37 +0800 Subject: [PATCH 01/13] feat: [cli] The configuration file follows the type property of package.json. --- packages/rspack-cli/jest.config.js | 3 +- packages/rspack-cli/package.json | 13 +- packages/rspack-cli/src/constants.ts | 10 ++ packages/rspack-cli/src/rspack-cli.ts | 9 +- packages/rspack-cli/src/utils/findExtFile.ts | 14 ++ packages/rspack-cli/src/utils/isESM.ts | 13 ++ packages/rspack-cli/src/utils/loadConfig.ts | 145 ++++++++++------ .../rspack-cli/tests/build/config/cjs/main.ts | 1 + .../tests/build/config/cjs/rspack.config.cjs | 10 ++ .../tests/build/config/cjs/rspack.config.cts | 10 ++ .../tests/build/config/cjs/rspack.config.js | 10 ++ .../tests/build/config/cjs/rspack.config.ts | 10 ++ .../{typescript => config/cjs}/tsconfig.json | 2 +- .../tests/build/config/config.test.ts | 109 ++++++++++++ .../rspack-cli/tests/build/config/esm/main.ts | 1 + .../tests/build/config/esm/rspack.config.js | 13 ++ .../tests/build/config/esm/rspack.config.mjs | 13 ++ .../tests/build/config/esm/rspack.config.mts | 13 ++ .../tests/build/config/esm/rspack.config.ts | 13 ++ .../tests/build/config/loadConfig.test.ts | 19 -- .../tests/build/config/test.rspack.config.cjs | 13 -- .../rspack-cli/tests/build/json/json.test.ts | 1 - .../rspack-cli/tests/build/typescript/main.ts | 1 - .../tests/build/typescript/rspack.config.ts | 12 -- .../tests/build/typescript/typescript.test.ts | 26 --- packages/rspack-cli/tsconfig.json | 3 - pnpm-lock.yaml | 163 +++++++++--------- 27 files changed, 424 insertions(+), 226 deletions(-) create mode 100644 packages/rspack-cli/src/constants.ts create mode 100644 packages/rspack-cli/src/utils/findExtFile.ts create mode 100644 packages/rspack-cli/src/utils/isESM.ts create mode 100644 packages/rspack-cli/tests/build/config/cjs/main.ts create mode 100644 packages/rspack-cli/tests/build/config/cjs/rspack.config.cjs create mode 100644 packages/rspack-cli/tests/build/config/cjs/rspack.config.cts create mode 100644 packages/rspack-cli/tests/build/config/cjs/rspack.config.js create mode 100644 packages/rspack-cli/tests/build/config/cjs/rspack.config.ts rename packages/rspack-cli/tests/build/{typescript => config/cjs}/tsconfig.json (55%) create mode 100644 packages/rspack-cli/tests/build/config/config.test.ts create mode 100644 packages/rspack-cli/tests/build/config/esm/main.ts create mode 100644 packages/rspack-cli/tests/build/config/esm/rspack.config.js create mode 100644 packages/rspack-cli/tests/build/config/esm/rspack.config.mjs create mode 100644 packages/rspack-cli/tests/build/config/esm/rspack.config.mts create mode 100644 packages/rspack-cli/tests/build/config/esm/rspack.config.ts delete mode 100644 packages/rspack-cli/tests/build/config/loadConfig.test.ts delete mode 100644 packages/rspack-cli/tests/build/config/test.rspack.config.cjs delete mode 100644 packages/rspack-cli/tests/build/typescript/main.ts delete mode 100644 packages/rspack-cli/tests/build/typescript/rspack.config.ts delete mode 100644 packages/rspack-cli/tests/build/typescript/typescript.test.ts diff --git a/packages/rspack-cli/jest.config.js b/packages/rspack-cli/jest.config.js index c6dcb942f6d..277f71686fe 100644 --- a/packages/rspack-cli/jest.config.js +++ b/packages/rspack-cli/jest.config.js @@ -4,7 +4,8 @@ const config = { testEnvironment: "../../scripts/test/patch-node-env.cjs", testTimeout: process.env.CI ? 120000 : 30000, testMatch: ["/tests/**/*.test.ts", "/tests/**/*.test.js"], - watchPathIgnorePatterns: ["/tests/.*/dist"] + watchPathIgnorePatterns: ["/tests/.*/dist"], + extensionsToTreatAsEsm: [".mts"] }; module.exports = config; diff --git a/packages/rspack-cli/package.json b/packages/rspack-cli/package.json index c270941a413..7235e7ddba6 100644 --- a/packages/rspack-cli/package.json +++ b/packages/rspack-cli/package.json @@ -26,20 +26,13 @@ "directory": "packages/rspack-cli" }, "devDependencies": { + "@types/tmp": "^0.2.3", "@types/webpack-bundle-analyzer": "^4.6.0", "concat-stream": "^2.0.0", "execa": "^5.0.0", "internal-ip": "6.2.0", - "source-map-support": "^0.5.19", - "ts-node": "10.9.1" - }, - "peerDependencies": { - "ts-node": ">= 10" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } + "read-pkg-up": "^9.1.0", + "source-map-support": "^0.5.19" }, "dependencies": { "@discoveryjs/json-ext": "^0.5.7", diff --git a/packages/rspack-cli/src/constants.ts b/packages/rspack-cli/src/constants.ts new file mode 100644 index 00000000000..6cd4cdac22a --- /dev/null +++ b/packages/rspack-cli/src/constants.ts @@ -0,0 +1,10 @@ +export const DEFAULT_CONFIG_NAME = "rspack.config" as const; + +export const DEFAULT_EXTENSIONS = [ + ".js", + ".ts", + ".mjs", + ".mts", + ".cjs", + ".cts" +] as const; diff --git a/packages/rspack-cli/src/rspack-cli.ts b/packages/rspack-cli/src/rspack-cli.ts index 3c7c2d6f5d1..a04764241e7 100644 --- a/packages/rspack-cli/src/rspack-cli.ts +++ b/packages/rspack-cli/src/rspack-cli.ts @@ -21,10 +21,8 @@ import { MultiStats } from "@rspack/core"; import { normalizeEnv } from "./utils/options"; -import { - loadRspackConfig, - findFileWithSupportedExtensions -} from "./utils/loadConfig"; +import { loadRspackConfig } from "./utils/loadConfig"; +import findExtFile from "./utils/findExtFile"; import { Mode } from "@rspack/core/src/config"; import { RspackPluginInstance, RspackPluginFunction } from "@rspack/core"; import path from "path"; @@ -131,8 +129,7 @@ export class RspackCLI { } else if (!item.entry) { const defaultEntryBase = path.resolve(process.cwd(), defaultEntry); const defaultEntryPath = - findFileWithSupportedExtensions(defaultEntryBase) || - defaultEntryBase + ".js"; // default entry is js + findExtFile(defaultEntryBase) || defaultEntryBase + ".js"; // default entry is js item.entry = { main: defaultEntryPath }; diff --git a/packages/rspack-cli/src/utils/findExtFile.ts b/packages/rspack-cli/src/utils/findExtFile.ts new file mode 100644 index 00000000000..7964dbfec87 --- /dev/null +++ b/packages/rspack-cli/src/utils/findExtFile.ts @@ -0,0 +1,14 @@ +import fs from "fs"; +import { DEFAULT_EXTENSIONS } from "../constants"; + +/** + * Takes a basePath like `webpack.config`, return `webpack.config.{ext}` if + * exists. returns undefined if none of them exists + */ +const findExtFile = (basePath: string): string | undefined => { + return DEFAULT_EXTENSIONS.map(ext => basePath + ext).find(path => + fs.existsSync(path) + ); +}; + +export default findExtFile; diff --git a/packages/rspack-cli/src/utils/isESM.ts b/packages/rspack-cli/src/utils/isESM.ts new file mode 100644 index 00000000000..7c987daec18 --- /dev/null +++ b/packages/rspack-cli/src/utils/isESM.ts @@ -0,0 +1,13 @@ +const isESM = async (modulePath, cwd?: string) => { + const { readPackageUp } = await import("read-pkg-up"); + const { packageJson } = await readPackageUp({ cwd }); + if (packageJson.type === "module") { + return true; + } + if (/\.(mjs|mts)$/.test(modulePath)) { + return true; + } + return false; +}; + +export default isESM; diff --git a/packages/rspack-cli/src/utils/loadConfig.ts b/packages/rspack-cli/src/utils/loadConfig.ts index 471fee33a9f..dbcc24f79cc 100644 --- a/packages/rspack-cli/src/utils/loadConfig.ts +++ b/packages/rspack-cli/src/utils/loadConfig.ts @@ -1,11 +1,88 @@ import path from "path"; -import { pathToFileURL } from "url"; import fs from "fs"; import { RspackCLIOptions } from "../types"; import { RspackOptions, MultiRspackOptions } from "@rspack/core"; +import findExtFile from "./findExtFile"; +import { rspack } from "@rspack/core"; +import isESM from "./isESM"; +import { build } from "esbuild"; -const supportedExtensions = [".js", ".ts", ".mjs", ".cjs"]; -const defaultConfig = "rspack.config"; +const DEFAULT_CONFIG_NAME = "rspack.config" as const; + +const buildConfig = async (options: { + entry: string; + output: string; + type: "esm" | "cjs"; +}) => { + const { entry, output, type } = options; + + await build({ + absWorkingDir: process.cwd(), + bundle: true, + entryPoints: [entry], + outfile: output, + format: type, + target: ["node14.18", "node16"], // Ignore the user's ts tsconfig + write: true, + sourcemap: "inline", + platform: "node", + external: ["@rspack/core"] + }); + + // TODO: Bootstrap with rspack? + // I don't know how to configure to output the correct esm/cjs file. + // The import/require out file is always wrong in importConfig. + // + // const compiler = rspack({ + // entry: entry, + // mode: "none", + // target: "node", + // experiments: { + // outputModule: type === "esm" + // }, + // output: { + // path: path.dirname(output), + // filename: path.basename(output), + // chunkFormat: type === "esm" ? "module" : "commonjs", + // module: type === "esm", + // clean: false, + // library: { + // type: type + // } + // } + // }); + // return new Promise((resolve, reject) => + // compiler.build(error => (error ? reject(error) : resolve(output))) + // ); + // }; +}; + +const importConfig = async ( + configPath: string +): Promise => { + const esm = await isESM(configPath); + + const type = esm ? "esm" : "cjs"; + + const tempPath = `${configPath}.timestamp-${Date.now()}-${Math.random() + .toString(16) + .slice(2)}${type === "esm" ? ".mjs" : ".cjs"}`; + + try { + await buildConfig({ + entry: configPath, + output: tempPath, + type + }); + const module = await (esm ? import(tempPath) : require(tempPath)); + const config = Reflect.has(module, "default") ? module.default : module; + return config; + } catch (error) { + throw error; + } finally { + fs.unlinkSync(tempPath); + } +}; export type LoadedRspackConfig = | undefined @@ -19,64 +96,20 @@ export type LoadedRspackConfig = export async function loadRspackConfig( options: RspackCLIOptions ): Promise { - let loadedConfig: LoadedRspackConfig; - // if we pass config paras if (options.config) { - const resolvedConfigPath = path.resolve(process.cwd(), options.config); - if (!fs.existsSync(resolvedConfigPath)) { - throw new Error(`config file "${resolvedConfigPath}" not exists`); + const configPath = path.resolve(process.cwd(), options.config); + if (!fs.existsSync(configPath)) { + throw new Error(`config file "${configPath}" not found.`); } - loadedConfig = await requireWithAdditionalExtension(resolvedConfigPath); + return importConfig(configPath); } else { - let defaultConfigPath = findFileWithSupportedExtensions( - path.resolve(process.cwd(), defaultConfig) + const defaultConfig = findExtFile( + path.resolve(process.cwd(), DEFAULT_CONFIG_NAME) ); - if (defaultConfigPath != null) { - loadedConfig = await requireWithAdditionalExtension(defaultConfigPath); + if (defaultConfig) { + return importConfig(defaultConfig); } else { - loadedConfig = {}; - } - } - return loadedConfig; -} - -// takes a basePath like `webpack.config`, return `webpack.config.{js,ts}` if -// exists. returns null if none of them exists -export function findFileWithSupportedExtensions( - basePath: string -): string | null { - for (const extension of supportedExtensions) { - if (fs.existsSync(basePath + extension)) { - return basePath + extension; + return {}; } } - return null; -} - -let hasRegisteredTS = false; -async function requireWithAdditionalExtension(resolvedPath: string) { - if (resolvedPath.endsWith("ts") && !hasRegisteredTS) { - hasRegisteredTS = true; - let tsNode: any; - try { - tsNode = require("ts-node"); - } catch (e) { - throw new Error("`ts-node` is required to use TypeScript configuration."); - } - tsNode.register({ transpileOnly: true }); - } - let loadedConfig; - if (resolvedPath.endsWith("ts")) { - loadedConfig = require(resolvedPath); - } else if (resolvedPath.endsWith(".cjs")) { - /** - * this is a dirty hack to help us test rsapck-cli because we can't dynamic import js config due to [nodejs bug](https://github.com/nodejs/node/issues/35889) in jest - */ - loadedConfig = require(resolvedPath); - } else { - // dynamic import can handle both cjs & mjs - const fileUrl = pathToFileURL(resolvedPath).href; - loadedConfig = (await import(fileUrl)).default; - } - return loadedConfig; } diff --git a/packages/rspack-cli/tests/build/config/cjs/main.ts b/packages/rspack-cli/tests/build/config/cjs/main.ts new file mode 100644 index 00000000000..18ad0054009 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/cjs/main.ts @@ -0,0 +1 @@ +console.log("Main cjs file"); diff --git a/packages/rspack-cli/tests/build/config/cjs/rspack.config.cjs b/packages/rspack-cli/tests/build/config/cjs/rspack.config.cjs new file mode 100644 index 00000000000..88637a6c01c --- /dev/null +++ b/packages/rspack-cli/tests/build/config/cjs/rspack.config.cjs @@ -0,0 +1,10 @@ +const path = require("path"); + +module.exports = { + mode: "production", + entry: path.resolve(__dirname, "main.ts"), + output: { + path: path.resolve(__dirname, "dist"), + filename: "cjs.bundle.js" + } +}; diff --git a/packages/rspack-cli/tests/build/config/cjs/rspack.config.cts b/packages/rspack-cli/tests/build/config/cjs/rspack.config.cts new file mode 100644 index 00000000000..b037ed4e70c --- /dev/null +++ b/packages/rspack-cli/tests/build/config/cjs/rspack.config.cts @@ -0,0 +1,10 @@ +const path = require("path"); + +module.exports = { + mode: "production", + entry: path.resolve(__dirname, "main.ts"), + output: { + path: path.resolve(__dirname, "dist"), + filename: "cts.bundle.js" + } +}; diff --git a/packages/rspack-cli/tests/build/config/cjs/rspack.config.js b/packages/rspack-cli/tests/build/config/cjs/rspack.config.js new file mode 100644 index 00000000000..6bed0b2ffa9 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/cjs/rspack.config.js @@ -0,0 +1,10 @@ +const path = require("path"); + +module.exports = { + mode: "production", + entry: path.resolve(__dirname, "main.ts"), + output: { + path: path.resolve(__dirname, "dist"), + filename: "js.bundle.js" + } +}; diff --git a/packages/rspack-cli/tests/build/config/cjs/rspack.config.ts b/packages/rspack-cli/tests/build/config/cjs/rspack.config.ts new file mode 100644 index 00000000000..e6d08057fa9 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/cjs/rspack.config.ts @@ -0,0 +1,10 @@ +const path = require("path"); + +module.exports = { + mode: "production", + entry: path.resolve(__dirname, "main.ts"), + output: { + path: path.resolve(__dirname, "dist"), + filename: "ts.bundle.js" + } +}; diff --git a/packages/rspack-cli/tests/build/typescript/tsconfig.json b/packages/rspack-cli/tests/build/config/cjs/tsconfig.json similarity index 55% rename from packages/rspack-cli/tests/build/typescript/tsconfig.json rename to packages/rspack-cli/tests/build/config/cjs/tsconfig.json index 391488ab17f..28900bb1b58 100644 --- a/packages/rspack-cli/tests/build/typescript/tsconfig.json +++ b/packages/rspack-cli/tests/build/config/cjs/tsconfig.json @@ -1,5 +1,5 @@ { "compilerOptions": { - "module": "commonjs" + "module": "CommonJS" } } diff --git a/packages/rspack-cli/tests/build/config/config.test.ts b/packages/rspack-cli/tests/build/config/config.test.ts new file mode 100644 index 00000000000..c1d0dc96183 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/config.test.ts @@ -0,0 +1,109 @@ +import { run } from "../../utils/test-utils"; +import { existsSync, writeFileSync, unlinkSync } from "fs"; +import { resolve } from "path"; + +describe("rspack cli", () => { + describe("should config not found", () => { + it("should throw an error when config file does not found", async () => { + const { stderr } = await run(__dirname, ["-c", "not-found-config.js"]); + expect(stderr).toMatch(/not found/); + }); + }); + + describe("should load cjs config", () => { + const cwd = resolve(__dirname, "./cjs"); + + it("should load default config.js file", async () => { + const { exitCode, stderr, stdout } = await run(cwd, []); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect(existsSync(resolve(cwd, "./dist/js.bundle.js"))).toBeTruthy(); + }); + + it("should load config.ts file", async () => { + const { exitCode, stderr, stdout } = await run(cwd, [ + "-c", + "rspack.config.ts" + ]); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect(existsSync(resolve(cwd, "./dist/ts.bundle.js"))).toBeTruthy(); + }); + + it("should load config.cjs file", async () => { + const { exitCode, stderr, stdout } = await run(cwd, [ + "-c", + "rspack.config.cjs" + ]); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect(existsSync(resolve(cwd, "./dist/cjs.bundle.js"))).toBeTruthy(); + }); + + it("should load config.cts file", async () => { + const { exitCode, stderr, stdout } = await run(cwd, [ + "-c", + "rspack.config.cts" + ]); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect(existsSync(resolve(cwd, "./dist/cts.bundle.js"))).toBeTruthy(); + }); + }); + + describe("run esm config", () => { + const cwd = resolve(__dirname, "./esm"); + + const packageJsonPath = resolve(cwd, "./package.json"); + beforeAll(() => { + // mock user's package.json type is module + writeFileSync(packageJsonPath, `{"type": "module"}`); + }); + afterAll(() => unlinkSync(packageJsonPath)); + + it("should load default config.js file", async () => { + const { exitCode, stderr, stdout } = await run(cwd, []); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect(existsSync(resolve(cwd, "./dist/js.bundle.js"))).toBeTruthy(); + }); + + it("should load config.ts file", async () => { + const { exitCode, stderr, stdout } = await run(cwd, [ + "-c", + "rspack.config.ts" + ]); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect(existsSync(resolve(cwd, "./dist/ts.bundle.js"))).toBeTruthy(); + }); + + it("should load config.mjs file", async () => { + const { exitCode, stderr, stdout } = await run(cwd, [ + "-c", + "rspack.config.mjs" + ]); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect(existsSync(resolve(cwd, "./dist/mjs.bundle.js"))).toBeTruthy(); + }); + + it("should load config.mts file", async () => { + const { exitCode, stderr, stdout } = await run(cwd, [ + "-c", + "rspack.config.mts" + ]); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect(existsSync(resolve(cwd, "./dist/mts.bundle.js"))).toBeTruthy(); + }); + }); +}); diff --git a/packages/rspack-cli/tests/build/config/esm/main.ts b/packages/rspack-cli/tests/build/config/esm/main.ts new file mode 100644 index 00000000000..b5daf9a1306 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/esm/main.ts @@ -0,0 +1 @@ +console.log("Main esm file"); diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.js b/packages/rspack-cli/tests/build/config/esm/rspack.config.js new file mode 100644 index 00000000000..80f62f59064 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.js @@ -0,0 +1,13 @@ +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +export default { + mode: "production", + entry: path.resolve(__dirname, "main.ts"), + output: { + path: path.resolve(__dirname, "dist"), + filename: "js.bundle.js" + } +}; diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs b/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs new file mode 100644 index 00000000000..471d7db550e --- /dev/null +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs @@ -0,0 +1,13 @@ +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +export default { + mode: "production", + entry: path.resolve(__dirname, "main.ts"), + output: { + path: path.resolve(__dirname, "dist"), + filename: "mjs.bundle.js" + } +}; diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.mts b/packages/rspack-cli/tests/build/config/esm/rspack.config.mts new file mode 100644 index 00000000000..a0227010344 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.mts @@ -0,0 +1,13 @@ +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +export default { + mode: "production", + entry: path.resolve(__dirname, "main.ts"), + output: { + path: path.resolve(__dirname, "dist"), + filename: "mts.bundle.js" + } +}; diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.ts b/packages/rspack-cli/tests/build/config/esm/rspack.config.ts new file mode 100644 index 00000000000..e42840beeae --- /dev/null +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.ts @@ -0,0 +1,13 @@ +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +export default { + mode: "production", + entry: path.resolve(__dirname, "main.ts"), + output: { + path: path.resolve(__dirname, "dist"), + filename: "ts.bundle.js" + } +}; diff --git a/packages/rspack-cli/tests/build/config/loadConfig.test.ts b/packages/rspack-cli/tests/build/config/loadConfig.test.ts deleted file mode 100644 index 12214af9291..00000000000 --- a/packages/rspack-cli/tests/build/config/loadConfig.test.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { loadRspackConfig } from "../../../src/utils/loadConfig"; -import { resolve } from "path"; - -describe("loadRspackConfig", () => { - it("should throw an error when config file does not exist", async () => { - await expect( - loadRspackConfig({ - config: resolve(__dirname, ".", "./non-existent-config.js") - }) - ).rejects.toThrow("config file"); - }); - - it("should load test config file", async () => { - const config = await loadRspackConfig({ - config: resolve(__dirname, ".", "test.rspack.config.cjs") - }); - expect(config).toBeDefined(); - }); -}); diff --git a/packages/rspack-cli/tests/build/config/test.rspack.config.cjs b/packages/rspack-cli/tests/build/config/test.rspack.config.cjs deleted file mode 100644 index e424a85e27f..00000000000 --- a/packages/rspack-cli/tests/build/config/test.rspack.config.cjs +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - entry: { - main: "./src/index.jsx" - }, - module: { - rules: [ - { - test: /\.(png|svg|jpg)$/, - type: "asset/resource" - } - ] - } -}; diff --git a/packages/rspack-cli/tests/build/json/json.test.ts b/packages/rspack-cli/tests/build/json/json.test.ts index c44bfe03e32..2ce97d88a2d 100644 --- a/packages/rspack-cli/tests/build/json/json.test.ts +++ b/packages/rspack-cli/tests/build/json/json.test.ts @@ -10,7 +10,6 @@ describe("json", () => { "--json", "stats.json" ]); - debugger; expect(exitCode).toBe(0); expect(stderr).toContain(successMessage); expect(stdout).toBeFalsy(); diff --git a/packages/rspack-cli/tests/build/typescript/main.ts b/packages/rspack-cli/tests/build/typescript/main.ts deleted file mode 100644 index 41d13d1a9a1..00000000000 --- a/packages/rspack-cli/tests/build/typescript/main.ts +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 46da41616d1..00000000000 --- a/packages/rspack-cli/tests/build/typescript/rspack.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -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/typescript.test.ts b/packages/rspack-cli/tests/build/typescript/typescript.test.ts deleted file mode 100644 index 29af2909a23..00000000000 --- a/packages/rspack-cli/tests/build/typescript/typescript.test.ts +++ /dev/null @@ -1,26 +0,0 @@ -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(); - }); -}); diff --git a/packages/rspack-cli/tsconfig.json b/packages/rspack-cli/tsconfig.json index 1fe41bc4271..08e97460d83 100644 --- a/packages/rspack-cli/tsconfig.json +++ b/packages/rspack-cli/tsconfig.json @@ -6,9 +6,6 @@ "rootDir": "src", "moduleResolution": "nodenext" }, - "ts-node": { - "transpileOnly": true - }, "references": [ { "path": "../rspack" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b4158aad79..4c2b0af63a7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -939,14 +939,15 @@ importers: '@discoveryjs/json-ext': ^0.5.7 '@rspack/core': workspace:* '@rspack/dev-server': workspace:* + '@types/tmp': ^0.2.3 '@types/webpack-bundle-analyzer': ^4.6.0 colorette: 2.0.19 concat-stream: ^2.0.0 execa: ^5.0.0 internal-ip: 6.2.0 + read-pkg-up: ^9.1.0 semver: 6.3.0 source-map-support: ^0.5.19 - ts-node: 10.9.1 webpack-bundle-analyzer: 4.6.1 yargs: 17.6.2 dependencies: @@ -958,12 +959,13 @@ importers: webpack-bundle-analyzer: 4.6.1 yargs: 17.6.2 devDependencies: + '@types/tmp': 0.2.3 '@types/webpack-bundle-analyzer': 4.6.0 concat-stream: 2.0.0 execa: 5.1.1 internal-ip: 6.2.0 + read-pkg-up: 9.1.0 source-map-support: 0.5.21 - ts-node: 10.9.1 packages/rspack-dev-client: specifiers: @@ -11443,6 +11445,10 @@ packages: csstype: 3.1.1 dev: false + /@types/tmp/0.2.3: + resolution: {integrity: sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==} + dev: true + /@types/unist/2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true @@ -11459,7 +11465,7 @@ packages: dependencies: '@types/node': 18.15.11 tapable: 2.2.1 - webpack: 5.74.0 + webpack: 5.76.0 transitivePeerDependencies: - '@swc/core' - esbuild @@ -12068,14 +12074,6 @@ packages: dependencies: acorn: 8.8.0 - /acorn-import-assertions/1.8.0_acorn@8.8.2: - resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} - peerDependencies: - acorn: ^8 - dependencies: - acorn: 8.8.2 - dev: true - /acorn-jsx/5.3.2_acorn@7.4.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -16633,6 +16631,14 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 + /find-up/6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: true + /find-versions/3.2.0: resolution: {integrity: sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==} engines: {node: '>=6'} @@ -17583,6 +17589,13 @@ packages: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true + /hosted-git-info/4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + /hosted-git-info/6.1.1: resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -19983,6 +19996,13 @@ packages: dependencies: p-locate: 5.0.0 + /locate-path/7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + /lodash-es/4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} @@ -21283,6 +21303,16 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-package-data/3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.12.0 + semver: 7.4.0 + validate-npm-package-license: 3.0.4 + dev: true + /normalize-package-data/5.0.0: resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -21741,6 +21771,13 @@ packages: dependencies: yocto-queue: 0.1.0 + /p-limit/4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate/3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -21760,6 +21797,13 @@ packages: dependencies: p-limit: 3.1.0 + /p-locate/6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + /p-map-series/1.0.0: resolution: {integrity: sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==} engines: {node: '>=4'} @@ -22015,6 +22059,11 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + /path-exists/5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -23551,6 +23600,15 @@ packages: type-fest: 0.8.1 dev: true + /read-pkg-up/9.1.0: + resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + find-up: 6.3.0 + read-pkg: 7.1.0 + type-fest: 2.19.0 + dev: true + /read-pkg/3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} @@ -23570,6 +23628,16 @@ packages: type-fest: 0.6.0 dev: true + /read-pkg/7.1.0: + resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} + engines: {node: '>=12.20'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 3.0.3 + parse-json: 5.2.0 + type-fest: 2.19.0 + dev: true + /read-yaml-file/2.1.0: resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} engines: {node: '>=10.13'} @@ -26085,30 +26153,6 @@ packages: unique-string: 2.0.0 dev: true - /terser-webpack-plugin/5.3.8_webpack@5.74.0: - resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.17 - jest-worker: 27.5.1 - schema-utils: 3.1.2 - serialize-javascript: 6.0.1 - terser: 5.17.1 - webpack: 5.74.0 - dev: true - /terser-webpack-plugin/5.3.9_cnoy3hzy74l6zgqwi2oi27yeri: resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} @@ -26451,7 +26495,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - acorn: 8.8.0 + acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -26481,7 +26525,7 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 '@types/node': 18.7.9 - acorn: 8.8.0 + acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -27883,46 +27927,6 @@ packages: resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} dev: true - /webpack/5.74.0: - resolution: {integrity: sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 0.0.51 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.8.2 - acorn-import-assertions: 1.8.0_acorn@8.8.2 - browserslist: 4.21.5 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.12.0 - es-module-lexer: 0.9.3 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.1.2 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.8_webpack@5.74.0 - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - dev: true - /webpack/5.76.0: resolution: {integrity: sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==} engines: {node: '>=10.13.0'} @@ -28519,6 +28523,11 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + /yocto-queue/1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + /zod-validation-error/1.2.0_zod@3.21.4: resolution: {integrity: sha512-laJkD/ugwEh8CpuH+xXv5L9Z+RLz3lH8alNxolfaHZJck611OJj97R4Rb+ZqA7WNly2kNtTo4QwjdjXw9scpiw==} engines: {node: ^14.17 || >=16.0.0} From 09f3162d7c4774847adb8194e88dc28e082fc944 Mon Sep 17 00:00:00 2001 From: molvqingtai Date: Fri, 19 May 2023 04:43:24 +0800 Subject: [PATCH 02/13] chore: [cli] Remove unnecessary tmp dependencies --- packages/rspack-cli/package.json | 1 - packages/rspack-cli/tests/build/config/config.test.ts | 2 +- pnpm-lock.yaml | 6 ------ 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/rspack-cli/package.json b/packages/rspack-cli/package.json index 7235e7ddba6..ab3133cb9ac 100644 --- a/packages/rspack-cli/package.json +++ b/packages/rspack-cli/package.json @@ -26,7 +26,6 @@ "directory": "packages/rspack-cli" }, "devDependencies": { - "@types/tmp": "^0.2.3", "@types/webpack-bundle-analyzer": "^4.6.0", "concat-stream": "^2.0.0", "execa": "^5.0.0", diff --git a/packages/rspack-cli/tests/build/config/config.test.ts b/packages/rspack-cli/tests/build/config/config.test.ts index c1d0dc96183..6412f068de5 100644 --- a/packages/rspack-cli/tests/build/config/config.test.ts +++ b/packages/rspack-cli/tests/build/config/config.test.ts @@ -55,7 +55,7 @@ describe("rspack cli", () => { }); }); - describe("run esm config", () => { + describe("should load esm config", () => { const cwd = resolve(__dirname, "./esm"); const packageJsonPath = resolve(cwd, "./package.json"); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4c2b0af63a7..690a28d1e62 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -939,7 +939,6 @@ importers: '@discoveryjs/json-ext': ^0.5.7 '@rspack/core': workspace:* '@rspack/dev-server': workspace:* - '@types/tmp': ^0.2.3 '@types/webpack-bundle-analyzer': ^4.6.0 colorette: 2.0.19 concat-stream: ^2.0.0 @@ -959,7 +958,6 @@ importers: webpack-bundle-analyzer: 4.6.1 yargs: 17.6.2 devDependencies: - '@types/tmp': 0.2.3 '@types/webpack-bundle-analyzer': 4.6.0 concat-stream: 2.0.0 execa: 5.1.1 @@ -11445,10 +11443,6 @@ packages: csstype: 3.1.1 dev: false - /@types/tmp/0.2.3: - resolution: {integrity: sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==} - dev: true - /@types/unist/2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true From 8b965f2b9658740109529fc0c4ecfd018a818ad5 Mon Sep 17 00:00:00 2001 From: molvqingtai Date: Fri, 19 May 2023 11:06:39 +0800 Subject: [PATCH 03/13] fix: [cli] When building configuration files, do not bundle dependencies. --- packages/rspack-cli/src/utils/loadConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rspack-cli/src/utils/loadConfig.ts b/packages/rspack-cli/src/utils/loadConfig.ts index dbcc24f79cc..7168bc0af6c 100644 --- a/packages/rspack-cli/src/utils/loadConfig.ts +++ b/packages/rspack-cli/src/utils/loadConfig.ts @@ -26,7 +26,7 @@ const buildConfig = async (options: { write: true, sourcemap: "inline", platform: "node", - external: ["@rspack/core"] + packages: "external" }); // TODO: Bootstrap with rspack? From 3eb8c990a76466ab3c325511bd7266c7a90456b5 Mon Sep 17 00:00:00 2001 From: molvqingtai Date: Fri, 19 May 2023 11:11:10 +0800 Subject: [PATCH 04/13] chore: [deps] Commit missing information. --- pnpm-lock.yaml | 325 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 306 insertions(+), 19 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 690a28d1e62..ad5712c9449 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -942,6 +942,11 @@ importers: '@types/webpack-bundle-analyzer': ^4.6.0 colorette: 2.0.19 concat-stream: ^2.0.0 +<<<<<<< HEAD +======= + cross-env: 7.0.3 + esbuild: 0.17.19 +>>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) execa: ^5.0.0 internal-ip: 6.2.0 read-pkg-up: ^9.1.0 @@ -954,11 +959,19 @@ importers: '@rspack/core': link:../rspack '@rspack/dev-server': link:../rspack-dev-server colorette: 2.0.19 +<<<<<<< HEAD +======= + esbuild: 0.17.19 +>>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) semver: 6.3.0 webpack-bundle-analyzer: 4.6.1 yargs: 17.6.2 devDependencies: +<<<<<<< HEAD '@types/webpack-bundle-analyzer': 4.6.0 +======= + '@types/webpack-bundle-analyzer': 4.6.0_esbuild@0.17.19 +>>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) concat-stream: 2.0.0 execa: 5.1.1 internal-ip: 6.2.0 @@ -6150,6 +6163,14 @@ packages: dev: true optional: true + /@esbuild/android-arm/0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-arm64/0.16.3: resolution: {integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==} engines: {node: '>=12'} @@ -6168,6 +6189,14 @@ packages: dev: true optional: true + /@esbuild/android-arm64/0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-x64/0.16.3: resolution: {integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==} engines: {node: '>=12'} @@ -6186,6 +6215,14 @@ packages: dev: true optional: true + /@esbuild/android-x64/0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/darwin-arm64/0.16.3: resolution: {integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==} engines: {node: '>=12'} @@ -6204,6 +6241,14 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64/0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/darwin-x64/0.16.3: resolution: {integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==} engines: {node: '>=12'} @@ -6222,6 +6267,14 @@ packages: dev: true optional: true + /@esbuild/darwin-x64/0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/freebsd-arm64/0.16.3: resolution: {integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==} engines: {node: '>=12'} @@ -6240,6 +6293,14 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64/0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/freebsd-x64/0.16.3: resolution: {integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==} engines: {node: '>=12'} @@ -6258,6 +6319,14 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64/0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/linux-arm/0.16.3: resolution: {integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==} engines: {node: '>=12'} @@ -6276,6 +6345,14 @@ packages: dev: true optional: true + /@esbuild/linux-arm/0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-arm64/0.16.3: resolution: {integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==} engines: {node: '>=12'} @@ -6294,6 +6371,14 @@ packages: dev: true optional: true + /@esbuild/linux-arm64/0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ia32/0.16.3: resolution: {integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==} engines: {node: '>=12'} @@ -6312,6 +6397,14 @@ packages: dev: true optional: true + /@esbuild/linux-ia32/0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-loong64/0.16.3: resolution: {integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==} engines: {node: '>=12'} @@ -6330,6 +6423,14 @@ packages: dev: true optional: true + /@esbuild/linux-loong64/0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-mips64el/0.16.3: resolution: {integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==} engines: {node: '>=12'} @@ -6348,6 +6449,14 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el/0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ppc64/0.16.3: resolution: {integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==} engines: {node: '>=12'} @@ -6366,6 +6475,14 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64/0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-riscv64/0.16.3: resolution: {integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==} engines: {node: '>=12'} @@ -6384,6 +6501,14 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64/0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-s390x/0.16.3: resolution: {integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==} engines: {node: '>=12'} @@ -6402,6 +6527,14 @@ packages: dev: true optional: true + /@esbuild/linux-s390x/0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-x64/0.16.3: resolution: {integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==} engines: {node: '>=12'} @@ -6420,6 +6553,14 @@ packages: dev: true optional: true + /@esbuild/linux-x64/0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/netbsd-x64/0.16.3: resolution: {integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==} engines: {node: '>=12'} @@ -6438,6 +6579,14 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64/0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + /@esbuild/openbsd-x64/0.16.3: resolution: {integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==} engines: {node: '>=12'} @@ -6456,6 +6605,14 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64/0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + /@esbuild/sunos-x64/0.16.3: resolution: {integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==} engines: {node: '>=12'} @@ -6474,6 +6631,14 @@ packages: dev: true optional: true + /@esbuild/sunos-x64/0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + /@esbuild/win32-arm64/0.16.3: resolution: {integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==} engines: {node: '>=12'} @@ -6492,6 +6657,14 @@ packages: dev: true optional: true + /@esbuild/win32-arm64/0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-ia32/0.16.3: resolution: {integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==} engines: {node: '>=12'} @@ -6510,6 +6683,14 @@ packages: dev: true optional: true + /@esbuild/win32-ia32/0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-x64/0.16.3: resolution: {integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==} engines: {node: '>=12'} @@ -6528,6 +6709,14 @@ packages: dev: true optional: true + /@esbuild/win32-x64/0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@eslint-community/eslint-utils/4.4.0_eslint@8.40.0: resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -11454,12 +11643,20 @@ packages: '@types/node': 18.15.11 dev: true +<<<<<<< HEAD /@types/webpack-bundle-analyzer/4.6.0: +======= + /@types/webpack-bundle-analyzer/4.6.0_esbuild@0.17.19: +>>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) resolution: {integrity: sha512-XeQmQCCXdZdap+A/60UKmxW5Mz31Vp9uieGlHB3T4z/o2OLVLtTI3bvTuS6A2OWd/rbAAQiGGWIEFQACu16szA==} dependencies: '@types/node': 18.15.11 tapable: 2.2.1 +<<<<<<< HEAD webpack: 5.76.0 +======= + webpack: 5.76.0_esbuild@0.17.19 +>>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) transitivePeerDependencies: - '@swc/core' - esbuild @@ -11974,7 +12171,6 @@ packages: dependencies: webpack: 5.76.0_webpack-cli@4.10.0 webpack-cli: 4.10.0_webpack@5.76.0 - dev: true /@webpack-cli/info/1.5.0_webpack-cli@4.10.0: resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} @@ -11983,7 +12179,6 @@ packages: dependencies: envinfo: 7.8.1 webpack-cli: 4.10.0_webpack@5.76.0 - dev: true /@webpack-cli/serve/1.7.0_webpack-cli@4.10.0: resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} @@ -11995,7 +12190,6 @@ packages: optional: true dependencies: webpack-cli: 4.10.0_webpack@5.76.0 - dev: true /@xtuc/ieee754/1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -13890,7 +14084,6 @@ packages: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - dev: true /clone-response/1.0.2: resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} @@ -15663,7 +15856,6 @@ packages: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} hasBin: true - dev: true /err-code/2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -15832,6 +16024,35 @@ packages: '@esbuild/win32-x64': 0.17.18 dev: true + /esbuild/0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -16363,7 +16584,6 @@ packages: /fastest-levenshtein/1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - dev: true /fastq/1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} @@ -18028,7 +18248,6 @@ packages: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: true /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -18166,7 +18385,6 @@ packages: /interpret/2.2.0: resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} engines: {node: '>= 0.10'} - dev: true /into-stream/3.1.0: resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} @@ -18522,7 +18740,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - dev: true /is-plain-object/5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} @@ -18713,7 +18930,6 @@ packages: /isobject/3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - dev: true /isomorphic-fetch/2.2.1: resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} @@ -19620,7 +19836,6 @@ packages: /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - dev: true /kleur/3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} @@ -23722,7 +23937,6 @@ packages: engines: {node: '>= 0.10'} dependencies: resolve: 1.22.1 - dev: true /redux/4.2.0: resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==} @@ -24002,7 +24216,6 @@ packages: engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 - dev: true /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -24011,7 +24224,6 @@ packages: /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - dev: true /resolve-pathname/3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} @@ -24706,7 +24918,6 @@ packages: engines: {node: '>=8'} dependencies: kind-of: 6.0.3 - dev: true /shallowequal/1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -26136,6 +26347,7 @@ packages: dev: true optional: true +<<<<<<< HEAD /tempy/1.0.1: resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} engines: {node: '>=10'} @@ -26145,6 +26357,36 @@ packages: temp-dir: 2.0.0 type-fest: 0.16.0 unique-string: 2.0.0 +======= + /term-size/2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + dev: true + + /terser-webpack-plugin/5.3.8_ahzzqjhafedqgkhggycblq5zuy: + resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + esbuild: 0.17.19 + jest-worker: 27.5.1 + schema-utils: 3.1.2 + serialize-javascript: 6.0.1 + terser: 5.17.1 + webpack: 5.76.0_esbuild@0.17.19 +>>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) dev: true /terser-webpack-plugin/5.3.9_cnoy3hzy74l6zgqwi2oi27yeri: @@ -26193,7 +26435,7 @@ packages: schema-utils: 3.1.2 serialize-javascript: 6.0.1 terser: 5.17.1 - webpack: 5.76.0 + webpack: 5.76.0_webpack-cli@4.10.0 /terser/5.16.1: resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} @@ -27609,8 +27851,12 @@ packages: interpret: 2.2.0 rechoir: 0.7.1 webpack: 5.76.0_webpack-cli@4.10.0 +<<<<<<< HEAD webpack-merge: 5.9.0 dev: true +======= + webpack-merge: 5.8.0 +>>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) /webpack-dev-middleware/5.3.3: resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} @@ -27876,7 +28122,6 @@ packages: dependencies: clone-deep: 4.0.1 wildcard: 2.0.0 - dev: true /webpack-merge/5.9.0: resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==} @@ -27959,7 +28204,51 @@ packages: - '@swc/core' - esbuild - uglify-js + dev: false +<<<<<<< HEAD +======= + /webpack/5.76.0_esbuild@0.17.19: + resolution: {integrity: sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.4 + '@types/estree': 0.0.51 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/wasm-edit': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + acorn: 8.8.0 + acorn-import-assertions: 1.8.0_acorn@8.8.0 + browserslist: 4.21.5 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.12.0 + es-module-lexer: 0.9.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.1.2 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.8_ahzzqjhafedqgkhggycblq5zuy + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + +>>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) /webpack/5.76.0_webpack-cli@4.10.0: resolution: {integrity: sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==} engines: {node: '>=10.13.0'} @@ -27999,7 +28288,6 @@ packages: - '@swc/core' - esbuild - uglify-js - dev: true /webpack/5.80.0_esbuild@0.17.18: resolution: {integrity: sha512-OIMiq37XK1rWO8mH9ssfFKZsXg4n6klTEDL7S8/HqbAOBBaiy8ABvXvz0dDCXeEF9gqwxSvVk611zFPjS8hJxA==} @@ -28167,7 +28455,6 @@ packages: /wildcard/2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} - dev: true /window-size/0.1.0: resolution: {integrity: sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==} From edf64537e713de168984085fa3d1e39a503dc3a5 Mon Sep 17 00:00:00 2001 From: molvqingtai Date: Sat, 27 May 2023 06:56:01 +0800 Subject: [PATCH 05/13] refactor: [cli] Load the configuration file using `jiti` --- packages/rspack-cli/package.json | 1 - packages/rspack-cli/src/utils/isESM.ts | 13 - packages/rspack-cli/src/utils/loadConfig.ts | 93 +---- .../tests/build/config/config.test.ts | 103 +++++- .../tests/build/config/moonrepo/main.ts | 1 + .../build/config/moonrepo/packageA/index.ts | 4 + .../config/moonrepo/packageA/package.json | 6 + .../build/config/moonrepo/packageB/index.ts | 4 + .../config/moonrepo/packageB/package.json | 6 + .../build/config/moonrepo/rspack.config.ts | 16 + packages/rspack-cli/tsconfig.json | 2 +- pnpm-lock.yaml | 326 ++++-------------- 12 files changed, 192 insertions(+), 383 deletions(-) delete mode 100644 packages/rspack-cli/src/utils/isESM.ts create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/main.ts create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/packageA/package.json create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/packageB/package.json create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts diff --git a/packages/rspack-cli/package.json b/packages/rspack-cli/package.json index ab3133cb9ac..f4e429cf77b 100644 --- a/packages/rspack-cli/package.json +++ b/packages/rspack-cli/package.json @@ -30,7 +30,6 @@ "concat-stream": "^2.0.0", "execa": "^5.0.0", "internal-ip": "6.2.0", - "read-pkg-up": "^9.1.0", "source-map-support": "^0.5.19" }, "dependencies": { diff --git a/packages/rspack-cli/src/utils/isESM.ts b/packages/rspack-cli/src/utils/isESM.ts deleted file mode 100644 index 7c987daec18..00000000000 --- a/packages/rspack-cli/src/utils/isESM.ts +++ /dev/null @@ -1,13 +0,0 @@ -const isESM = async (modulePath, cwd?: string) => { - const { readPackageUp } = await import("read-pkg-up"); - const { packageJson } = await readPackageUp({ cwd }); - if (packageJson.type === "module") { - return true; - } - if (/\.(mjs|mts)$/.test(modulePath)) { - return true; - } - return false; -}; - -export default isESM; diff --git a/packages/rspack-cli/src/utils/loadConfig.ts b/packages/rspack-cli/src/utils/loadConfig.ts index 7168bc0af6c..c13d4dbcc7b 100644 --- a/packages/rspack-cli/src/utils/loadConfig.ts +++ b/packages/rspack-cli/src/utils/loadConfig.ts @@ -3,85 +3,13 @@ import fs from "fs"; import { RspackCLIOptions } from "../types"; import { RspackOptions, MultiRspackOptions } from "@rspack/core"; import findExtFile from "./findExtFile"; -import { rspack } from "@rspack/core"; -import isESM from "./isESM"; -import { build } from "esbuild"; +import jiti from "jiti"; const DEFAULT_CONFIG_NAME = "rspack.config" as const; -const buildConfig = async (options: { - entry: string; - output: string; - type: "esm" | "cjs"; -}) => { - const { entry, output, type } = options; - - await build({ - absWorkingDir: process.cwd(), - bundle: true, - entryPoints: [entry], - outfile: output, - format: type, - target: ["node14.18", "node16"], // Ignore the user's ts tsconfig - write: true, - sourcemap: "inline", - platform: "node", - packages: "external" - }); - - // TODO: Bootstrap with rspack? - // I don't know how to configure to output the correct esm/cjs file. - // The import/require out file is always wrong in importConfig. - // - // const compiler = rspack({ - // entry: entry, - // mode: "none", - // target: "node", - // experiments: { - // outputModule: type === "esm" - // }, - // output: { - // path: path.dirname(output), - // filename: path.basename(output), - // chunkFormat: type === "esm" ? "module" : "commonjs", - // module: type === "esm", - // clean: false, - // library: { - // type: type - // } - // } - // }); - // return new Promise((resolve, reject) => - // compiler.build(error => (error ? reject(error) : resolve(output))) - // ); - // }; -}; - -const importConfig = async ( - configPath: string -): Promise => { - const esm = await isESM(configPath); - - const type = esm ? "esm" : "cjs"; - - const tempPath = `${configPath}.timestamp-${Date.now()}-${Math.random() - .toString(16) - .slice(2)}${type === "esm" ? ".mjs" : ".cjs"}`; - - try { - await buildConfig({ - entry: configPath, - output: tempPath, - type - }); - const module = await (esm ? import(tempPath) : require(tempPath)); - const config = Reflect.has(module, "default") ? module.default : module; - return config; - } catch (error) { - throw error; - } finally { - fs.unlinkSync(tempPath); - } +// Use it to load configuration files from https://github.com/unjs/jiti. +const jitiLoad = (filePath: string) => { + return jiti(__filename, { interopDefault: true })(filePath); }; export type LoadedRspackConfig = @@ -94,20 +22,19 @@ export type LoadedRspackConfig = ) => RspackOptions | MultiRspackOptions); export async function loadRspackConfig( - options: RspackCLIOptions + options: RspackCLIOptions, + cwd = process.cwd() ): Promise { if (options.config) { - const configPath = path.resolve(process.cwd(), options.config); + const configPath = path.resolve(cwd, options.config); if (!fs.existsSync(configPath)) { throw new Error(`config file "${configPath}" not found.`); } - return importConfig(configPath); + return jitiLoad(configPath); } else { - const defaultConfig = findExtFile( - path.resolve(process.cwd(), DEFAULT_CONFIG_NAME) - ); + const defaultConfig = findExtFile(path.resolve(cwd, DEFAULT_CONFIG_NAME)); if (defaultConfig) { - return importConfig(defaultConfig); + return jitiLoad(defaultConfig); } else { return {}; } diff --git a/packages/rspack-cli/tests/build/config/config.test.ts b/packages/rspack-cli/tests/build/config/config.test.ts index 6412f068de5..28c06f108ac 100644 --- a/packages/rspack-cli/tests/build/config/config.test.ts +++ b/packages/rspack-cli/tests/build/config/config.test.ts @@ -1,6 +1,7 @@ import { run } from "../../utils/test-utils"; -import { existsSync, writeFileSync, unlinkSync } from "fs"; -import { resolve } from "path"; +import { writeFileSync, mkdirSync } from "fs"; +import { rm, readFile } from "fs/promises"; +import { join, resolve } from "path"; describe("rspack cli", () => { describe("should config not found", () => { @@ -18,7 +19,9 @@ describe("rspack cli", () => { expect(stderr).toBeFalsy(); expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); - expect(existsSync(resolve(cwd, "./dist/js.bundle.js"))).toBeTruthy(); + expect( + readFile(resolve(cwd, "./dist/js.bundle.js"), { encoding: "utf-8" }) + ).resolves.toMatch(/Main cjs file/); }); it("should load config.ts file", async () => { @@ -29,7 +32,9 @@ describe("rspack cli", () => { expect(stderr).toBeFalsy(); expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); - expect(existsSync(resolve(cwd, "./dist/ts.bundle.js"))).toBeTruthy(); + expect( + readFile(resolve(cwd, "./dist/ts.bundle.js"), { encoding: "utf-8" }) + ).resolves.toMatch(/Main cjs file/); }); it("should load config.cjs file", async () => { @@ -40,7 +45,9 @@ describe("rspack cli", () => { expect(stderr).toBeFalsy(); expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); - expect(existsSync(resolve(cwd, "./dist/cjs.bundle.js"))).toBeTruthy(); + expect( + readFile(resolve(cwd, "./dist/cjs.bundle.js"), { encoding: "utf-8" }) + ).resolves.toMatch(/Main cjs file/); }); it("should load config.cts file", async () => { @@ -51,26 +58,23 @@ describe("rspack cli", () => { expect(stderr).toBeFalsy(); expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); - expect(existsSync(resolve(cwd, "./dist/cts.bundle.js"))).toBeTruthy(); + expect( + readFile(resolve(cwd, "./dist/cts.bundle.js"), { encoding: "utf-8" }) + ).resolves.toMatch(/Main cjs file/); }); }); describe("should load esm config", () => { const cwd = resolve(__dirname, "./esm"); - const packageJsonPath = resolve(cwd, "./package.json"); - beforeAll(() => { - // mock user's package.json type is module - writeFileSync(packageJsonPath, `{"type": "module"}`); - }); - afterAll(() => unlinkSync(packageJsonPath)); - it("should load default config.js file", async () => { const { exitCode, stderr, stdout } = await run(cwd, []); expect(stderr).toBeFalsy(); expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); - expect(existsSync(resolve(cwd, "./dist/js.bundle.js"))).toBeTruthy(); + expect( + readFile(resolve(cwd, "./dist/js.bundle.js"), { encoding: "utf-8" }) + ).resolves.toMatch(/Main esm file/); }); it("should load config.ts file", async () => { @@ -81,7 +85,9 @@ describe("rspack cli", () => { expect(stderr).toBeFalsy(); expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); - expect(existsSync(resolve(cwd, "./dist/ts.bundle.js"))).toBeTruthy(); + expect( + readFile(resolve(cwd, "./dist/ts.bundle.js"), { encoding: "utf-8" }) + ).resolves.toMatch(/Main esm file/); }); it("should load config.mjs file", async () => { @@ -92,7 +98,9 @@ describe("rspack cli", () => { expect(stderr).toBeFalsy(); expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); - expect(existsSync(resolve(cwd, "./dist/mjs.bundle.js"))).toBeTruthy(); + expect( + readFile(resolve(cwd, "./dist/mjs.bundle.js"), { encoding: "utf-8" }) + ).resolves.toMatch(/Main esm file/); }); it("should load config.mts file", async () => { @@ -103,7 +111,68 @@ describe("rspack cli", () => { expect(stderr).toBeFalsy(); expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); - expect(existsSync(resolve(cwd, "./dist/mts.bundle.js"))).toBeTruthy(); + expect( + readFile(resolve(cwd, "./dist/mts.bundle.js"), { encoding: "utf-8" }) + ).resolves.toMatch(/Main esm file/); + }); + }); + + describe("should load moonrepo config", () => { + const cwd = resolve(__dirname, "./moonrepo"); + + const packageADepsNodeModules = resolve( + cwd, + "./packageA/node_modules/test-deps" + ); + const packageBDepsNodeModules = resolve( + cwd, + "./packageB/node_modules/test-deps" + ); + + beforeAll(() => { + // packageA + mkdirSync(packageADepsNodeModules, { recursive: true }); + writeFileSync( + join(packageADepsNodeModules, "./package.json"), + `{ "version": "1.0.0", "name" : "test-deps", "main" : "./index.js" }` + ); + writeFileSync( + join(packageADepsNodeModules, "./index.js"), + `export { default } from './package.json';` + ); + + // packageB + mkdirSync(packageBDepsNodeModules, { recursive: true }); + writeFileSync( + join(packageBDepsNodeModules, "./package.json"), + `{ "version": "2.0.0", "name" : "test-deps", "main" : "./index.js" }` + ); + writeFileSync( + join(packageBDepsNodeModules, "./index.js"), + `export { default } from './package.json';` + ); + }); + + afterAll(() => { + rm(packageADepsNodeModules, { recursive: true, force: true }); + rm(packageBDepsNodeModules, { recursive: true, force: true }); + }); + + it("should load moonrepo config.ts file", async () => { + const { exitCode, stderr, stdout } = await run(cwd, [ + "-c", + "rspack.config.ts" + ]); + + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect( + readFile( + resolve(cwd, `./dist/moonrepo.bundle.depsA.1.0.0-depsB.2.0.0.js`), + { encoding: "utf-8" } + ) + ).resolves.toMatch(/Main moonrepo file/); }); }); }); diff --git a/packages/rspack-cli/tests/build/config/moonrepo/main.ts b/packages/rspack-cli/tests/build/config/moonrepo/main.ts new file mode 100644 index 00000000000..8dfe760db2d --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/main.ts @@ -0,0 +1 @@ +console.log("Main moonrepo file"); diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts b/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts new file mode 100644 index 00000000000..c03c0ff0dd9 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts @@ -0,0 +1,4 @@ +// @ts-ignore +import testDeps from "test-deps"; + +export default testDeps; diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageA/package.json b/packages/rspack-cli/tests/build/config/moonrepo/packageA/package.json new file mode 100644 index 00000000000..9cdf3b60d71 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageA/package.json @@ -0,0 +1,6 @@ +{ + "name": "packageA", + "dependencies": { + "test-deps": "1.0.0" + } +} diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts b/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts new file mode 100644 index 00000000000..c03c0ff0dd9 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts @@ -0,0 +1,4 @@ +// @ts-ignore +import testDeps from "test-deps"; + +export default testDeps; diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageB/package.json b/packages/rspack-cli/tests/build/config/moonrepo/packageB/package.json new file mode 100644 index 00000000000..ba18a24ac44 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageB/package.json @@ -0,0 +1,6 @@ +{ + "name": "packageB", + "dependencies": { + "test-deps": "2.0.0" + } +} diff --git a/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts b/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts new file mode 100644 index 00000000000..4b1b903d13f --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts @@ -0,0 +1,16 @@ +import packageA_deps from "./packageA/index"; +import packageB_deps from "./packageB/index"; + +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +export default { + mode: "production", + entry: path.resolve(__dirname, "main.ts"), + output: { + path: path.resolve(__dirname, "dist"), + filename: `moonrepo.bundle.depsA.${packageA_deps.version}-depsB.${packageB_deps.version}.js` + } +}; diff --git a/packages/rspack-cli/tsconfig.json b/packages/rspack-cli/tsconfig.json index 08e97460d83..77eddb44d97 100644 --- a/packages/rspack-cli/tsconfig.json +++ b/packages/rspack-cli/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../../tsconfig.base.json", - "include": ["src", "tests/build/config/test.rspack.config.cjs"], + "include": ["src"], "compilerOptions": { "outDir": "dist", "rootDir": "src", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad5712c9449..8fd98626daf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -945,11 +945,13 @@ importers: <<<<<<< HEAD ======= cross-env: 7.0.3 +<<<<<<< HEAD esbuild: 0.17.19 >>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) +======= +>>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) execa: ^5.0.0 internal-ip: 6.2.0 - read-pkg-up: ^9.1.0 semver: 6.3.0 source-map-support: ^0.5.19 webpack-bundle-analyzer: 4.6.1 @@ -960,22 +962,28 @@ importers: '@rspack/dev-server': link:../rspack-dev-server colorette: 2.0.19 <<<<<<< HEAD +<<<<<<< HEAD ======= esbuild: 0.17.19 >>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) +======= +>>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) semver: 6.3.0 webpack-bundle-analyzer: 4.6.1 yargs: 17.6.2 devDependencies: +<<<<<<< HEAD <<<<<<< HEAD '@types/webpack-bundle-analyzer': 4.6.0 ======= '@types/webpack-bundle-analyzer': 4.6.0_esbuild@0.17.19 >>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) +======= + '@types/webpack-bundle-analyzer': 4.6.0 +>>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) concat-stream: 2.0.0 execa: 5.1.1 internal-ip: 6.2.0 - read-pkg-up: 9.1.0 source-map-support: 0.5.21 packages/rspack-dev-client: @@ -6163,14 +6171,6 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - optional: true - /@esbuild/android-arm64/0.16.3: resolution: {integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==} engines: {node: '>=12'} @@ -6189,14 +6189,6 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true - /@esbuild/android-x64/0.16.3: resolution: {integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==} engines: {node: '>=12'} @@ -6215,14 +6207,6 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - optional: true - /@esbuild/darwin-arm64/0.16.3: resolution: {integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==} engines: {node: '>=12'} @@ -6241,14 +6225,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - /@esbuild/darwin-x64/0.16.3: resolution: {integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==} engines: {node: '>=12'} @@ -6267,14 +6243,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - /@esbuild/freebsd-arm64/0.16.3: resolution: {integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==} engines: {node: '>=12'} @@ -6293,14 +6261,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/freebsd-x64/0.16.3: resolution: {integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==} engines: {node: '>=12'} @@ -6319,14 +6279,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/linux-arm/0.16.3: resolution: {integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==} engines: {node: '>=12'} @@ -6345,14 +6297,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-arm64/0.16.3: resolution: {integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==} engines: {node: '>=12'} @@ -6371,14 +6315,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ia32/0.16.3: resolution: {integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==} engines: {node: '>=12'} @@ -6397,14 +6333,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-loong64/0.16.3: resolution: {integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==} engines: {node: '>=12'} @@ -6423,14 +6351,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-mips64el/0.16.3: resolution: {integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==} engines: {node: '>=12'} @@ -6449,14 +6369,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ppc64/0.16.3: resolution: {integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==} engines: {node: '>=12'} @@ -6475,14 +6387,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-riscv64/0.16.3: resolution: {integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==} engines: {node: '>=12'} @@ -6501,14 +6405,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-s390x/0.16.3: resolution: {integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==} engines: {node: '>=12'} @@ -6527,14 +6423,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-x64/0.16.3: resolution: {integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==} engines: {node: '>=12'} @@ -6553,14 +6441,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/netbsd-x64/0.16.3: resolution: {integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==} engines: {node: '>=12'} @@ -6579,14 +6459,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - optional: true - /@esbuild/openbsd-x64/0.16.3: resolution: {integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==} engines: {node: '>=12'} @@ -6605,14 +6477,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - optional: true - /@esbuild/sunos-x64/0.16.3: resolution: {integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==} engines: {node: '>=12'} @@ -6631,14 +6495,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - optional: true - /@esbuild/win32-arm64/0.16.3: resolution: {integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==} engines: {node: '>=12'} @@ -6657,14 +6513,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-ia32/0.16.3: resolution: {integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==} engines: {node: '>=12'} @@ -6683,14 +6531,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-x64/0.16.3: resolution: {integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==} engines: {node: '>=12'} @@ -6709,14 +6549,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - /@eslint-community/eslint-utils/4.4.0_eslint@8.40.0: resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -11643,20 +11475,28 @@ packages: '@types/node': 18.15.11 dev: true +<<<<<<< HEAD <<<<<<< HEAD /@types/webpack-bundle-analyzer/4.6.0: ======= /@types/webpack-bundle-analyzer/4.6.0_esbuild@0.17.19: >>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) +======= + /@types/webpack-bundle-analyzer/4.6.0: +>>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) resolution: {integrity: sha512-XeQmQCCXdZdap+A/60UKmxW5Mz31Vp9uieGlHB3T4z/o2OLVLtTI3bvTuS6A2OWd/rbAAQiGGWIEFQACu16szA==} dependencies: '@types/node': 18.15.11 tapable: 2.2.1 +<<<<<<< HEAD <<<<<<< HEAD webpack: 5.76.0 ======= webpack: 5.76.0_esbuild@0.17.19 >>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) +======= + webpack: 5.76.0 +>>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) transitivePeerDependencies: - '@swc/core' - esbuild @@ -12171,6 +12011,7 @@ packages: dependencies: webpack: 5.76.0_webpack-cli@4.10.0 webpack-cli: 4.10.0_webpack@5.76.0 + dev: true /@webpack-cli/info/1.5.0_webpack-cli@4.10.0: resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} @@ -12179,6 +12020,7 @@ packages: dependencies: envinfo: 7.8.1 webpack-cli: 4.10.0_webpack@5.76.0 + dev: true /@webpack-cli/serve/1.7.0_webpack-cli@4.10.0: resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} @@ -12190,6 +12032,7 @@ packages: optional: true dependencies: webpack-cli: 4.10.0_webpack@5.76.0 + dev: true /@xtuc/ieee754/1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -14084,6 +13927,7 @@ packages: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 + dev: true /clone-response/1.0.2: resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} @@ -15856,6 +15700,7 @@ packages: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} hasBin: true + dev: true /err-code/2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -16024,35 +15869,6 @@ packages: '@esbuild/win32-x64': 0.17.18 dev: true - /esbuild/0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -16584,6 +16400,7 @@ packages: /fastest-levenshtein/1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} + dev: true /fastq/1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} @@ -16845,14 +16662,6 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 - /find-up/6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: true - /find-versions/3.2.0: resolution: {integrity: sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==} engines: {node: '>=6'} @@ -17803,13 +17612,6 @@ packages: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info/4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: true - /hosted-git-info/6.1.1: resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -18248,6 +18050,7 @@ packages: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + dev: true /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -18385,6 +18188,7 @@ packages: /interpret/2.2.0: resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} engines: {node: '>= 0.10'} + dev: true /into-stream/3.1.0: resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} @@ -18740,6 +18544,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 + dev: true /is-plain-object/5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} @@ -18930,6 +18735,7 @@ packages: /isobject/3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + dev: true /isomorphic-fetch/2.2.1: resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} @@ -19836,6 +19642,7 @@ packages: /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + dev: true /kleur/3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} @@ -20205,13 +20012,6 @@ packages: dependencies: p-locate: 5.0.0 - /locate-path/7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: 6.0.0 - dev: true - /lodash-es/4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} @@ -21512,16 +21312,6 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data/3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.12.0 - semver: 7.4.0 - validate-npm-package-license: 3.0.4 - dev: true - /normalize-package-data/5.0.0: resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -21980,13 +21770,6 @@ packages: dependencies: yocto-queue: 0.1.0 - /p-limit/4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: true - /p-locate/3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -22006,13 +21789,6 @@ packages: dependencies: p-limit: 3.1.0 - /p-locate/6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: 4.0.0 - dev: true - /p-map-series/1.0.0: resolution: {integrity: sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==} engines: {node: '>=4'} @@ -22268,11 +22044,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - /path-exists/5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -23809,15 +23580,6 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg-up/9.1.0: - resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - find-up: 6.3.0 - read-pkg: 7.1.0 - type-fest: 2.19.0 - dev: true - /read-pkg/3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} @@ -23837,6 +23599,7 @@ packages: type-fest: 0.6.0 dev: true +<<<<<<< HEAD /read-pkg/7.1.0: resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} engines: {node: '>=12.20'} @@ -23850,6 +23613,11 @@ packages: /read-yaml-file/2.1.0: resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} engines: {node: '>=10.13'} +======= + /read-yaml-file/1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} +>>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) dependencies: js-yaml: 4.1.0 strip-bom: 4.0.0 @@ -23937,6 +23705,7 @@ packages: engines: {node: '>= 0.10'} dependencies: resolve: 1.22.1 + dev: true /redux/4.2.0: resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==} @@ -24216,6 +23985,7 @@ packages: engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 + dev: true /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -24224,6 +23994,7 @@ packages: /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + dev: true /resolve-pathname/3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} @@ -24918,6 +24689,7 @@ packages: engines: {node: '>=8'} dependencies: kind-of: 6.0.3 + dev: true /shallowequal/1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -26363,6 +26135,7 @@ packages: engines: {node: '>=8'} dev: true +<<<<<<< HEAD /terser-webpack-plugin/5.3.8_ahzzqjhafedqgkhggycblq5zuy: resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==} engines: {node: '>= 10.13.0'} @@ -26391,6 +26164,10 @@ packages: /terser-webpack-plugin/5.3.9_cnoy3hzy74l6zgqwi2oi27yeri: resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} +======= + /terser-webpack-plugin/5.3.8_cnoy3hzy74l6zgqwi2oi27yeri: + resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==} +>>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -26435,7 +26212,7 @@ packages: schema-utils: 3.1.2 serialize-javascript: 6.0.1 terser: 5.17.1 - webpack: 5.76.0_webpack-cli@4.10.0 + webpack: 5.76.0 /terser/5.16.1: resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} @@ -27856,7 +27633,11 @@ packages: dev: true ======= webpack-merge: 5.8.0 +<<<<<<< HEAD >>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) +======= + dev: true +>>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) /webpack-dev-middleware/5.3.3: resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} @@ -28122,6 +27903,7 @@ packages: dependencies: clone-deep: 4.0.1 wildcard: 2.0.0 + dev: true /webpack-merge/5.9.0: resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==} @@ -28204,6 +27986,7 @@ packages: - '@swc/core' - esbuild - uglify-js +<<<<<<< HEAD dev: false <<<<<<< HEAD @@ -28247,6 +28030,8 @@ packages: - esbuild - uglify-js dev: true +======= +>>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) >>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) /webpack/5.76.0_webpack-cli@4.10.0: @@ -28288,6 +28073,7 @@ packages: - '@swc/core' - esbuild - uglify-js + dev: true /webpack/5.80.0_esbuild@0.17.18: resolution: {integrity: sha512-OIMiq37XK1rWO8mH9ssfFKZsXg4n6klTEDL7S8/HqbAOBBaiy8ABvXvz0dDCXeEF9gqwxSvVk611zFPjS8hJxA==} @@ -28455,6 +28241,7 @@ packages: /wildcard/2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} + dev: true /window-size/0.1.0: resolution: {integrity: sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==} @@ -28804,6 +28591,7 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} +<<<<<<< HEAD /yocto-queue/1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} @@ -28822,6 +28610,8 @@ packages: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false +======= +>>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) /zone.js/0.13.0: resolution: {integrity: sha512-7m3hNNyswsdoDobCkYNAy5WiUulkMd3+fWaGT9ij6iq3Zr/IwJo4RMCYPSDjT+r7tnPErmY9sZpKhWQ8S5k6XQ==} dependencies: From 0779af3c083c792402ca5ca679fbe378036325df Mon Sep 17 00:00:00 2001 From: molvqingtai Date: Sun, 28 May 2023 00:13:10 +0800 Subject: [PATCH 06/13] pref(cli): jiti use sucrase.transform & remove __dirname in the esm file. --- packages/rspack-cli/package.json | 7 +++---- packages/rspack-cli/src/utils/loadConfig.ts | 15 ++++++++++++--- .../rspack-cli/tests/build/basic/entry.config.mjs | 4 ++-- .../tests/build/config/cjs/tsconfig.json | 5 ----- .../tests/build/config/esm/rspack.config.js | 4 ++-- .../tests/build/config/esm/rspack.config.mjs | 4 ++-- .../tests/build/config/esm/rspack.config.mts | 4 ++-- .../tests/build/config/esm/rspack.config.ts | 4 ++-- .../tests/build/config/moonrepo/rspack.config.ts | 4 ++-- 9 files changed, 27 insertions(+), 24 deletions(-) delete mode 100644 packages/rspack-cli/tests/build/config/cjs/tsconfig.json diff --git a/packages/rspack-cli/package.json b/packages/rspack-cli/package.json index f4e429cf77b..2caa1e0de54 100644 --- a/packages/rspack-cli/package.json +++ b/packages/rspack-cli/package.json @@ -14,10 +14,7 @@ "dev": "tsc -b -w", "test": "jest --runInBand" }, - "files": [ - "bin", - "dist" - ], + "files": ["bin", "dist"], "homepage": "https://rspack.dev", "bugs": "https://github.com/web-infra-dev/rspack/issues", "repository": { @@ -37,7 +34,9 @@ "@rspack/core": "workspace:*", "@rspack/dev-server": "workspace:*", "colorette": "2.0.19", + "jiti": "^1.18.2", "semver": "6.3.0", + "sucrase": "^3.32.0", "webpack-bundle-analyzer": "4.6.1", "yargs": "17.6.2" } diff --git a/packages/rspack-cli/src/utils/loadConfig.ts b/packages/rspack-cli/src/utils/loadConfig.ts index c13d4dbcc7b..f7809e6eedb 100644 --- a/packages/rspack-cli/src/utils/loadConfig.ts +++ b/packages/rspack-cli/src/utils/loadConfig.ts @@ -4,13 +4,22 @@ import { RspackCLIOptions } from "../types"; import { RspackOptions, MultiRspackOptions } from "@rspack/core"; import findExtFile from "./findExtFile"; import jiti from "jiti"; +import { transform } from "sucrase"; const DEFAULT_CONFIG_NAME = "rspack.config" as const; // Use it to load configuration files from https://github.com/unjs/jiti. -const jitiLoad = (filePath: string) => { - return jiti(__filename, { interopDefault: true })(filePath); -}; +const jitiLoad = (() => { + return jiti(__filename, { + interopDefault: true, + cache: true, + transform: options => { + return transform(options.source, { + transforms: ["typescript", "imports"] + }); + } + }); +})(); export type LoadedRspackConfig = | undefined diff --git a/packages/rspack-cli/tests/build/basic/entry.config.mjs b/packages/rspack-cli/tests/build/basic/entry.config.mjs index 781d4de52ba..0c486c43380 100644 --- a/packages/rspack-cli/tests/build/basic/entry.config.mjs +++ b/packages/rspack-cli/tests/build/basic/entry.config.mjs @@ -1,5 +1,5 @@ -import url from "url"; -const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); +// import url from "url"; +// const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); export default { context: __dirname, mode: "development", diff --git a/packages/rspack-cli/tests/build/config/cjs/tsconfig.json b/packages/rspack-cli/tests/build/config/cjs/tsconfig.json deleted file mode 100644 index 28900bb1b58..00000000000 --- a/packages/rspack-cli/tests/build/config/cjs/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "compilerOptions": { - "module": "CommonJS" - } -} diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.js b/packages/rspack-cli/tests/build/config/esm/rspack.config.js index 80f62f59064..3e119bf049f 100644 --- a/packages/rspack-cli/tests/build/config/esm/rspack.config.js +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.js @@ -1,7 +1,7 @@ import path from "node:path"; -import { fileURLToPath } from "node:url"; +// import { fileURLToPath } from "node:url"; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +// const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { mode: "production", diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs b/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs index 471d7db550e..ebb5abf1189 100644 --- a/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs @@ -1,7 +1,7 @@ import path from "node:path"; -import { fileURLToPath } from "node:url"; +// import { fileURLToPath } from "node:url"; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +// const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { mode: "production", diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.mts b/packages/rspack-cli/tests/build/config/esm/rspack.config.mts index a0227010344..7c4d41bc30f 100644 --- a/packages/rspack-cli/tests/build/config/esm/rspack.config.mts +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.mts @@ -1,7 +1,7 @@ import path from "node:path"; -import { fileURLToPath } from "node:url"; +// import { fileURLToPath } from "node:url"; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +// const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { mode: "production", diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.ts b/packages/rspack-cli/tests/build/config/esm/rspack.config.ts index e42840beeae..514a109805c 100644 --- a/packages/rspack-cli/tests/build/config/esm/rspack.config.ts +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.ts @@ -1,7 +1,7 @@ import path from "node:path"; -import { fileURLToPath } from "node:url"; +// import { fileURLToPath } from "node:url"; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +// const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { mode: "production", diff --git a/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts b/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts index 4b1b903d13f..9f849b847ce 100644 --- a/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts +++ b/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts @@ -2,9 +2,9 @@ import packageA_deps from "./packageA/index"; import packageB_deps from "./packageB/index"; import path from "node:path"; -import { fileURLToPath } from "node:url"; +// import { fileURLToPath } from "node:url"; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); +// const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { mode: "production", From 35891216832e893a24bbda9321a21f4699cea35b Mon Sep 17 00:00:00 2001 From: molvqingtai Date: Thu, 15 Jun 2023 00:51:16 +0800 Subject: [PATCH 07/13] =?UTF-8?q?refactor(cli):=20support=20for=20`.cts`?= =?UTF-8?q?=E3=80=81`.mts`=20and=20follows=20`type:=20module`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/rspack-cli/package.json | 14 +++- packages/rspack-cli/src/rspack-cli.ts | 4 +- packages/rspack-cli/src/utils/crossImport.ts | 17 ++++ .../utils/{findExtFile.ts => findConfig.ts} | 8 +- packages/rspack-cli/src/utils/isEsmFile.ts | 14 ++++ packages/rspack-cli/src/utils/isTsFile.ts | 8 ++ packages/rspack-cli/src/utils/loadConfig.ts | 56 +++++++++---- .../rspack-cli/src/utils/readPackageUp.ts | 24 ++++++ .../tests/build/basic/entry.config.mjs | 4 +- .../tests/build/config/config.test.ts | 67 ++++++++++------ .../tests/build/config/esm/rspack.config.js | 4 +- .../tests/build/config/esm/rspack.config.mjs | 4 +- .../tests/build/config/esm/rspack.config.mts | 4 +- .../tests/build/config/esm/rspack.config.ts | 4 +- .../tests/build/config/esm/tsconfig.json | 15 ++++ .../build/config/moonrepo/packageA/index.ts | 2 +- .../config/moonrepo/packageA/package.json | 3 +- .../build/config/moonrepo/packageB/index.ts | 2 +- .../config/moonrepo/packageB/package.json | 3 +- .../build/config/moonrepo/rspack.config.ts | 10 ++- .../tests/build/config/moonrepo/tsconfig.json | 14 ++++ pnpm-lock.yaml | 79 ++++++++++++++----- 22 files changed, 269 insertions(+), 91 deletions(-) create mode 100644 packages/rspack-cli/src/utils/crossImport.ts rename packages/rspack-cli/src/utils/{findExtFile.ts => findConfig.ts} (53%) create mode 100644 packages/rspack-cli/src/utils/isEsmFile.ts create mode 100644 packages/rspack-cli/src/utils/isTsFile.ts create mode 100644 packages/rspack-cli/src/utils/readPackageUp.ts create mode 100644 packages/rspack-cli/tests/build/config/esm/tsconfig.json create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/tsconfig.json diff --git a/packages/rspack-cli/package.json b/packages/rspack-cli/package.json index 2caa1e0de54..a81a2b4359d 100644 --- a/packages/rspack-cli/package.json +++ b/packages/rspack-cli/package.json @@ -14,7 +14,10 @@ "dev": "tsc -b -w", "test": "jest --runInBand" }, - "files": ["bin", "dist"], + "files": [ + "bin", + "dist" + ], "homepage": "https://rspack.dev", "bugs": "https://github.com/web-infra-dev/rspack/issues", "repository": { @@ -23,20 +26,23 @@ "directory": "packages/rspack-cli" }, "devDependencies": { + "@types/rechoir": "^0.6.1", "@types/webpack-bundle-analyzer": "^4.6.0", "concat-stream": "^2.0.0", "execa": "^5.0.0", "internal-ip": "6.2.0", - "source-map-support": "^0.5.19" + "source-map-support": "^0.5.19", + "ts-node": "10.9.1" }, "dependencies": { "@discoveryjs/json-ext": "^0.5.7", "@rspack/core": "workspace:*", "@rspack/dev-server": "workspace:*", "colorette": "2.0.19", - "jiti": "^1.18.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "semver": "6.3.0", - "sucrase": "^3.32.0", + "type-fest": "^2.14.0", "webpack-bundle-analyzer": "4.6.1", "yargs": "17.6.2" } diff --git a/packages/rspack-cli/src/rspack-cli.ts b/packages/rspack-cli/src/rspack-cli.ts index a04764241e7..28ab058dac0 100644 --- a/packages/rspack-cli/src/rspack-cli.ts +++ b/packages/rspack-cli/src/rspack-cli.ts @@ -22,7 +22,7 @@ import { } from "@rspack/core"; import { normalizeEnv } from "./utils/options"; import { loadRspackConfig } from "./utils/loadConfig"; -import findExtFile from "./utils/findExtFile"; +import findConfig from "./utils/findConfig"; import { Mode } from "@rspack/core/src/config"; import { RspackPluginInstance, RspackPluginFunction } from "@rspack/core"; import path from "path"; @@ -129,7 +129,7 @@ export class RspackCLI { } else if (!item.entry) { const defaultEntryBase = path.resolve(process.cwd(), defaultEntry); const defaultEntryPath = - findExtFile(defaultEntryBase) || defaultEntryBase + ".js"; // default entry is js + findConfig(defaultEntryBase) || defaultEntryBase + ".js"; // default entry is js item.entry = { main: defaultEntryPath }; diff --git a/packages/rspack-cli/src/utils/crossImport.ts b/packages/rspack-cli/src/utils/crossImport.ts new file mode 100644 index 00000000000..46d5b40c6e0 --- /dev/null +++ b/packages/rspack-cli/src/utils/crossImport.ts @@ -0,0 +1,17 @@ +import { pathToFileURL } from "url"; +import isEsmFile from "./isEsmFile"; + +const crossImport = async ( + path: string, + cwd = process.cwd() +): Promise => { + if (isEsmFile(path, cwd)) { + const url = pathToFileURL(path).href; + const { default: config } = await import(url); + return config; + } else { + return require(path); + } +}; + +export default crossImport; diff --git a/packages/rspack-cli/src/utils/findExtFile.ts b/packages/rspack-cli/src/utils/findConfig.ts similarity index 53% rename from packages/rspack-cli/src/utils/findExtFile.ts rename to packages/rspack-cli/src/utils/findConfig.ts index 7964dbfec87..8866722d146 100644 --- a/packages/rspack-cli/src/utils/findExtFile.ts +++ b/packages/rspack-cli/src/utils/findConfig.ts @@ -5,10 +5,8 @@ import { DEFAULT_EXTENSIONS } from "../constants"; * Takes a basePath like `webpack.config`, return `webpack.config.{ext}` if * exists. returns undefined if none of them exists */ -const findExtFile = (basePath: string): string | undefined => { - return DEFAULT_EXTENSIONS.map(ext => basePath + ext).find(path => - fs.existsSync(path) - ); +const findConfig = (basePath: string): string | undefined => { + return DEFAULT_EXTENSIONS.map(ext => basePath + ext).find(fs.existsSync); }; -export default findExtFile; +export default findConfig; diff --git a/packages/rspack-cli/src/utils/isEsmFile.ts b/packages/rspack-cli/src/utils/isEsmFile.ts new file mode 100644 index 00000000000..00990df5696 --- /dev/null +++ b/packages/rspack-cli/src/utils/isEsmFile.ts @@ -0,0 +1,14 @@ +import path from "path"; +import readPackageUp from "./readPackageUp"; + +const isEsmFile = (filePath: string, cwd = process.cwd()) => { + const ext = path.extname(filePath); + if (/\.(mjs|mts)$/.test(ext)) { + return true; + } else { + const packageJson = readPackageUp(cwd); + return packageJson?.type === "module"; + } +}; + +export default isEsmFile; diff --git a/packages/rspack-cli/src/utils/isTsFile.ts b/packages/rspack-cli/src/utils/isTsFile.ts new file mode 100644 index 00000000000..3a6e2278c63 --- /dev/null +++ b/packages/rspack-cli/src/utils/isTsFile.ts @@ -0,0 +1,8 @@ +import path from "path"; + +const isTsFile = (configPath: string) => { + const ext = path.extname(configPath); + return /\.(c|m)?ts$/.test(ext); +}; + +export default isTsFile; diff --git a/packages/rspack-cli/src/utils/loadConfig.ts b/packages/rspack-cli/src/utils/loadConfig.ts index f7809e6eedb..709db50d0b9 100644 --- a/packages/rspack-cli/src/utils/loadConfig.ts +++ b/packages/rspack-cli/src/utils/loadConfig.ts @@ -2,24 +2,44 @@ import path from "path"; import fs from "fs"; import { RspackCLIOptions } from "../types"; import { RspackOptions, MultiRspackOptions } from "@rspack/core"; -import findExtFile from "./findExtFile"; -import jiti from "jiti"; -import { transform } from "sucrase"; +import findConfig from "./findConfig"; +import rechoir from "rechoir"; +import interpret from "interpret"; +import { pathToFileURL } from "url"; +import isEsmFile from "./isEsmFile"; +import isTsFile from "./isTsFile"; +import crossImport from "./crossImport"; + +interface RechoirError extends Error { + failures: RechoirError[]; + error: Error; +} const DEFAULT_CONFIG_NAME = "rspack.config" as const; -// Use it to load configuration files from https://github.com/unjs/jiti. -const jitiLoad = (() => { - return jiti(__filename, { - interopDefault: true, - cache: true, - transform: options => { - return transform(options.source, { - transforms: ["typescript", "imports"] - }); +const registerLoad = (configPath: string) => { + const ext = path.extname(configPath); + // TODO implement good `.mts` support after https://github.com/gulpjs/rechoir/issues/43 + // For ESM and `.mts` you need to use: 'NODE_OPTIONS="--loader ts-node/esm" rspack build --config ./rspack.config.mts' + if (isEsmFile(configPath) && isTsFile(configPath)) { + return; + } + const extensions = Object.fromEntries( + Object.entries(interpret.extensions).filter(([key]) => key === ext) + ); + if (Object.keys(extensions).length === 0) { + throw new Error(`config file "${configPath}" is not supported.`); + } + try { + rechoir.prepare(extensions, configPath); + } catch (error) { + const failures = (error as RechoirError)?.failures; + if (failures) { + const messages = failures.map(failure => failure.error.message); + throw new Error(`${messages.join("\n")}`); } - }); -})(); + } +}; export type LoadedRspackConfig = | undefined @@ -39,11 +59,13 @@ export async function loadRspackConfig( if (!fs.existsSync(configPath)) { throw new Error(`config file "${configPath}" not found.`); } - return jitiLoad(configPath); + isTsFile(configPath) && registerLoad(configPath); + return crossImport(configPath, cwd); } else { - const defaultConfig = findExtFile(path.resolve(cwd, DEFAULT_CONFIG_NAME)); + const defaultConfig = findConfig(path.resolve(cwd, DEFAULT_CONFIG_NAME)); if (defaultConfig) { - return jitiLoad(defaultConfig); + isTsFile(defaultConfig) && registerLoad(defaultConfig); + return crossImport(defaultConfig, cwd); } else { return {}; } diff --git a/packages/rspack-cli/src/utils/readPackageUp.ts b/packages/rspack-cli/src/utils/readPackageUp.ts new file mode 100644 index 00000000000..27247ca49e9 --- /dev/null +++ b/packages/rspack-cli/src/utils/readPackageUp.ts @@ -0,0 +1,24 @@ +import fs from "fs"; +import path from "path"; +import { PackageJson } from "type-fest"; + +const readPackageUp = (cwd = process.cwd()): PackageJson | null => { + let currentDir = path.resolve(cwd); + let packageJsonPath = path.join(currentDir, "package.json"); + + while (!fs.existsSync(packageJsonPath)) { + let parentDir = path.dirname(currentDir); + if (parentDir === currentDir) { + return null; + } + currentDir = parentDir; + packageJsonPath = path.join(currentDir, "package.json"); + } + try { + return JSON.parse(fs.readFileSync(packageJsonPath, "utf8")); + } catch (error) { + return null; + } +}; + +export default readPackageUp; diff --git a/packages/rspack-cli/tests/build/basic/entry.config.mjs b/packages/rspack-cli/tests/build/basic/entry.config.mjs index 0c486c43380..781d4de52ba 100644 --- a/packages/rspack-cli/tests/build/basic/entry.config.mjs +++ b/packages/rspack-cli/tests/build/basic/entry.config.mjs @@ -1,5 +1,5 @@ -// import url from "url"; -// const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); +import url from "url"; +const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); export default { context: __dirname, mode: "development", diff --git a/packages/rspack-cli/tests/build/config/config.test.ts b/packages/rspack-cli/tests/build/config/config.test.ts index 28c06f108ac..13620e6625f 100644 --- a/packages/rspack-cli/tests/build/config/config.test.ts +++ b/packages/rspack-cli/tests/build/config/config.test.ts @@ -1,5 +1,5 @@ import { run } from "../../utils/test-utils"; -import { writeFileSync, mkdirSync } from "fs"; +import { writeFileSync, mkdirSync, unlinkSync } from "fs"; import { rm, readFile } from "fs/promises"; import { join, resolve } from "path"; @@ -67,6 +67,13 @@ describe("rspack cli", () => { describe("should load esm config", () => { const cwd = resolve(__dirname, "./esm"); + const packageJsonPath = resolve(cwd, "./package.json"); + beforeAll(() => { + // mock user's package.json type is module + writeFileSync(packageJsonPath, `{"type": "module"}`); + }); + afterAll(() => unlinkSync(packageJsonPath)); + it("should load default config.js file", async () => { const { exitCode, stderr, stdout } = await run(cwd, []); expect(stderr).toBeFalsy(); @@ -78,11 +85,9 @@ describe("rspack cli", () => { }); it("should load config.ts file", async () => { - const { exitCode, stderr, stdout } = await run(cwd, [ - "-c", - "rspack.config.ts" - ]); - expect(stderr).toBeFalsy(); + const { exitCode, stdout } = await run(cwd, ["-c", "rspack.config.ts"], { + nodeOptions: ["--experimental-loader=ts-node/esm"] + }); expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); expect( @@ -104,11 +109,10 @@ describe("rspack cli", () => { }); it("should load config.mts file", async () => { - const { exitCode, stderr, stdout } = await run(cwd, [ - "-c", - "rspack.config.mts" - ]); - expect(stderr).toBeFalsy(); + const { exitCode, stdout } = await run(cwd, ["-c", "rspack.config.mts"], { + nodeOptions: ["--experimental-loader=ts-node/esm"] + }); + expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); expect( @@ -120,6 +124,7 @@ describe("rspack cli", () => { describe("should load moonrepo config", () => { const cwd = resolve(__dirname, "./moonrepo"); + const packageJsonPath = resolve(cwd, "./package.json"); const packageADepsNodeModules = resolve( cwd, "./packageA/node_modules/test-deps" @@ -130,41 +135,53 @@ describe("rspack cli", () => { ); beforeAll(() => { - // packageA + // mock user's package.json type is module + writeFileSync(packageJsonPath, `{"type": "module"}`); + // mock packageA mkdirSync(packageADepsNodeModules, { recursive: true }); writeFileSync( join(packageADepsNodeModules, "./package.json"), - `{ "version": "1.0.0", "name" : "test-deps", "main" : "./index.js" }` + `{ "version": "1.0.0", "name" : "test-deps", "main" : "./index.mjs" }` ); writeFileSync( - join(packageADepsNodeModules, "./index.js"), - `export { default } from './package.json';` + join(packageADepsNodeModules, "./index.mjs"), + ` + import { readFileSync } from "node:fs"; + import { join } from "node:path"; + export default JSON.parse(readFileSync(join("${packageADepsNodeModules}", "./package.json"))); + ` ); - // packageB + // mock packageB mkdirSync(packageBDepsNodeModules, { recursive: true }); writeFileSync( join(packageBDepsNodeModules, "./package.json"), - `{ "version": "2.0.0", "name" : "test-deps", "main" : "./index.js" }` + `{ "version": "2.0.0", "name" : "test-deps", "main" : "./index.mjs" }` ); writeFileSync( - join(packageBDepsNodeModules, "./index.js"), - `export { default } from './package.json';` + join(packageBDepsNodeModules, "./index.mjs"), + ` + import { readFileSync } from "node:fs"; + import { join } from "node:path"; + export default JSON.parse(readFileSync(join("${packageBDepsNodeModules}", "./package.json"))); + ` ); }); afterAll(() => { + unlinkSync(packageJsonPath); rm(packageADepsNodeModules, { recursive: true, force: true }); rm(packageBDepsNodeModules, { recursive: true, force: true }); }); it("should load moonrepo config.ts file", async () => { - const { exitCode, stderr, stdout } = await run(cwd, [ - "-c", - "rspack.config.ts" - ]); - - expect(stderr).toBeFalsy(); + const { exitCode, stderr, stdout } = await run( + cwd, + ["-c", "rspack.config.ts"], + { + nodeOptions: ["--experimental-loader=ts-node/esm"] + } + ); expect(stdout).toBeTruthy(); expect(exitCode).toBe(0); expect( diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.js b/packages/rspack-cli/tests/build/config/esm/rspack.config.js index 3e119bf049f..80f62f59064 100644 --- a/packages/rspack-cli/tests/build/config/esm/rspack.config.js +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.js @@ -1,7 +1,7 @@ import path from "node:path"; -// import { fileURLToPath } from "node:url"; +import { fileURLToPath } from "node:url"; -// const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { mode: "production", diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs b/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs index ebb5abf1189..471d7db550e 100644 --- a/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.mjs @@ -1,7 +1,7 @@ import path from "node:path"; -// import { fileURLToPath } from "node:url"; +import { fileURLToPath } from "node:url"; -// const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { mode: "production", diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.mts b/packages/rspack-cli/tests/build/config/esm/rspack.config.mts index 7c4d41bc30f..a0227010344 100644 --- a/packages/rspack-cli/tests/build/config/esm/rspack.config.mts +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.mts @@ -1,7 +1,7 @@ import path from "node:path"; -// import { fileURLToPath } from "node:url"; +import { fileURLToPath } from "node:url"; -// const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { mode: "production", diff --git a/packages/rspack-cli/tests/build/config/esm/rspack.config.ts b/packages/rspack-cli/tests/build/config/esm/rspack.config.ts index 514a109805c..e42840beeae 100644 --- a/packages/rspack-cli/tests/build/config/esm/rspack.config.ts +++ b/packages/rspack-cli/tests/build/config/esm/rspack.config.ts @@ -1,7 +1,7 @@ import path from "node:path"; -// import { fileURLToPath } from "node:url"; +import { fileURLToPath } from "node:url"; -// const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { mode: "production", diff --git a/packages/rspack-cli/tests/build/config/esm/tsconfig.json b/packages/rspack-cli/tests/build/config/esm/tsconfig.json new file mode 100644 index 00000000000..e7e2716a04e --- /dev/null +++ b/packages/rspack-cli/tests/build/config/esm/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "rootDir": ".", + "target": "ESNext", + "module": "ESNext", + "noEmit":true, + "esModuleInterop": true, + "resolveJsonModule":true, + "moduleResolution": "nodenext", + "allowImportingTsExtensions": true, + "allowSyntheticDefaultImports": true, + }, + "include": ["**/*.ts", "**/*.js"] +} diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts b/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts index c03c0ff0dd9..2d047c285d5 100644 --- a/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts @@ -1,4 +1,4 @@ // @ts-ignore import testDeps from "test-deps"; -export default testDeps; +export default testDeps as unknown as { version: string }; diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageA/package.json b/packages/rspack-cli/tests/build/config/moonrepo/packageA/package.json index 9cdf3b60d71..aae1775654c 100644 --- a/packages/rspack-cli/tests/build/config/moonrepo/packageA/package.json +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageA/package.json @@ -1,5 +1,6 @@ { - "name": "packageA", + "name": "package-a", + "type":"module", "dependencies": { "test-deps": "1.0.0" } diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts b/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts index c03c0ff0dd9..2d047c285d5 100644 --- a/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts @@ -1,4 +1,4 @@ // @ts-ignore import testDeps from "test-deps"; -export default testDeps; +export default testDeps as unknown as { version: string }; diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageB/package.json b/packages/rspack-cli/tests/build/config/moonrepo/packageB/package.json index ba18a24ac44..ac37edd038a 100644 --- a/packages/rspack-cli/tests/build/config/moonrepo/packageB/package.json +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageB/package.json @@ -1,5 +1,6 @@ { - "name": "packageB", + "name": "package-b", + "type":"module", "dependencies": { "test-deps": "2.0.0" } diff --git a/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts b/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts index 9f849b847ce..4068d50d7d9 100644 --- a/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts +++ b/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts @@ -1,10 +1,12 @@ -import packageA_deps from "./packageA/index"; -import packageB_deps from "./packageB/index"; +// @ts-ignore +import packageA_deps from "./packageA/index.ts"; +// @ts-ignore +import packageB_deps from "./packageB/index.ts"; import path from "node:path"; -// import { fileURLToPath } from "node:url"; +import { fileURLToPath } from "node:url"; -// const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { mode: "production", diff --git a/packages/rspack-cli/tests/build/config/moonrepo/tsconfig.json b/packages/rspack-cli/tests/build/config/moonrepo/tsconfig.json new file mode 100644 index 00000000000..50ba8d0572e --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "rootDir": ".", + "target": "ESNext", + "module": "ESNext", + "noEmit":true, + "resolveJsonModule":true, + "moduleResolution": "nodenext", + "allowImportingTsExtensions": true, + "allowSyntheticDefaultImports": true, + }, + "include": ["**/*.ts", "**/*.js"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8fd98626daf..a46b3f747d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -939,6 +939,7 @@ importers: '@discoveryjs/json-ext': ^0.5.7 '@rspack/core': workspace:* '@rspack/dev-server': workspace:* + '@types/rechoir': ^0.6.1 '@types/webpack-bundle-analyzer': ^4.6.0 colorette: 2.0.19 concat-stream: ^2.0.0 @@ -952,8 +953,12 @@ importers: >>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) execa: ^5.0.0 internal-ip: 6.2.0 + interpret: ^3.1.1 + rechoir: ^0.8.0 semver: 6.3.0 source-map-support: ^0.5.19 + ts-node: 10.9.1 + type-fest: ^2.14.0 webpack-bundle-analyzer: 4.6.1 yargs: 17.6.2 dependencies: @@ -963,17 +968,27 @@ importers: colorette: 2.0.19 <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD ======= esbuild: 0.17.19 >>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) ======= >>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) +======= + interpret: 3.1.1 + rechoir: 0.8.0 +>>>>>>> 61b4f62b9 (refactor(cli): support for `.cts`、`.mts` and follows `type: module`) semver: 6.3.0 + type-fest: 2.19.0 webpack-bundle-analyzer: 4.6.1 yargs: 17.6.2 devDependencies: <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD +======= + '@types/rechoir': 0.6.1 +>>>>>>> 61b4f62b9 (refactor(cli): support for `.cts`、`.mts` and follows `type: module`) '@types/webpack-bundle-analyzer': 4.6.0 ======= '@types/webpack-bundle-analyzer': 4.6.0_esbuild@0.17.19 @@ -985,6 +1000,7 @@ importers: execa: 5.1.1 internal-ip: 6.2.0 source-map-support: 0.5.21 + ts-node: 10.9.1 packages/rspack-dev-client: specifiers: @@ -11232,6 +11248,21 @@ packages: dependencies: '@types/node': 18.15.11 +<<<<<<< HEAD +======= + /@types/interpret/1.1.1: + resolution: {integrity: sha512-HZ4d0m2Ebl8DmrOdYZHgYyipj/8Ftq1/ssB/oQR7fqfUrwtTP7IW3BDi2V445nhPBLzZjEkApaPVp83moSCXlA==} + dependencies: + '@types/node': 16.11.7 + dev: true + + /@types/is-ci/3.0.0: + resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} + dependencies: + ci-info: 3.3.2 + dev: true + +>>>>>>> 61b4f62b9 (refactor(cli): support for `.cts`、`.mts` and follows `type: module`) /@types/istanbul-lib-coverage/2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} @@ -11383,6 +11414,12 @@ packages: '@types/scheduler': 0.16.2 csstype: 3.1.1 + /@types/rechoir/0.6.1: + resolution: {integrity: sha512-HbMQqyZC8W9NxE3R89rW+hFwFXeIdmCT7x91NQjzB4+0CI42K/CJfRak5/jAQ7L5qi1cGcQQdo+GI9pqqUhbKQ==} + dependencies: + '@types/interpret': 1.1.1 + dev: true + /@types/resolve/1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true @@ -12011,7 +12048,6 @@ packages: dependencies: webpack: 5.76.0_webpack-cli@4.10.0 webpack-cli: 4.10.0_webpack@5.76.0 - dev: true /@webpack-cli/info/1.5.0_webpack-cli@4.10.0: resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} @@ -12020,7 +12056,6 @@ packages: dependencies: envinfo: 7.8.1 webpack-cli: 4.10.0_webpack@5.76.0 - dev: true /@webpack-cli/serve/1.7.0_webpack-cli@4.10.0: resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} @@ -12032,7 +12067,6 @@ packages: optional: true dependencies: webpack-cli: 4.10.0_webpack@5.76.0 - dev: true /@xtuc/ieee754/1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -13927,7 +13961,6 @@ packages: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - dev: true /clone-response/1.0.2: resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} @@ -14103,7 +14136,7 @@ packages: dev: false /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} /concat-stream/1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} @@ -15700,7 +15733,6 @@ packages: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} hasBin: true - dev: true /err-code/2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -16400,7 +16432,6 @@ packages: /fastest-levenshtein/1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - dev: true /fastq/1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} @@ -18050,7 +18081,6 @@ packages: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: true /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -18188,7 +18218,11 @@ packages: /interpret/2.2.0: resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} engines: {node: '>= 0.10'} - dev: true + + /interpret/3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + dev: false /into-stream/3.1.0: resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} @@ -18544,7 +18578,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - dev: true /is-plain-object/5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} @@ -18735,7 +18768,6 @@ packages: /isobject/3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - dev: true /isomorphic-fetch/2.2.1: resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} @@ -19505,8 +19537,12 @@ packages: /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: +<<<<<<< HEAD graceful-fs: 4.2.10 dev: true +======= + graceful-fs: 4.2.11 +>>>>>>> 61b4f62b9 (refactor(cli): support for `.cts`、`.mts` and follows `type: module`) /jsonfile/6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -19642,7 +19678,6 @@ packages: /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - dev: true /kleur/3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} @@ -23705,7 +23740,13 @@ packages: engines: {node: '>= 0.10'} dependencies: resolve: 1.22.1 - dev: true + + /rechoir/0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + dependencies: + resolve: 1.22.2 + dev: false /redux/4.2.0: resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==} @@ -23985,7 +24026,6 @@ packages: engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 - dev: true /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -23994,7 +24034,6 @@ packages: /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - dev: true /resolve-pathname/3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} @@ -24689,7 +24728,6 @@ packages: engines: {node: '>=8'} dependencies: kind-of: 6.0.3 - dev: true /shallowequal/1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -26212,7 +26250,7 @@ packages: schema-utils: 3.1.2 serialize-javascript: 6.0.1 terser: 5.17.1 - webpack: 5.76.0 + webpack: 5.76.0_webpack-cli@4.10.0 /terser/5.16.1: resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} @@ -27628,6 +27666,7 @@ packages: interpret: 2.2.0 rechoir: 0.7.1 webpack: 5.76.0_webpack-cli@4.10.0 +<<<<<<< HEAD <<<<<<< HEAD webpack-merge: 5.9.0 dev: true @@ -27638,6 +27677,9 @@ packages: ======= dev: true >>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) +======= + webpack-merge: 5.8.0 +>>>>>>> 61b4f62b9 (refactor(cli): support for `.cts`、`.mts` and follows `type: module`) /webpack-dev-middleware/5.3.3: resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} @@ -27903,7 +27945,6 @@ packages: dependencies: clone-deep: 4.0.1 wildcard: 2.0.0 - dev: true /webpack-merge/5.9.0: resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==} @@ -28073,7 +28114,6 @@ packages: - '@swc/core' - esbuild - uglify-js - dev: true /webpack/5.80.0_esbuild@0.17.18: resolution: {integrity: sha512-OIMiq37XK1rWO8mH9ssfFKZsXg4n6klTEDL7S8/HqbAOBBaiy8ABvXvz0dDCXeEF9gqwxSvVk611zFPjS8hJxA==} @@ -28241,7 +28281,6 @@ packages: /wildcard/2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} - dev: true /window-size/0.1.0: resolution: {integrity: sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==} From 2b4883ee1d58e9e4bc8bbaeae21ec5113ef75af2 Mon Sep 17 00:00:00 2001 From: molvqingtai Date: Thu, 15 Jun 2023 10:29:15 +0800 Subject: [PATCH 08/13] chore(cli): correct method name --- packages/rspack-cli/src/utils/loadConfig.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/rspack-cli/src/utils/loadConfig.ts b/packages/rspack-cli/src/utils/loadConfig.ts index 709db50d0b9..d9f45771419 100644 --- a/packages/rspack-cli/src/utils/loadConfig.ts +++ b/packages/rspack-cli/src/utils/loadConfig.ts @@ -17,7 +17,7 @@ interface RechoirError extends Error { const DEFAULT_CONFIG_NAME = "rspack.config" as const; -const registerLoad = (configPath: string) => { +const registerLoader = (configPath: string) => { const ext = path.extname(configPath); // TODO implement good `.mts` support after https://github.com/gulpjs/rechoir/issues/43 // For ESM and `.mts` you need to use: 'NODE_OPTIONS="--loader ts-node/esm" rspack build --config ./rspack.config.mts' @@ -59,12 +59,12 @@ export async function loadRspackConfig( if (!fs.existsSync(configPath)) { throw new Error(`config file "${configPath}" not found.`); } - isTsFile(configPath) && registerLoad(configPath); + isTsFile(configPath) && registerLoader(configPath); return crossImport(configPath, cwd); } else { const defaultConfig = findConfig(path.resolve(cwd, DEFAULT_CONFIG_NAME)); if (defaultConfig) { - isTsFile(defaultConfig) && registerLoad(defaultConfig); + isTsFile(defaultConfig) && registerLoader(defaultConfig); return crossImport(defaultConfig, cwd); } else { return {}; From 21b6f7e880e1bf214c43f1d96d3a0853b3b9f146 Mon Sep 17 00:00:00 2001 From: molvqingtai Date: Sun, 18 Jun 2023 23:05:30 +0800 Subject: [PATCH 09/13] perf(cli): prevent some edge conditions from going wrong --- packages/rspack-cli/src/utils/crossImport.ts | 7 ++++++- packages/rspack-cli/src/utils/loadConfig.ts | 2 ++ .../tests/build/config/moonrepo/packageA/index.ts | 2 +- .../tests/build/config/moonrepo/packageB/index.ts | 2 +- .../tests/build/config/moonrepo/rspack.config.ts | 4 ++-- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/rspack-cli/src/utils/crossImport.ts b/packages/rspack-cli/src/utils/crossImport.ts index 46d5b40c6e0..4989699c914 100644 --- a/packages/rspack-cli/src/utils/crossImport.ts +++ b/packages/rspack-cli/src/utils/crossImport.ts @@ -1,13 +1,18 @@ import { pathToFileURL } from "url"; import isEsmFile from "./isEsmFile"; +/** + * Dynamically import files. It will make sure it's not being compiled away by TS/Rollup. + */ +export const dynamicImport = new Function("path", "return import(path)"); + const crossImport = async ( path: string, cwd = process.cwd() ): Promise => { if (isEsmFile(path, cwd)) { const url = pathToFileURL(path).href; - const { default: config } = await import(url); + const { default: config } = await dynamicImport(url); return config; } else { return require(path); diff --git a/packages/rspack-cli/src/utils/loadConfig.ts b/packages/rspack-cli/src/utils/loadConfig.ts index d9f45771419..3eca4201036 100644 --- a/packages/rspack-cli/src/utils/loadConfig.ts +++ b/packages/rspack-cli/src/utils/loadConfig.ts @@ -37,6 +37,8 @@ const registerLoader = (configPath: string) => { if (failures) { const messages = failures.map(failure => failure.error.message); throw new Error(`${messages.join("\n")}`); + } else { + throw error; } } }; diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts b/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts index 2d047c285d5..bf76796cd3a 100644 --- a/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageA/index.ts @@ -1,4 +1,4 @@ -// @ts-ignore +// @ts-ignore: Because dynamically create node_modules import testDeps from "test-deps"; export default testDeps as unknown as { version: string }; diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts b/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts index 2d047c285d5..bf76796cd3a 100644 --- a/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageB/index.ts @@ -1,4 +1,4 @@ -// @ts-ignore +// @ts-ignore: Because dynamically create node_modules import testDeps from "test-deps"; export default testDeps as unknown as { version: string }; diff --git a/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts b/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts index 4068d50d7d9..2a3c1dba0d9 100644 --- a/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts +++ b/packages/rspack-cli/tests/build/config/moonrepo/rspack.config.ts @@ -1,6 +1,6 @@ -// @ts-ignore +// @ts-ignore: Because dynamically create {"type": "module"} import packageA_deps from "./packageA/index.ts"; -// @ts-ignore +// @ts-ignore: Because dynamically create {"type": "module"} import packageB_deps from "./packageB/index.ts"; import path from "node:path"; From 6a190dec3fe25996a8adb5c591c8eecead9f3268 Mon Sep 17 00:00:00 2001 From: "yangjian.fe" Date: Fri, 23 Jun 2023 09:51:35 +0800 Subject: [PATCH 10/13] chore: fix lock --- pnpm-lock.yaml | 234 ++++++++----------------------------------------- 1 file changed, 35 insertions(+), 199 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a46b3f747d0..f9185332d92 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -943,14 +943,6 @@ importers: '@types/webpack-bundle-analyzer': ^4.6.0 colorette: 2.0.19 concat-stream: ^2.0.0 -<<<<<<< HEAD -======= - cross-env: 7.0.3 -<<<<<<< HEAD - esbuild: 0.17.19 ->>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) -======= ->>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) execa: ^5.0.0 internal-ip: 6.2.0 interpret: ^3.1.1 @@ -966,36 +958,15 @@ importers: '@rspack/core': link:../rspack '@rspack/dev-server': link:../rspack-dev-server colorette: 2.0.19 -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -======= - esbuild: 0.17.19 ->>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) -======= ->>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) -======= interpret: 3.1.1 rechoir: 0.8.0 ->>>>>>> 61b4f62b9 (refactor(cli): support for `.cts`、`.mts` and follows `type: module`) semver: 6.3.0 type-fest: 2.19.0 webpack-bundle-analyzer: 4.6.1 yargs: 17.6.2 devDependencies: -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -======= '@types/rechoir': 0.6.1 ->>>>>>> 61b4f62b9 (refactor(cli): support for `.cts`、`.mts` and follows `type: module`) - '@types/webpack-bundle-analyzer': 4.6.0 -======= - '@types/webpack-bundle-analyzer': 4.6.0_esbuild@0.17.19 ->>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) -======= '@types/webpack-bundle-analyzer': 4.6.0 ->>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) concat-stream: 2.0.0 execa: 5.1.1 internal-ip: 6.2.0 @@ -2392,7 +2363,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.1 + resolve: 1.22.2 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -2407,7 +2378,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.1 + resolve: 1.22.2 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -2423,7 +2394,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.1 + resolve: 1.22.2 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -11248,21 +11219,12 @@ packages: dependencies: '@types/node': 18.15.11 -<<<<<<< HEAD -======= /@types/interpret/1.1.1: resolution: {integrity: sha512-HZ4d0m2Ebl8DmrOdYZHgYyipj/8Ftq1/ssB/oQR7fqfUrwtTP7IW3BDi2V445nhPBLzZjEkApaPVp83moSCXlA==} dependencies: - '@types/node': 16.11.7 - dev: true - - /@types/is-ci/3.0.0: - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} - dependencies: - ci-info: 3.3.2 + '@types/node': 18.15.11 dev: true ->>>>>>> 61b4f62b9 (refactor(cli): support for `.cts`、`.mts` and follows `type: module`) /@types/istanbul-lib-coverage/2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} @@ -11345,6 +11307,7 @@ packages: /@types/node/16.11.7: resolution: {integrity: sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==} + dev: true /@types/node/18.15.11: resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} @@ -11512,28 +11475,12 @@ packages: '@types/node': 18.15.11 dev: true -<<<<<<< HEAD -<<<<<<< HEAD - /@types/webpack-bundle-analyzer/4.6.0: -======= - /@types/webpack-bundle-analyzer/4.6.0_esbuild@0.17.19: ->>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) -======= /@types/webpack-bundle-analyzer/4.6.0: ->>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) resolution: {integrity: sha512-XeQmQCCXdZdap+A/60UKmxW5Mz31Vp9uieGlHB3T4z/o2OLVLtTI3bvTuS6A2OWd/rbAAQiGGWIEFQACu16szA==} dependencies: '@types/node': 18.15.11 tapable: 2.2.1 -<<<<<<< HEAD -<<<<<<< HEAD webpack: 5.76.0 -======= - webpack: 5.76.0_esbuild@0.17.19 ->>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) -======= - webpack: 5.76.0 ->>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) transitivePeerDependencies: - '@swc/core' - esbuild @@ -12048,6 +11995,7 @@ packages: dependencies: webpack: 5.76.0_webpack-cli@4.10.0 webpack-cli: 4.10.0_webpack@5.76.0 + dev: true /@webpack-cli/info/1.5.0_webpack-cli@4.10.0: resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} @@ -12056,6 +12004,7 @@ packages: dependencies: envinfo: 7.8.1 webpack-cli: 4.10.0_webpack@5.76.0 + dev: true /@webpack-cli/serve/1.7.0_webpack-cli@4.10.0: resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} @@ -12067,6 +12016,7 @@ packages: optional: true dependencies: webpack-cli: 4.10.0_webpack@5.76.0 + dev: true /@xtuc/ieee754/1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -12147,14 +12097,6 @@ packages: acorn: 7.4.1 dev: true - /acorn-jsx/5.3.2_acorn@8.8.0: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.8.0 - dev: true - /acorn-jsx/5.3.2_acorn@8.8.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -12801,7 +12743,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 cosmiconfig: 7.1.0 - resolve: 1.22.1 + resolve: 1.22.2 dev: false /babel-plugin-named-exports-order/0.0.2: @@ -13961,6 +13903,7 @@ packages: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 + dev: true /clone-response/1.0.2: resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} @@ -14136,7 +14079,7 @@ packages: dev: false /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} /concat-stream/1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} @@ -15733,6 +15676,7 @@ packages: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} hasBin: true + dev: true /err-code/2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -16032,8 +15976,8 @@ packages: resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.0 - acorn-jsx: 5.3.2_acorn@8.8.0 + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 eslint-visitor-keys: 3.4.1 dev: true @@ -16432,6 +16376,7 @@ packages: /fastest-levenshtein/1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} + dev: true /fastq/1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} @@ -18081,6 +18026,7 @@ packages: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + dev: true /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -18218,6 +18164,7 @@ packages: /interpret/2.2.0: resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} engines: {node: '>= 0.10'} + dev: true /interpret/3.1.1: resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} @@ -18359,6 +18306,7 @@ packages: resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: has: 1.0.3 + dev: true /is-core-module/2.12.0: resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} @@ -18578,6 +18526,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 + dev: true /is-plain-object/5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} @@ -18768,6 +18717,7 @@ packages: /isobject/3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + dev: true /isomorphic-fetch/2.2.1: resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} @@ -19328,7 +19278,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 16.11.7 + '@types/node': 18.15.11 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -19537,12 +19487,8 @@ packages: /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: -<<<<<<< HEAD graceful-fs: 4.2.10 dev: true -======= - graceful-fs: 4.2.11 ->>>>>>> 61b4f62b9 (refactor(cli): support for `.cts`、`.mts` and follows `type: module`) /jsonfile/6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -19678,6 +19624,7 @@ packages: /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + dev: true /kleur/3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} @@ -21342,7 +21289,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.1 + resolve: 1.22.2 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -22338,7 +22285,7 @@ packages: postcss: 8.4.21 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.1 + resolve: 1.22.2 dev: true /postcss-js/4.0.1_postcss@8.4.21: @@ -22879,7 +22826,7 @@ packages: jstransformer: 1.0.0 pug-error: 2.0.0 pug-walk: 2.0.0 - resolve: 1.22.1 + resolve: 1.22.2 dev: true /pug-lexer/5.0.1: @@ -23634,25 +23581,9 @@ packages: type-fest: 0.6.0 dev: true -<<<<<<< HEAD - /read-pkg/7.1.0: - resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} - engines: {node: '>=12.20'} - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 2.19.0 - dev: true - /read-yaml-file/2.1.0: resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} engines: {node: '>=10.13'} -======= - /read-yaml-file/1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} ->>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) dependencies: js-yaml: 4.1.0 strip-bom: 4.0.0 @@ -23739,7 +23670,8 @@ packages: resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.1 + resolve: 1.22.2 + dev: true /rechoir/0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} @@ -24026,6 +23958,7 @@ packages: engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 + dev: true /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -24034,6 +23967,7 @@ packages: /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + dev: true /resolve-pathname/3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} @@ -24067,6 +24001,7 @@ packages: is-core-module: 2.10.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /resolve/1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} @@ -24728,6 +24663,7 @@ packages: engines: {node: '>=8'} dependencies: kind-of: 6.0.3 + dev: true /shallowequal/1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -26157,7 +26093,6 @@ packages: dev: true optional: true -<<<<<<< HEAD /tempy/1.0.1: resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} engines: {node: '>=10'} @@ -26167,45 +26102,10 @@ packages: temp-dir: 2.0.0 type-fest: 0.16.0 unique-string: 2.0.0 -======= - /term-size/2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: true - -<<<<<<< HEAD - /terser-webpack-plugin/5.3.8_ahzzqjhafedqgkhggycblq5zuy: - resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.17 - esbuild: 0.17.19 - jest-worker: 27.5.1 - schema-utils: 3.1.2 - serialize-javascript: 6.0.1 - terser: 5.17.1 - webpack: 5.76.0_esbuild@0.17.19 ->>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) dev: true /terser-webpack-plugin/5.3.9_cnoy3hzy74l6zgqwi2oi27yeri: resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} -======= - /terser-webpack-plugin/5.3.8_cnoy3hzy74l6zgqwi2oi27yeri: - resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==} ->>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -26250,7 +26150,7 @@ packages: schema-utils: 3.1.2 serialize-javascript: 6.0.1 terser: 5.17.1 - webpack: 5.76.0_webpack-cli@4.10.0 + webpack: 5.76.0 /terser/5.16.1: resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} @@ -27666,20 +27566,8 @@ packages: interpret: 2.2.0 rechoir: 0.7.1 webpack: 5.76.0_webpack-cli@4.10.0 -<<<<<<< HEAD -<<<<<<< HEAD webpack-merge: 5.9.0 dev: true -======= - webpack-merge: 5.8.0 -<<<<<<< HEAD ->>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) -======= - dev: true ->>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) -======= - webpack-merge: 5.8.0 ->>>>>>> 61b4f62b9 (refactor(cli): support for `.cts`、`.mts` and follows `type: module`) /webpack-dev-middleware/5.3.3: resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} @@ -27945,6 +27833,7 @@ packages: dependencies: clone-deep: 4.0.1 wildcard: 2.0.0 + dev: true /webpack-merge/5.9.0: resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==} @@ -28027,54 +27916,7 @@ packages: - '@swc/core' - esbuild - uglify-js -<<<<<<< HEAD - dev: false - -<<<<<<< HEAD -======= - /webpack/5.76.0_esbuild@0.17.19: - resolution: {integrity: sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 0.0.51 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.8.0 - acorn-import-assertions: 1.8.0_acorn@8.8.0 - browserslist: 4.21.5 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.12.0 - es-module-lexer: 0.9.3 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.1.2 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.8_ahzzqjhafedqgkhggycblq5zuy - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - dev: true -======= ->>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) ->>>>>>> 31f236cf2 (chore: [deps] Commit missing information.) /webpack/5.76.0_webpack-cli@4.10.0: resolution: {integrity: sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==} engines: {node: '>=10.13.0'} @@ -28114,6 +27956,7 @@ packages: - '@swc/core' - esbuild - uglify-js + dev: true /webpack/5.80.0_esbuild@0.17.18: resolution: {integrity: sha512-OIMiq37XK1rWO8mH9ssfFKZsXg4n6klTEDL7S8/HqbAOBBaiy8ABvXvz0dDCXeEF9gqwxSvVk611zFPjS8hJxA==} @@ -28281,6 +28124,7 @@ packages: /wildcard/2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} + dev: true /window-size/0.1.0: resolution: {integrity: sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==} @@ -28630,12 +28474,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} -<<<<<<< HEAD - /yocto-queue/1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true - /zod-validation-error/1.2.0_zod@3.21.4: resolution: {integrity: sha512-laJkD/ugwEh8CpuH+xXv5L9Z+RLz3lH8alNxolfaHZJck611OJj97R4Rb+ZqA7WNly2kNtTo4QwjdjXw9scpiw==} engines: {node: ^14.17 || >=16.0.0} @@ -28649,8 +28487,6 @@ packages: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false -======= ->>>>>>> 891e489c6 (refactor: [cli] Load the configuration file using `jiti`) /zone.js/0.13.0: resolution: {integrity: sha512-7m3hNNyswsdoDobCkYNAy5WiUulkMd3+fWaGT9ij6iq3Zr/IwJo4RMCYPSDjT+r7tnPErmY9sZpKhWQ8S5k6XQ==} dependencies: From 2a1b8c032a6adb60f719fb5fa87e8ea7ad57df73 Mon Sep 17 00:00:00 2001 From: "yangjian.fe" Date: Fri, 23 Jun 2023 10:16:27 +0800 Subject: [PATCH 11/13] chore: remove type-fest --- packages/rspack-cli/package.json | 1 - packages/rspack-cli/src/utils/readPackageUp.ts | 3 +-- packages/rspack-plugin-node-polyfill/package.json | 1 - pnpm-lock.yaml | 5 +---- 4 files changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/rspack-cli/package.json b/packages/rspack-cli/package.json index a81a2b4359d..5da44f3ec36 100644 --- a/packages/rspack-cli/package.json +++ b/packages/rspack-cli/package.json @@ -42,7 +42,6 @@ "interpret": "^3.1.1", "rechoir": "^0.8.0", "semver": "6.3.0", - "type-fest": "^2.14.0", "webpack-bundle-analyzer": "4.6.1", "yargs": "17.6.2" } diff --git a/packages/rspack-cli/src/utils/readPackageUp.ts b/packages/rspack-cli/src/utils/readPackageUp.ts index 27247ca49e9..e82d307525b 100644 --- a/packages/rspack-cli/src/utils/readPackageUp.ts +++ b/packages/rspack-cli/src/utils/readPackageUp.ts @@ -1,8 +1,7 @@ import fs from "fs"; import path from "path"; -import { PackageJson } from "type-fest"; -const readPackageUp = (cwd = process.cwd()): PackageJson | null => { +const readPackageUp = (cwd = process.cwd()): { type?: "module" } | null => { let currentDir = path.resolve(cwd); let packageJsonPath = path.join(currentDir, "package.json"); diff --git a/packages/rspack-plugin-node-polyfill/package.json b/packages/rspack-plugin-node-polyfill/package.json index 6e93663ee99..e9583607907 100644 --- a/packages/rspack-plugin-node-polyfill/package.json +++ b/packages/rspack-plugin-node-polyfill/package.json @@ -41,7 +41,6 @@ "string_decoder": "^1.3.0", "timers-browserify": "^2.0.12", "tty-browserify": "^0.0.1", - "type-fest": "^2.14.0", "url": "^0.11.0", "util": "^0.12.4", "vm-browserify": "^1.1.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9185332d92..53d202ec790 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -950,7 +950,6 @@ importers: semver: 6.3.0 source-map-support: ^0.5.19 ts-node: 10.9.1 - type-fest: ^2.14.0 webpack-bundle-analyzer: 4.6.1 yargs: 17.6.2 dependencies: @@ -961,7 +960,6 @@ importers: interpret: 3.1.1 rechoir: 0.8.0 semver: 6.3.0 - type-fest: 2.19.0 webpack-bundle-analyzer: 4.6.1 yargs: 17.6.2 devDependencies: @@ -1096,7 +1094,6 @@ importers: string_decoder: ^1.3.0 timers-browserify: ^2.0.12 tty-browserify: ^0.0.1 - type-fest: ^2.14.0 url: ^0.11.0 util: ^0.12.4 vm-browserify: ^1.1.2 @@ -1123,7 +1120,6 @@ importers: string_decoder: 1.3.0 timers-browserify: 2.0.12 tty-browserify: 0.0.1 - type-fest: 2.19.0 url: 0.11.0 util: 0.12.5 vm-browserify: 1.1.2 @@ -26580,6 +26576,7 @@ packages: /type-fest/2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} + dev: true /type-fest/3.9.0: resolution: {integrity: sha512-hR8JP2e8UiH7SME5JZjsobBlEiatFoxpzCP+R3ZeCo7kAaG1jXQE5X/buLzogM6GJu8le9Y4OcfNuIQX0rZskA==} From 95a862f4599c1bdc604140e149de6a61635906ed Mon Sep 17 00:00:00 2001 From: "yangjian.fe" Date: Fri, 23 Jun 2023 10:42:23 +0800 Subject: [PATCH 12/13] chore: commit node_modules in monorepo --- .gitignore | 1 + .../tests/build/config/config.test.ts | 51 ------------------- .../tests/build/config/moonrepo/package.json | 1 + .../packageA/node_modules/test-deps/index.mjs | 6 +++ .../node_modules/test-deps/package.json | 1 + .../packageB/node_modules/test-deps/index.mjs | 6 +++ .../node_modules/test-deps/package.json | 1 + 7 files changed, 16 insertions(+), 51 deletions(-) create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/package.json create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/packageA/node_modules/test-deps/index.mjs create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/packageA/node_modules/test-deps/package.json create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/packageB/node_modules/test-deps/index.mjs create mode 100644 packages/rspack-cli/tests/build/config/moonrepo/packageB/node_modules/test-deps/package.json diff --git a/.gitignore b/.gitignore index bdb4f4aff2a..7c384429e76 100644 --- a/.gitignore +++ b/.gitignore @@ -60,6 +60,7 @@ node_modules/ !scripts/node_modules/ !webpack-examples/*/node_modules !webpack-test/*/**/node_modules +!packages/rspack-cli/tests/**/node_modules jspm_packages/ # Snowpack dependency directory (https://snowpack.dev/) diff --git a/packages/rspack-cli/tests/build/config/config.test.ts b/packages/rspack-cli/tests/build/config/config.test.ts index 13620e6625f..571e27c0d91 100644 --- a/packages/rspack-cli/tests/build/config/config.test.ts +++ b/packages/rspack-cli/tests/build/config/config.test.ts @@ -123,57 +123,6 @@ describe("rspack cli", () => { describe("should load moonrepo config", () => { const cwd = resolve(__dirname, "./moonrepo"); - - const packageJsonPath = resolve(cwd, "./package.json"); - const packageADepsNodeModules = resolve( - cwd, - "./packageA/node_modules/test-deps" - ); - const packageBDepsNodeModules = resolve( - cwd, - "./packageB/node_modules/test-deps" - ); - - beforeAll(() => { - // mock user's package.json type is module - writeFileSync(packageJsonPath, `{"type": "module"}`); - // mock packageA - mkdirSync(packageADepsNodeModules, { recursive: true }); - writeFileSync( - join(packageADepsNodeModules, "./package.json"), - `{ "version": "1.0.0", "name" : "test-deps", "main" : "./index.mjs" }` - ); - writeFileSync( - join(packageADepsNodeModules, "./index.mjs"), - ` - import { readFileSync } from "node:fs"; - import { join } from "node:path"; - export default JSON.parse(readFileSync(join("${packageADepsNodeModules}", "./package.json"))); - ` - ); - - // mock packageB - mkdirSync(packageBDepsNodeModules, { recursive: true }); - writeFileSync( - join(packageBDepsNodeModules, "./package.json"), - `{ "version": "2.0.0", "name" : "test-deps", "main" : "./index.mjs" }` - ); - writeFileSync( - join(packageBDepsNodeModules, "./index.mjs"), - ` - import { readFileSync } from "node:fs"; - import { join } from "node:path"; - export default JSON.parse(readFileSync(join("${packageBDepsNodeModules}", "./package.json"))); - ` - ); - }); - - afterAll(() => { - unlinkSync(packageJsonPath); - rm(packageADepsNodeModules, { recursive: true, force: true }); - rm(packageBDepsNodeModules, { recursive: true, force: true }); - }); - it("should load moonrepo config.ts file", async () => { const { exitCode, stderr, stdout } = await run( cwd, diff --git a/packages/rspack-cli/tests/build/config/moonrepo/package.json b/packages/rspack-cli/tests/build/config/moonrepo/package.json new file mode 100644 index 00000000000..1632c2c4df6 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/package.json @@ -0,0 +1 @@ +{"type": "module"} \ No newline at end of file diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageA/node_modules/test-deps/index.mjs b/packages/rspack-cli/tests/build/config/moonrepo/packageA/node_modules/test-deps/index.mjs new file mode 100644 index 00000000000..cf2a567706f --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageA/node_modules/test-deps/index.mjs @@ -0,0 +1,6 @@ + + import { readFileSync } from "node:fs"; + import { join } from "node:path"; + const pkgPath = new URL('./package.json', import.meta.url); + export default JSON.parse(readFileSync(pkgPath)); + \ No newline at end of file diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageA/node_modules/test-deps/package.json b/packages/rspack-cli/tests/build/config/moonrepo/packageA/node_modules/test-deps/package.json new file mode 100644 index 00000000000..1db16dc641c --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageA/node_modules/test-deps/package.json @@ -0,0 +1 @@ +{ "version": "1.0.0", "name" : "test-deps", "main" : "./index.mjs" } \ No newline at end of file diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageB/node_modules/test-deps/index.mjs b/packages/rspack-cli/tests/build/config/moonrepo/packageB/node_modules/test-deps/index.mjs new file mode 100644 index 00000000000..cf2a567706f --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageB/node_modules/test-deps/index.mjs @@ -0,0 +1,6 @@ + + import { readFileSync } from "node:fs"; + import { join } from "node:path"; + const pkgPath = new URL('./package.json', import.meta.url); + export default JSON.parse(readFileSync(pkgPath)); + \ No newline at end of file diff --git a/packages/rspack-cli/tests/build/config/moonrepo/packageB/node_modules/test-deps/package.json b/packages/rspack-cli/tests/build/config/moonrepo/packageB/node_modules/test-deps/package.json new file mode 100644 index 00000000000..ba71d6321fc --- /dev/null +++ b/packages/rspack-cli/tests/build/config/moonrepo/packageB/node_modules/test-deps/package.json @@ -0,0 +1 @@ +{ "version": "2.0.0", "name" : "test-deps", "main" : "./index.mjs" } \ No newline at end of file From bd53ec4788d3f045392759d8e7d8572495dc213e Mon Sep 17 00:00:00 2001 From: "yangjian.fe" Date: Fri, 23 Jun 2023 11:02:50 +0800 Subject: [PATCH 13/13] chore: support export default in ts config --- packages/rspack-cli/src/utils/crossImport.ts | 7 ++++++- .../build/config/cjs/rspack.config.export.ts | 11 +++++++++++ .../tests/build/config/cjs/rspack.config.ts | 2 +- .../tests/build/config/config.test.ts | 19 ++++++++++++------- .../tests/build/config/esm/package.json | 3 +++ 5 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 packages/rspack-cli/tests/build/config/cjs/rspack.config.export.ts create mode 100644 packages/rspack-cli/tests/build/config/esm/package.json diff --git a/packages/rspack-cli/src/utils/crossImport.ts b/packages/rspack-cli/src/utils/crossImport.ts index 4989699c914..dcd63b72766 100644 --- a/packages/rspack-cli/src/utils/crossImport.ts +++ b/packages/rspack-cli/src/utils/crossImport.ts @@ -15,7 +15,12 @@ const crossImport = async ( const { default: config } = await dynamicImport(url); return config; } else { - return require(path); + let result = require(path); + // compatible with export default config in common ts config + if (result && typeof result === "object" && "default" in result) { + result = result.default || {}; + } + return result; } }; diff --git a/packages/rspack-cli/tests/build/config/cjs/rspack.config.export.ts b/packages/rspack-cli/tests/build/config/cjs/rspack.config.export.ts new file mode 100644 index 00000000000..04cba5bdc95 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/cjs/rspack.config.export.ts @@ -0,0 +1,11 @@ +const path = require("path"); + +// @ts-ignore +export = { + mode: "production", + entry: path.resolve(__dirname, "main.ts"), + output: { + path: path.resolve(__dirname, "dist"), + filename: "ts.bundle.js" + } +}; diff --git a/packages/rspack-cli/tests/build/config/cjs/rspack.config.ts b/packages/rspack-cli/tests/build/config/cjs/rspack.config.ts index e6d08057fa9..a902bb2a000 100644 --- a/packages/rspack-cli/tests/build/config/cjs/rspack.config.ts +++ b/packages/rspack-cli/tests/build/config/cjs/rspack.config.ts @@ -1,6 +1,6 @@ const path = require("path"); -module.exports = { +export default { mode: "production", entry: path.resolve(__dirname, "main.ts"), output: { diff --git a/packages/rspack-cli/tests/build/config/config.test.ts b/packages/rspack-cli/tests/build/config/config.test.ts index 571e27c0d91..2eb5ed509d4 100644 --- a/packages/rspack-cli/tests/build/config/config.test.ts +++ b/packages/rspack-cli/tests/build/config/config.test.ts @@ -36,6 +36,18 @@ describe("rspack cli", () => { readFile(resolve(cwd, "./dist/ts.bundle.js"), { encoding: "utf-8" }) ).resolves.toMatch(/Main cjs file/); }); + it("should load config.export.ts file", async () => { + const { exitCode, stderr, stdout } = await run(cwd, [ + "-c", + "rspack.config.export.ts" + ]); + expect(stderr).toBeFalsy(); + expect(stdout).toBeTruthy(); + expect(exitCode).toBe(0); + expect( + readFile(resolve(cwd, "./dist/ts.bundle.js"), { encoding: "utf-8" }) + ).resolves.toMatch(/Main cjs file/); + }); it("should load config.cjs file", async () => { const { exitCode, stderr, stdout } = await run(cwd, [ @@ -67,13 +79,6 @@ describe("rspack cli", () => { describe("should load esm config", () => { const cwd = resolve(__dirname, "./esm"); - const packageJsonPath = resolve(cwd, "./package.json"); - beforeAll(() => { - // mock user's package.json type is module - writeFileSync(packageJsonPath, `{"type": "module"}`); - }); - afterAll(() => unlinkSync(packageJsonPath)); - it("should load default config.js file", async () => { const { exitCode, stderr, stdout } = await run(cwd, []); expect(stderr).toBeFalsy(); diff --git a/packages/rspack-cli/tests/build/config/esm/package.json b/packages/rspack-cli/tests/build/config/esm/package.json new file mode 100644 index 00000000000..aead43de364 --- /dev/null +++ b/packages/rspack-cli/tests/build/config/esm/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file