Skip to content

Commit 1c750d3

Browse files
committed
Merge branch 'main' into module.size
2 parents 8581f63 + ce94141 commit 1c750d3

File tree

171 files changed

+3539
-1424
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

171 files changed

+3539
-1424
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,9 @@ jobs:
147147
- 'Cargo.lock'
148148
- name: Install cargo-deny
149149
if: steps.filter.outputs.src == 'true'
150-
uses: taiki-e/install-action@cargo-deny
150+
uses: taiki-e/install-action@v2
151+
with:
152+
151153
- name: Check licenses
152154
if: steps.filter.outputs.src == 'true'
153155
run: cargo deny check license

README.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,17 @@ Come chat with us on [Discord](https://discord.gg/79ZZ66GH9E)! Rspack team and R
4646

4747
## Links
4848

49-
| Name | Description |
50-
| ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
51-
| [Rspack website](https://rspack.dev) | Official documentation for Rspack |
52-
| [awesome-rspack](https://github.com/web-infra-dev/awesome-rspack) | A curated list of awesome things related to Rspack |
53-
| [rspack-examples](https://github.com/rspack-contrib/rspack-examples) | Rspack configuration examples |
54-
| [rspack-sources](https://github.com/web-infra-dev/rspack-sources) | Rust port of [webpack-sources](https://www.npmjs.com/package/webpack-sources) |
55-
| [rspack-migration-showcase](https://github.com/web-infra-dev/rspack-migration-showcase) | Migration showcases for Rspack |
56-
| [rspack-compat](https://github.com/web-infra-dev/rspack-compat) | Rspack compatible loaders and plugins examples |
57-
| [rsfamily-design-resources](https://github.com/rspack-contrib/rsfamily-design-resources) | Design resources for Rspack, Rsbuild, Rspress and Rsdoctor |
49+
| Name | Description |
50+
| ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- |
51+
| [Rspack website](https://rspack.dev) | Official documentation for Rspack |
52+
| [Rsbuild](https://github.com/web-infra-dev/rsbuild) | An Rspack-based build tool |
53+
| [Rspress](https://github.com/web-infra-dev/rspress) | A fast static site generator based on Rsbuild |
54+
| [Rsdoctor](https://github.com/web-infra-dev/rsdoctor) | A one-stop build analyzer for Rspack and webpack |
55+
| [Rslib](https://github.com/web-infra-dev/rslib) | A library build tool powered by Rsbuild |
56+
| [awesome-rspack](https://github.com/web-infra-dev/awesome-rspack) | A curated list of awesome things related to Rspack |
57+
| [rspack-examples](https://github.com/rspack-contrib/rspack-examples) | Lots of Rspack example projects |
58+
| [rspack-sources](https://github.com/web-infra-dev/rspack-sources) | Rust port of [webpack-sources](https://www.npmjs.com/package/webpack-sources) |
59+
| [rstack-design-resources](https://github.com/rspack-contrib/rstack-design-resources) | Design resources for Rstack |
5860

5961
## Contributors
6062

README.zh-CN.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,17 @@ Rspack 是一个基于 Rust 编写的高性能 JavaScript 打包工具,它提
4242

4343
## 链接
4444

45-
| 名称 | 描述 |
46-
| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
47-
| [Rspack 文档](https://rspack.dev/zh/) | Rspack 官方文档 |
48-
| [awesome-rspack](https://github.com/web-infra-dev/awesome-rspack) | 与 Rspack 相关的精彩内容列表 |
49-
| [rspack-examples](https://github.com/rspack-contrib/rspack-examples) | Rspack 配置示例 |
50-
| [rspack-sources](https://github.com/web-infra-dev/rspack-sources) | Rust 版本的 [webpack-sources](https://www.npmjs.com/package/webpack-sources) |
51-
| [rspack-migration-showcase](https://github.com/web-infra-dev/rspack-migration-showcase) | 迁移到 Rspack 的示例项目 |
52-
| [rspack-compat](https://github.com/web-infra-dev/rspack-compat) | 兼容 Rspack 的 webpack 插件 和 Loader 示例 |
53-
| [rsfamily-design-resources](https://github.com/rspack-contrib/rsfamily-design-resources) | Rspack、Rsbuild、Rspress 和 Rsdoctor 的设计资源 |
45+
| 名称 | 描述 |
46+
| ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
47+
| [Rspack 文档](https://rspack.dev/zh/) | Rspack 官方文档 |
48+
| [Rsbuild](https://github.com/web-infra-dev/rsbuild) | 基于 Rspack 的构建工具 |
49+
| [Rspress](https://github.com/web-infra-dev/rspress) | 基于 Rsbuild 的静态站点生成器 |
50+
| [Rsdoctor](https://github.com/web-infra-dev/rsdoctor) | 针对 Rspack 和 webpack 的一站式构建分析工具 |
51+
| [Rslib](https://github.com/web-infra-dev/rslib) | 基于 Rsbuild 的 library 构建工具 |
52+
| [awesome-rspack](https://github.com/web-infra-dev/awesome-rspack) | 与 Rspack 相关的精彩内容列表 |
53+
| [rspack-examples](https://github.com/rspack-contrib/rspack-examples) | 丰富的 Rspack 示例项目 |
54+
| [rspack-sources](https://github.com/web-infra-dev/rspack-sources) | Rust 版本的 [webpack-sources](https://www.npmjs.com/package/webpack-sources) |
55+
| [rstack-design-resources](https://github.com/rspack-contrib/rstack-design-resources) | Rstack 的设计资源 |
5456

5557
## 致谢
5658

biome.jsonc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
"noVoidTypeReturn": "off"
4848
},
4949
"style": {
50-
"noParameterAssign": "off",
5150
"noNonNullAssertion": "off"
5251
},
5352
"performance": {
@@ -88,4 +87,4 @@
8887
"clientKind": "git",
8988
"useIgnoreFile": true
9089
}
91-
}
90+
}

crates/node_binding/binding.d.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1700,16 +1700,17 @@ export enum RegisterJsTapKind {
17001700
CompilationChunkAsset = 20,
17011701
CompilationProcessAssets = 21,
17021702
CompilationAfterProcessAssets = 22,
1703-
CompilationAfterSeal = 23,
1704-
NormalModuleFactoryBeforeResolve = 24,
1705-
NormalModuleFactoryFactorize = 25,
1706-
NormalModuleFactoryResolve = 26,
1707-
NormalModuleFactoryAfterResolve = 27,
1708-
NormalModuleFactoryCreateModule = 28,
1709-
NormalModuleFactoryResolveForScheme = 29,
1710-
ContextModuleFactoryBeforeResolve = 30,
1711-
ContextModuleFactoryAfterResolve = 31,
1712-
JavascriptModulesChunkHash = 32
1703+
CompilationSeal = 23,
1704+
CompilationAfterSeal = 24,
1705+
NormalModuleFactoryBeforeResolve = 25,
1706+
NormalModuleFactoryFactorize = 26,
1707+
NormalModuleFactoryResolve = 27,
1708+
NormalModuleFactoryAfterResolve = 28,
1709+
NormalModuleFactoryCreateModule = 29,
1710+
NormalModuleFactoryResolveForScheme = 30,
1711+
ContextModuleFactoryBeforeResolve = 31,
1712+
ContextModuleFactoryAfterResolve = 32,
1713+
JavascriptModulesChunkHash = 33
17131714
}
17141715

17151716
export interface RegisterJsTaps {
@@ -1736,6 +1737,7 @@ export interface RegisterJsTaps {
17361737
registerCompilationChunkAssetTaps: (stages: Array<number>) => Array<{ function: ((arg: JsChunkAssetArgs) => void); stage: number; }>
17371738
registerCompilationProcessAssetsTaps: (stages: Array<number>) => Array<{ function: ((arg: JsCompilation) => Promise<void>); stage: number; }>
17381739
registerCompilationAfterProcessAssetsTaps: (stages: Array<number>) => Array<{ function: ((arg: JsCompilation) => void); stage: number; }>
1740+
registerCompilationSealTaps: (stages: Array<number>) => Array<{ function: (() => void); stage: number; }>
17391741
registerCompilationAfterSealTaps: (stages: Array<number>) => Array<{ function: (() => Promise<void>); stage: number; }>
17401742
registerNormalModuleFactoryBeforeResolveTaps: (stages: Array<number>) => Array<{ function: ((arg: JsBeforeResolveArgs) => Promise<[boolean | undefined, JsBeforeResolveArgs]>); stage: number; }>
17411743
registerNormalModuleFactoryFactorizeTaps: (stages: Array<number>) => Array<{ function: ((arg: JsFactorizeArgs) => Promise<JsFactorizeArgs>); stage: number; }>

crates/node_binding/src/plugins/interceptor.rs

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,19 @@ use rspack_core::{
3636
CompilationOptimizeChunkModulesHook, CompilationOptimizeModules, CompilationOptimizeModulesHook,
3737
CompilationOptimizeTree, CompilationOptimizeTreeHook, CompilationParams,
3838
CompilationProcessAssets, CompilationProcessAssetsHook, CompilationRuntimeModule,
39-
CompilationRuntimeModuleHook, CompilationStillValidModule, CompilationStillValidModuleHook,
40-
CompilationSucceedModule, CompilationSucceedModuleHook, CompilerAfterEmit, CompilerAfterEmitHook,
41-
CompilerAssetEmitted, CompilerAssetEmittedHook, CompilerCompilation, CompilerCompilationHook,
42-
CompilerEmit, CompilerEmitHook, CompilerFinishMake, CompilerFinishMakeHook, CompilerMake,
43-
CompilerMakeHook, CompilerShouldEmit, CompilerShouldEmitHook, CompilerThisCompilation,
44-
CompilerThisCompilationHook, ContextModuleFactoryAfterResolve,
45-
ContextModuleFactoryAfterResolveHook, ContextModuleFactoryBeforeResolve,
46-
ContextModuleFactoryBeforeResolveHook, ExecuteModuleId, ModuleFactoryCreateData,
47-
ModuleIdentifier, NormalModuleCreateData, NormalModuleFactoryAfterResolve,
48-
NormalModuleFactoryAfterResolveHook, NormalModuleFactoryBeforeResolve,
49-
NormalModuleFactoryBeforeResolveHook, NormalModuleFactoryCreateModule,
50-
NormalModuleFactoryCreateModuleHook, NormalModuleFactoryFactorize,
51-
NormalModuleFactoryFactorizeHook, NormalModuleFactoryResolve,
39+
CompilationRuntimeModuleHook, CompilationSeal, CompilationSealHook, CompilationStillValidModule,
40+
CompilationStillValidModuleHook, CompilationSucceedModule, CompilationSucceedModuleHook,
41+
CompilerAfterEmit, CompilerAfterEmitHook, CompilerAssetEmitted, CompilerAssetEmittedHook,
42+
CompilerCompilation, CompilerCompilationHook, CompilerEmit, CompilerEmitHook, CompilerFinishMake,
43+
CompilerFinishMakeHook, CompilerMake, CompilerMakeHook, CompilerShouldEmit,
44+
CompilerShouldEmitHook, CompilerThisCompilation, CompilerThisCompilationHook,
45+
ContextModuleFactoryAfterResolve, ContextModuleFactoryAfterResolveHook,
46+
ContextModuleFactoryBeforeResolve, ContextModuleFactoryBeforeResolveHook, ExecuteModuleId,
47+
ModuleFactoryCreateData, ModuleIdentifier, NormalModuleCreateData,
48+
NormalModuleFactoryAfterResolve, NormalModuleFactoryAfterResolveHook,
49+
NormalModuleFactoryBeforeResolve, NormalModuleFactoryBeforeResolveHook,
50+
NormalModuleFactoryCreateModule, NormalModuleFactoryCreateModuleHook,
51+
NormalModuleFactoryFactorize, NormalModuleFactoryFactorizeHook, NormalModuleFactoryResolve,
5252
NormalModuleFactoryResolveForScheme, NormalModuleFactoryResolveForSchemeHook,
5353
NormalModuleFactoryResolveHook, NormalModuleFactoryResolveResult, ResourceData, RuntimeGlobals,
5454
Scheme,
@@ -317,6 +317,7 @@ pub enum RegisterJsTapKind {
317317
CompilationChunkAsset,
318318
CompilationProcessAssets,
319319
CompilationAfterProcessAssets,
320+
CompilationSeal,
320321
CompilationAfterSeal,
321322
NormalModuleFactoryBeforeResolve,
322323
NormalModuleFactoryFactorize,
@@ -440,6 +441,8 @@ pub struct RegisterJsTaps {
440441
ts_type = "(stages: Array<number>) => Array<{ function: ((arg: JsCompilation) => void); stage: number; }>"
441442
)]
442443
pub register_compilation_after_process_assets_taps: RegisterFunction<JsCompilation, ()>,
444+
#[napi(ts_type = "(stages: Array<number>) => Array<{ function: (() => void); stage: number; }>")]
445+
pub register_compilation_seal_taps: RegisterFunction<(), ()>,
443446
#[napi(
444447
ts_type = "(stages: Array<number>) => Array<{ function: (() => Promise<void>); stage: number; }>"
445448
)]
@@ -681,6 +684,14 @@ define_register!(
681684
kind = RegisterJsTapKind::CompilationAfterProcessAssets,
682685
skip = true,
683686
);
687+
define_register!(
688+
RegisterCompilationSealTaps,
689+
tap = CompilationSealTap<(), ()> @ CompilationSealHook,
690+
cache = false,
691+
sync = false,
692+
kind = RegisterJsTapKind::CompilationSeal,
693+
skip = true,
694+
);
684695
define_register!(
685696
RegisterCompilationAfterSealTaps,
686697
tap = CompilationAfterSealTap<(), Promise<()>> @ CompilationAfterSealHook,
@@ -1169,6 +1180,17 @@ impl CompilationAfterProcessAssets for CompilationAfterProcessAssetsTap {
11691180
}
11701181
}
11711182

1183+
#[async_trait]
1184+
impl CompilationSeal for CompilationSealTap {
1185+
async fn run(&self, _compilation: &mut Compilation) -> rspack_error::Result<()> {
1186+
self.function.call_with_sync(()).await
1187+
}
1188+
1189+
fn stage(&self) -> i32 {
1190+
self.stage
1191+
}
1192+
}
1193+
11721194
#[async_trait]
11731195
impl CompilationAfterSeal for CompilationAfterSealTap {
11741196
async fn run(&self, _compilation: &mut Compilation) -> rspack_error::Result<()> {

crates/node_binding/src/plugins/mod.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ pub struct JsHooksAdapterPlugin {
4444
register_compilation_chunk_asset_taps: RegisterCompilationChunkAssetTaps,
4545
register_compilation_process_assets_taps: RegisterCompilationProcessAssetsTaps,
4646
register_compilation_after_process_assets_taps: RegisterCompilationAfterProcessAssetsTaps,
47+
register_compilation_seal_taps: RegisterCompilationSealTaps,
4748
register_compilation_after_seal_taps: RegisterCompilationAfterSealTaps,
4849
register_normal_module_factory_before_resolve_taps: RegisterNormalModuleFactoryBeforeResolveTaps,
4950
register_normal_module_factory_factorize_taps: RegisterNormalModuleFactoryFactorizeTaps,
@@ -203,6 +204,11 @@ impl rspack_core::Plugin for JsHooksAdapterPlugin {
203204
.compilation_hooks
204205
.after_process_assets
205206
.intercept(self.register_compilation_after_process_assets_taps.clone());
207+
ctx
208+
.context
209+
.compilation_hooks
210+
.seal
211+
.intercept(self.register_compilation_seal_taps.clone());
206212
ctx
207213
.context
208214
.compilation_hooks
@@ -399,6 +405,10 @@ impl JsHooksAdapterPlugin {
399405
register_js_taps.register_compilation_after_process_assets_taps,
400406
non_skippable_registers.clone(),
401407
),
408+
register_compilation_seal_taps: RegisterCompilationSealTaps::new(
409+
register_js_taps.register_compilation_seal_taps,
410+
non_skippable_registers.clone(),
411+
),
402412
register_compilation_after_seal_taps: RegisterCompilationAfterSealTaps::new(
403413
register_js_taps.register_compilation_after_seal_taps,
404414
non_skippable_registers.clone(),

crates/rspack_core/src/compiler/compilation.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ define_hook!(CompilationSucceedModule: AsyncSeries(module: &mut BoxModule));
5151
define_hook!(CompilationExecuteModule:
5252
SyncSeries(module: &ModuleIdentifier, runtime_modules: &IdentifierSet, codegen_results: &CodeGenerationResults, execute_module_id: &ExecuteModuleId));
5353
define_hook!(CompilationFinishModules: AsyncSeries(compilation: &mut Compilation));
54-
define_hook!(CompilationSeal: SyncSeries(compilation: &mut Compilation));
54+
define_hook!(CompilationSeal: AsyncSeries(compilation: &mut Compilation));
5555
define_hook!(CompilationOptimizeDependencies: SyncSeriesBail(compilation: &mut Compilation) -> bool);
5656
define_hook!(CompilationOptimizeModules: AsyncSeriesBail(compilation: &mut Compilation) -> bool);
5757
define_hook!(CompilationAfterOptimizeModules: AsyncSeries(compilation: &mut Compilation));
@@ -1049,7 +1049,7 @@ impl Compilation {
10491049
let logger = self.get_logger("rspack.Compilation");
10501050

10511051
// https://github.com/webpack/webpack/blob/main/lib/Compilation.js#L2809
1052-
plugin_driver.compilation_hooks.seal.call(self)?;
1052+
plugin_driver.compilation_hooks.seal.call(self).await?;
10531053

10541054
let start = logger.time("optimize dependencies");
10551055
// https://github.com/webpack/webpack/blob/d15c73469fd71cf98734685225250148b68ddc79/lib/Compilation.js#L2812-L2814

crates/rspack_core/src/options/module.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use std::{
2+
borrow::{Borrow, Cow},
23
fmt::{self, Debug},
34
sync::Arc,
45
};
@@ -541,6 +542,12 @@ impl<'s> From<&'s str> for DataRef<'s> {
541542
}
542543
}
543544

545+
impl<'s> From<&'s Cow<'_, str>> for DataRef<'s> {
546+
fn from(value: &'s Cow<'_, str>) -> Self {
547+
Self::Str(value.borrow())
548+
}
549+
}
550+
544551
impl<'s> From<&'s serde_json::Value> for DataRef<'s> {
545552
fn from(value: &'s serde_json::Value) -> Self {
546553
Self::Value(value)
@@ -565,11 +572,7 @@ impl DataRef<'_> {
565572

566573
impl RuleSetCondition {
567574
#[async_recursion]
568-
pub async fn try_match(
569-
&self,
570-
data: impl Into<DataRef<'async_recursion>> + Send + Sync + Copy + 'async_recursion,
571-
) -> Result<bool> {
572-
let data: DataRef = data.into();
575+
pub async fn try_match(&self, data: DataRef<'async_recursion>) -> Result<bool> {
573576
match self {
574577
Self::String(s) => Ok(
575578
data
@@ -594,10 +597,7 @@ pub struct RuleSetLogicalConditions {
594597

595598
impl RuleSetLogicalConditions {
596599
#[async_recursion]
597-
pub async fn try_match(
598-
&self,
599-
data: impl Into<DataRef<'async_recursion>> + Send + Sync + Copy + 'async_recursion,
600-
) -> Result<bool> {
600+
pub async fn try_match(&self, data: DataRef<'async_recursion>) -> Result<bool> {
601601
if let Some(and) = &self.and
602602
&& try_any(and, |i| async { i.try_match(data).await.map(|i| !i) }).await?
603603
{

0 commit comments

Comments
 (0)