mirror of
https://github.com/sinanyuntu/trade-message-center.git
synced 2026-09-17 13:22:11 +08:00
fix: clean generated dist before workspace checks
This commit is contained in:
+5
-4
@@ -7,13 +7,14 @@
|
||||
],
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "node scripts/clean-dev-dist.mjs && pnpm run version:ensure && pnpm --filter @trade-message-center/onetalk-contract build && node scripts/with-build-hash.mjs --parallel --filter @trade-message-center/server --filter @trade-message-center/chrome-extension --filter @trade-message-center/mind-http-mock --if-present run dev",
|
||||
"clean:dist": "node scripts/clean-generated-dist.mjs",
|
||||
"dev": "pnpm run clean:dist && pnpm run version:ensure && pnpm --filter @trade-message-center/onetalk-contract build && node scripts/with-build-hash.mjs --parallel --filter @trade-message-center/server --filter @trade-message-center/chrome-extension --filter @trade-message-center/mind-http-mock --if-present run dev",
|
||||
"dev:server": "pnpm --filter @trade-message-center/server run dev:watch",
|
||||
"dev:extension": "pnpm run version:ensure && node scripts/with-build-hash.mjs --filter @trade-message-center/chrome-extension run dev",
|
||||
"dev:mock": "pnpm --filter @trade-message-center/mind-http-mock run dev",
|
||||
"build": "pnpm run version:ensure && node scripts/with-build-hash.mjs --filter @trade-message-center/onetalk-contract --filter @trade-message-center/server --filter @trade-message-center/chrome-extension --if-present run build",
|
||||
"typecheck": "pnpm run version:ensure && pnpm --filter @trade-message-center/onetalk-contract --filter @trade-message-center/server --filter @trade-message-center/chrome-extension --filter @trade-message-center/mind-http-mock --if-present run typecheck",
|
||||
"test": "pnpm run version:ensure && node --test scripts/package-version.test.mjs scripts/dev-startup.test.mjs && pnpm --filter @trade-message-center/onetalk-contract --filter @trade-message-center/server --filter @trade-message-center/chrome-extension --filter @trade-message-center/mind-http-mock --if-present run test",
|
||||
"build": "pnpm run clean:dist && pnpm run version:ensure && node scripts/with-build-hash.mjs --filter @trade-message-center/onetalk-contract --filter @trade-message-center/server --filter @trade-message-center/chrome-extension --if-present run build",
|
||||
"typecheck": "pnpm run clean:dist && pnpm run version:ensure && pnpm --filter @trade-message-center/onetalk-contract --filter @trade-message-center/server --filter @trade-message-center/chrome-extension --filter @trade-message-center/mind-http-mock --if-present run typecheck",
|
||||
"test": "pnpm run clean:dist && pnpm run version:ensure && node --test scripts/package-version.test.mjs scripts/dev-startup.test.mjs && pnpm --filter @trade-message-center/onetalk-contract --filter @trade-message-center/server --filter @trade-message-center/chrome-extension --filter @trade-message-center/mind-http-mock --if-present run test",
|
||||
"format": "oxfmt",
|
||||
"format:check": "pnpm run version:ensure && oxfmt --check",
|
||||
"version:sync": "node scripts/sync-package-versions.mjs",
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
// 清理开发启动前的 package dist
|
||||
// 清理 workspace 的所有生成产物
|
||||
|
||||
import { rmSync } from "node:fs";
|
||||
import { resolve } from "node:path";
|
||||
import { fileURLToPath, pathToFileURL } from "node:url";
|
||||
|
||||
const workspaceDir = resolve(fileURLToPath(new URL(".", import.meta.url)), "..");
|
||||
export const DEV_DIST_RELATIVE_PATHS = [
|
||||
export const GENERATED_DIST_RELATIVE_PATHS = [
|
||||
"apps/onetalk-contract/dist",
|
||||
"apps/server/dist",
|
||||
"apps/chrome-extension/dist",
|
||||
"apps/mind-http-mock/dist",
|
||||
];
|
||||
|
||||
export const cleanDevDist = (rootDir = workspaceDir) => {
|
||||
for (const relativePath of DEV_DIST_RELATIVE_PATHS) {
|
||||
export const cleanGeneratedDist = (rootDir = workspaceDir) => {
|
||||
for (const relativePath of GENERATED_DIST_RELATIVE_PATHS) {
|
||||
rmSync(resolve(rootDir, relativePath), { force: true, recursive: true });
|
||||
}
|
||||
};
|
||||
@@ -21,10 +21,12 @@ export const cleanDevDist = (rootDir = workspaceDir) => {
|
||||
const entryPath = process.argv[1];
|
||||
const isMainModule = entryPath !== undefined && import.meta.url === pathToFileURL(entryPath).href;
|
||||
|
||||
/** 清理所有 workspace 包的开发生成产物。 */
|
||||
/** 清理 workspace 包的 TypeScript 与 Vite 生成产物。 */
|
||||
const run = () => {
|
||||
cleanDevDist();
|
||||
console.info(`[dev] cleaned ${DEV_DIST_RELATIVE_PATHS.length} package dist directories`);
|
||||
cleanGeneratedDist();
|
||||
console.info(
|
||||
`[workspace] cleaned ${GENERATED_DIST_RELATIVE_PATHS.length} package dist directories`,
|
||||
);
|
||||
};
|
||||
|
||||
if (isMainModule) run();
|
||||
@@ -6,7 +6,7 @@ import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import test from "node:test";
|
||||
|
||||
import { cleanDevDist, DEV_DIST_RELATIVE_PATHS } from "./clean-dev-dist.mjs";
|
||||
import { cleanGeneratedDist, GENERATED_DIST_RELATIVE_PATHS } from "./clean-generated-dist.mjs";
|
||||
|
||||
const contractBuildCommand = "pnpm --filter @trade-message-center/onetalk-contract build";
|
||||
|
||||
@@ -14,16 +14,16 @@ test("cleans only the explicit workspace package dist directories", () => {
|
||||
const rootDir = mkdtempSync(join(tmpdir(), "tmc-dev-dist-"));
|
||||
const retainedPath = join(rootDir, "retain.txt");
|
||||
try {
|
||||
for (const relativePath of DEV_DIST_RELATIVE_PATHS) {
|
||||
for (const relativePath of GENERATED_DIST_RELATIVE_PATHS) {
|
||||
const distPath = join(rootDir, relativePath);
|
||||
mkdirSync(distPath, { recursive: true });
|
||||
writeFileSync(join(distPath, "artifact.js"), "generated");
|
||||
}
|
||||
writeFileSync(retainedPath, "keep");
|
||||
|
||||
cleanDevDist(rootDir);
|
||||
cleanGeneratedDist(rootDir);
|
||||
|
||||
for (const relativePath of DEV_DIST_RELATIVE_PATHS) {
|
||||
for (const relativePath of GENERATED_DIST_RELATIVE_PATHS) {
|
||||
assert.equal(existsSync(join(rootDir, relativePath)), false);
|
||||
}
|
||||
assert.equal(existsSync(retainedPath), true);
|
||||
@@ -39,7 +39,7 @@ test("builds the shared contract before starting parallel development apps", asy
|
||||
});
|
||||
const rootDev = rootPackage.default.scripts.dev;
|
||||
|
||||
assert.match(rootDev, /^node scripts\/clean-dev-dist\.mjs && /u);
|
||||
assert.match(rootDev, /^pnpm run clean:dist && /u);
|
||||
assert.match(rootDev, /&& pnpm run version:ensure && /u);
|
||||
assert.match(
|
||||
rootDev,
|
||||
|
||||
@@ -70,8 +70,11 @@ test("syncs version mirrors before root quality commands check them", () => {
|
||||
const { scripts } = packageJson;
|
||||
|
||||
assert.equal(scripts["version:ensure"], "pnpm run version:sync && pnpm run version:check");
|
||||
for (const scriptName of ["dev:extension", "build", "typecheck", "test", "format:check"]) {
|
||||
for (const scriptName of ["dev:extension", "format:check"]) {
|
||||
assert.match(scripts[scriptName], /^pnpm run version:ensure && /u);
|
||||
}
|
||||
assert.match(scripts.dev, /^node scripts\/clean-dev-dist\.mjs && pnpm run version:ensure && /u);
|
||||
for (const scriptName of ["dev", "build", "typecheck", "test"]) {
|
||||
assert.match(scripts[scriptName], /^pnpm run clean:dist && pnpm run version:ensure && /u);
|
||||
}
|
||||
assert.equal(scripts["clean:dist"], "node scripts/clean-generated-dist.mjs");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user