Skip to content

Commit 1e6dba7

Browse files
committed
fix(dev): address review feedback
1 parent 45ba3f9 commit 1e6dba7

File tree

4 files changed

+75
-15
lines changed

4 files changed

+75
-15
lines changed

packages/prompts/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
"fast-string-width": "^1.1.0",
3636
"fast-wrap-ansi": "^0.1.3",
3737
"is-unicode-supported": "^1.3.0",
38-
"rolldown": "workspace:*",
3938
"tsdown": "catalog:"
4039
}
4140
}

packages/tools/src/local-cli.ts

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,18 @@ const localVpPath = path.join(repoRoot, 'target', 'debug', isWindows ? 'vp.exe'
1313
const localVpBinDir = path.dirname(localVpPath);
1414
const viteRepoDir = path.join(repoRoot, 'vite');
1515
const legacyViteRepoDir = path.join(repoRoot, 'rolldown-vite');
16-
const rolldownSrcDir = path.join(repoRoot, 'rolldown', 'packages', 'rolldown', 'src');
16+
const rolldownRepoDir = path.join(repoRoot, 'rolldown');
17+
const rolldownPackageDir = path.join(rolldownRepoDir, 'packages', 'rolldown');
18+
const rolldownPackageJsonPath = path.join(rolldownPackageDir, 'package.json');
19+
const rolldownSrcDir = path.join(rolldownPackageDir, 'src');
1720
const toolBinPath = path.join(path.dirname(fileURLToPath(import.meta.url)), 'bin.js');
1821
const buildHint = 'pnpm build:cli';
1922
const bootstrapHint = 'pnpm bootstrap:dev';
2023
const installHint = 'pnpm install:dev';
2124
const pnpmExecPath = process.env.npm_execpath;
2225
const pnpmBin = isWindows ? 'pnpm.cmd' : 'pnpm';
2326
const cargoBin = isWindows ? 'cargo.exe' : 'cargo';
24-
const requireFromRolldown = createRequire(
25-
path.join(repoRoot, 'rolldown', 'packages', 'rolldown', 'package.json'),
26-
);
27+
const requireFromRolldown = createRequire(rolldownPackageJsonPath);
2728

2829
type CommandOptions = {
2930
cwd?: string;
@@ -191,6 +192,22 @@ function ensureBuildWorkspaceReady() {
191192
}
192193
process.exit(1);
193194
}
195+
196+
if (!existsSync(rolldownRepoDir)) {
197+
console.error(`Missing local rolldown checkout: ${rolldownRepoDir}`);
198+
console.error(
199+
`Run "${installHint}" to fetch the local upstream checkouts, or "${bootstrapHint}" to prepare and build the local CLI.`,
200+
);
201+
process.exit(1);
202+
}
203+
204+
if (!existsSync(rolldownPackageJsonPath) || !existsSync(rolldownSrcDir)) {
205+
console.error(`Incomplete local rolldown checkout: ${rolldownPackageDir}`);
206+
console.error(
207+
`Run "${installHint}" to fetch the local upstream checkouts, or "${bootstrapHint}" to prepare and build the local CLI.`,
208+
);
209+
process.exit(1);
210+
}
194211
}
195212

196213
function runCommand(step: string, command: string, args: string[], options: CommandOptions = {}) {

pnpm-lock.yaml

Lines changed: 0 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/setup-local-dev.mjs

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'
1010
const gitBin = isWindows ? 'git.exe' : 'git';
1111
const pnpmBin = isWindows ? 'pnpm.cmd' : 'pnpm';
1212
const pnpmLockfilePath = path.join(repoRoot, 'pnpm-lock.yaml');
13+
const rolldownPackageJsonRelativePath = 'packages/rolldown/package.json';
1314
const upstreamVersions = JSON.parse(
1415
readFileSync(path.join(repoRoot, 'packages', 'tools', '.upstream-versions.json'), 'utf-8'),
1516
);
@@ -59,6 +60,14 @@ function capture(command, args, cwd) {
5960
}).stdout.trim();
6061
}
6162

