Comments (5)
runtimeRequirementInTree
hook is complex and it's not supported yet, your plugin may could be implemented using other hooks,can you tell us what functionality do your plugin implement?
from rspack.
@hardfist sorry I lost track of this
I'm not entirely sure as all this infra predates my tenure at Canva - I'm just looking to make things faster!
It looks like the plugin (called RtlCssPlugin
) uses rtlcss
to create two versions of every .css
file - a <file>.ltr.css
and a <file>.rtl.css
The usage of that specific hook is:
compiler.hooks.thisCompliation.tap(RtlCssPlugin.name, compliation => {
const enabledChukns = new WeakSet();
const addRtlCssRuntime = (chunk: Chunk) => {
if (enabledChunks.has(chunk)) {
return;
}
enabledChunks.add(chunk);
compilation.addRuntimeModule(chunk, new RtlCssLoadingRuntimeModule());
compilation.addRuntimeModule(chunk, new GetChunkFilenameRuntimeModule( ... ));
};
compilation.hooks.runtimeRequirementInTree
.for(RuntimeGlobals.ensureChunkHandlers)
.tap(RtlCssPlugin.name, addRtlCssRuntime);
compilation.hooks.runtimeRequirementInTree
.for(RuntimeGlobals.hmrDownloadUpdateHandlers)
.tap(RtlCssPlugin.name, addRtlCssRuntime);
});
where RtlCssLoadingRuntimeModule
essentially defines a small module which sets a global variable.
If there's a better way to do this I'm more than happy to refactor it - I just don't know enough about webpack plugins to know what the best course of action is!
from rspack.
I'm not sure whether this can be implemented by runtimeModule hooks, @LingyuCoder any ideas?
from rspack.
I'm not sure whether this can be implemented by runtimeModule hooks, @LingyuCoder any ideas?
Runtime modules use the whole compilation object to generate their contents. So the compilation.addRuntimeModule()
can not be port easily.
The compilation.runtimeModule
hook can only modify the content of module which has been exists. Perhaps you can try concatenating the content of RtlCssLoadingRuntimeModule
and GetChunkFilenameRuntimeModule
to the end of the content of EnsureChunkRuntimeModule
and CssLoadingRuntimeModule
.
from rspack.
I'm on parental leave ATM (so I'm not working on company stuff) - I'll get back to you in a few weeks once I've returned and chatted to the subject matter experts.
from rspack.
Related Issues (20)
- [Bug]: react-router-dom cannot configure nested routers of 3 levels or more HOT 2
- [Bug]: Error: Resolve error: Can't resolve './locale' , but it is a warning in webpack. HOT 1
- [Bug]: Error when adding new imports from third-party packages in dev mode HOT 1
- [Bug]: Pseudoclass ":global" not affect in classes inner ":not()" pseudoclass HOT 3
- [Bug]: ModuleFederationPlugin remote not support IE11 HOT 3
- [Bug]: dev模式下,使用css-loader之后,若在样式中写了一个错误,再修改正确也一直报错 HOT 2
- [Bug]: Incompatible types of `Chunk.files` leading to error with purgecss-webpack-plugin
- [Feature]: New functionality to support webpack plugins. And 100% transition to rspack.
- [Bug]: export is not correct when using rspack to output a library in esm HOT 6
- [Bug]: CopyRspackPlugin is not wokring HOT 1
- [Bug]: v0.7.0-beta.1 dynamic import error. HOT 5
- [Feature]: Use exclusively the asset content hash for assets filenames HOT 1
- [Bug]: incorrect file matching with `**.js` glob pattern in sideEffects
- [Bug]: CssExtractRspackPlugin will fail when exportLocalsConvention is `camel-case` HOT 1
- [Bug]: encountered Panic with recompile in watch mode. [rspack v0.7.0-beta.2 ]
- [Feature]: Support `stage` option of `BannerPlugin`
- [Feature]: Expose compilation target in loader context
- [Bug]: Incorrectly removing dead code branches of switch-case
- [Bug]: There appears to be an extra space after buildIcon in rspack.ProgressPlugin if the `prefix` option not provided
- [Bug]: hmr moduleGraph calculation issue with "providedExports": true
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rspack.