Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: handle add and unlink file in bundleless mode #642

Merged
merged 1 commit into from
Jan 6, 2025
Merged

Conversation

fi3ework
Copy link
Member

@fi3ework fi3ework commented Jan 4, 2025

Summary

Previously, the entry in bundleless mode is set during the initial build and does not change during the rslib build --watch phase. For example, a newly added file will not be monitored, while a file that was included initially will trigger an error (entry module not found) if it is deleted later.

In this PR, we use two combined functionality to resolve the issue:

  1. Dynamic entry (https://rspack.dev/config/entry#dynamic-entry): a callback that will revoked when watch build is triggered every time that give us a chance to re-scan the entires.
  2. compilation.contextDependencies: an extra directory to watch and trigger watch build (e.g. used in https://github.com/soda-x/extra-watch-webpack-plugin)

Limitation:

  • compilation.contextDependencies will be resolved at the very beginning by LCP path, it won't be changed anymore.

Related Links

Checklist

  • Tests updated (or not required).
  • Documentation updated (or not required).

@fi3ework fi3ework force-pushed the watch-add branch 2 times, most recently from fb8be63 to 3c6d306 Compare January 6, 2025 03:53
Copy link

netlify bot commented Jan 6, 2025

Deploy Preview for rslib ready!

Name Link
🔨 Latest commit fa02ad0
🔍 Latest deploy log https://app.netlify.com/sites/rslib/deploys/677b81da2ae2fb0008d67b29
😎 Deploy Preview https://deploy-preview-642--rslib.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@fi3ework fi3ework marked this pull request as ready for review January 6, 2025 03:56

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot reviewed 5 out of 9 changed files in this pull request and generated no comments.

Files not reviewed (4)
  • packages/core/tests/snapshots/config.test.ts.snap: Language not supported
  • tests/integration/directive/index.test.ts: Evaluated as low risk
  • tests/integration/cli/build-watch/src/index.ts: Evaluated as low risk
  • tests/integration/directive/react/bundleless/rslib.config.ts: Evaluated as low risk
Comments suppressed due to low confidence (4)

tests/scripts/helper.ts:110

  • The error message should be 'awaitFileChanges failed: ${file}' to reflect the actual function name.
throw new Error(`awaitFileExists failed: ${file}`);

packages/core/src/config.ts:921

  • [nitpick] The function name globScanEntries could be more descriptive. Consider renaming it to scanGlobEntries.
const globScanEntries = async (calcLcp: boolean) => {

packages/core/src/config.ts:990

  • [nitpick] The variable name lcp is ambiguous. It should be renamed to longestCommonPath.
const lcp = await calcLongestCommonPath(Object.values(resolvedEntries));

packages/core/src/config.ts:110

  • The error message awaitFileExists failed is unclear. It should be updated to File existence check failed for: ${file}.
throw new Error(`awaitFileExists failed: ${file}`);
@Timeless0911 Timeless0911 merged commit 60f4f93 into main Jan 6, 2025
16 checks passed
@Timeless0911 Timeless0911 deleted the watch-add branch January 6, 2025 07:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants