Skip to content

[Performance] Optimize directory copying by using relative paths in glob#7446

Draft
gonzaloriestra wants to merge 1 commit intomainfrom
bolt/optimize-directory-copy-relative-glob-13363153947624010045
Draft

[Performance] Optimize directory copying by using relative paths in glob#7446
gonzaloriestra wants to merge 1 commit intomainfrom
bolt/optimize-directory-copy-relative-glob-13363153947624010045

Conversation

@gonzaloriestra
Copy link
Copy Markdown
Contributor

Description

Optimized copyDirectoryContents in packages/cli-kit/src/public/node/fs.ts by using the cwd option in the glob call. This allows us to get relative paths directly from fast-glob, avoiding expensive absolute path globbing and subsequent manual string manipulation (regex and replacement) for each file.

How to test your changes?

Run the unit tests for cli-kit:
pnpm --filter @shopify/cli-kit vitest run src/public/node/fs.test.ts
All 34 tests (including 1 skipped on Linux) should pass.

Performance Impact

Reduces string manipulation overhead and avoids absolute path resolution in fast-glob when copying directories. This is particularly beneficial for large directories with many small files, which is a common scenario in CLI operations (e.g., app initialization or theme syncing).

Checklist

  • I have run pnpm lint, pnpm type-check, and pnpm test:unit.
  • I have added/updated tests for my changes.
  • I have followed the performance patterns for the project.

PR created automatically by Jules for task 13363153947624010045 started by @gonzaloriestra

By using the `cwd` option in `glob`, we get relative paths directly.
This avoids the overhead of retrieving absolute paths and then performing
manual string replacement for path normalization on every item in the directory.
This is measurably faster for directories with many files.

Also ensured `fast-glob` is dynamically imported/required within the functions
to maintain CLI startup performance.

Verified with unit tests and nx quality checks.
@google-labs-jules
Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@github-actions github-actions Bot added the no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users. label May 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant