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

[Feature]: Support for webpack-assets-manifest #8058

Open
ramon-villain opened this issue Oct 7, 2024 · 1 comment
Open

[Feature]: Support for webpack-assets-manifest #8058

ramon-villain opened this issue Oct 7, 2024 · 1 comment
Labels
feat New feature or request pending triage The issue/PR is currently untouched.

Comments

@ramon-villain
Copy link

What problem does this feature solve?

Background

Shakapacker is a popular library for handling JS bundling in Rails apps. It's the successor to rails/webpacker and uses webpack-assets-manifest as a core component. There's ongoing discussion about adding Rspack as a bundler option for Shakapacker (see issue #476), but the lack of support for webpack-assets-manifest in Rspack is a significant roadblock.

Current Progress

I've forked the original webpack-assets-manifest plugin and started adapting it for Rspack. Most of the test coverage is passing, but there are still some issues. You can see the current state of the refactor here: rspack-assets-manifest test results.

To complete the port, Rspack needs to support or provide alternatives for the following webpack features:

  1. codeGenerationResults: Used in the original plugin to gather asset information.
  2. assetsInfo: Used to store and retrieve additional information about assets.

We could either:

  1. Add similar properties or methods to Rspack's compilation object.
  2. Provide alternative APIs that serve the same purpose but fit better with Rspack's architecture.
  3. Think about workarounds or patterns to achieve the same results without these specific properties.

Benefits

  1. Enable easier migration from webpack to Rspack for projects using Shakapacker.
  2. Increase Rspack's compatibility with existing webpack ecosystems. (as the lib itself has >600k downloads/week)
  3. Potentially benefit other projects that rely on webpack-assets-manifest.

I'm willing to contribute to this feature's implementation, but I would need some direction on Rspack's internal architecture and best practices for adding these or equivalent features.

What does the proposed API of configuration look like?

.

@ramon-villain ramon-villain added feat New feature or request pending triage The issue/PR is currently untouched. labels Oct 7, 2024
@LingyuCoder
Copy link
Collaborator

You can try to use rspack-manifest-plugin instead, it is forked from webpack-manifest-plugin and seems do the same thing with webpack-assets-manifest.

The assetsInfo can be got by compilation.getAsset()[].info. If you need to override it, you can use compilation.updateAsset(), but currently it does not support custom field (the rawRequest is not supported but the sourceFilename is supported).

Seems there is no method to get the code generation data of asset modules. But the assets of these modules will always be emitted through compilation.emitAsset and can be got from compilation.getAssets(). They have sourceFilename in their infos. You can also get all modules by compilation.modules so I think you can gather asset information by combining sourceFilename and module.userRequest/rawRequest.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat New feature or request pending triage The issue/PR is currently untouched.
Projects
None yet
Development

No branches or pull requests

2 participants