63+
function stringifyJson(value) {
64+
return JSON.stringify(value, null, 2) + '\n';
65+
}
66+
67+
function rolldownPackageJsonPath(rootDir = repoRoot) {
68+
return path.join(rootDir, rolldownPackageJsonRelativePath);
69+
}
70+
6271
function isGitRepo(dir) {
6372
const result = spawnSync(gitBin, ['rev-parse', '--git-dir'], {
6473
cwd: dir,
@@ -140,14 +149,12 @@ function rolldownBindingCandidates() {
140149
}
141150
}
142151

143-
function ensureRolldownHostBindings() {
152+
function withRolldownHostBindings(pkg) {
144153
const candidates = rolldownBindingCandidates();
145154
if (candidates.length === 0) {
146-
return;
155+
return { changed: false, pkg };
147156
}
148157

149-
const packageJsonPath = path.join(repoRoot, 'rolldown', 'packages', 'rolldown', 'package.json');
150-
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
151158
const optionalDependencies = {
152159
...(pkg.optionalDependencies ?? {}),
153160
};
@@ -160,15 +167,50 @@ function ensureRolldownHostBindings() {
160167
}
161168
}
162169

170+
if (!changed) {
171+
return { changed: false, pkg };
172+
}
173+
174+
return {
175+
changed: true,
176+
pkg: {
177+
...pkg,
178+
optionalDependencies,
179+
},
180+
};
181+
}
182+
183+
function ensureRolldownHostBindings() {
184+
const packageJsonPath = rolldownPackageJsonPath();
185+
const { changed, pkg } = withRolldownHostBindings(
186+
JSON.parse(readFileSync(packageJsonPath, 'utf-8')),
187+
);
163188
if (!changed) {
164189
return;
165190
}
166191

167-
pkg.optionalDependencies = optionalDependencies;
168-
writeFileSync(packageJsonPath, JSON.stringify(pkg, null, 2) + '\n', 'utf-8');
192+
writeFileSync(packageJsonPath, stringifyJson(pkg), 'utf-8');
169193
log(`Added host rolldown bindings to ${packageJsonPath}`);
170194
}
171195

196+
function hasOnlyManagedRolldownBindingsChange(dir) {
197+
const statusEntries = capture(gitBin, ['status', '--porcelain'], dir)
198+
.split('\n')
199+
.filter(Boolean);
200+
if (statusEntries.length !== 1 || statusEntries[0].slice(3) !== rolldownPackageJsonRelativePath) {
201+
return false;
202+
}
203+
204+
const { changed, pkg } = withRolldownHostBindings(
205+
JSON.parse(capture(gitBin, ['show', `HEAD:${rolldownPackageJsonRelativePath}`], dir)),
206+
);
207+
if (!changed) {
208+
return false;
209+
}
210+
211+
return readFileSync(rolldownPackageJsonPath(dir), 'utf-8') === stringifyJson(pkg);
212+
}
213+
172214
function syncCleanCheckout(name, config) {
173215
const dir = path.join(repoRoot, name);
174216

@@ -188,10 +230,15 @@ function syncCleanCheckout(name, config) {
188230

189231
ensureExpectedRemote(name, dir, config.repo);
190232

191-
if (isDirty(dir)) {
233+
const hasManagedRolldownBindingsChange =
234+
name === 'rolldown' && isDirty(dir) && hasOnlyManagedRolldownBindingsChange(dir);
235+
if (isDirty(dir) && !hasManagedRolldownBindingsChange) {
192236
log(`Keeping existing dirty ${name} checkout at ${dir}`);
193237
return;
194238
}
239+
if (hasManagedRolldownBindingsChange) {
240+
log(`Ignoring managed rolldown host binding diff at ${dir}`);
241+
}
195242

196243
log(`Updating clean ${name} checkout...`);
197244
run(gitBin, ['fetch', 'origin', '--tags'], { cwd: dir });

0 commit comments

Comments
 (0)