Skip to content

Commit ded9fc0

Browse files
h-a-n-achenjiahan
andauthored
feat: mark @rspack/tracing as peer dependency (#9008)
* feat: mark `@rspack/tracing` as peer dependency * Update packages/rspack/src/exports.ts Co-authored-by: neverland <[email protected]> * chore: update --------- Co-authored-by: neverland <[email protected]>
1 parent 4b50686 commit ded9fc0

File tree

6 files changed

+64
-31
lines changed

6 files changed

+64
-31
lines changed

packages/rspack-cli/package.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
"dependencies": {
3636
"@discoveryjs/json-ext": "^0.5.7",
3737
"@rspack/dev-server": "1.0.10",
38-
"@rspack/tracing": "workspace:*",
3938
"colorette": "2.0.19",
4039
"exit-hook": "^4.0.0",
4140
"interpret": "^3.1.1",
@@ -46,6 +45,7 @@
4645
"devDependencies": {
4746
"@rslib/core": "0.2.2",
4847
"@rspack/core": "workspace:*",
48+
"@rspack/tracing": "workspace:*",
4949
"@types/interpret": "^1.1.3",
5050
"@types/rechoir": "^0.6.1",
5151
"@types/webpack-bundle-analyzer": "^4.6.0",
@@ -57,7 +57,13 @@
5757
"typescript": "^5.7.2"
5858
},
5959
"peerDependencies": {
60-
"@rspack/core": "^1.0.0-alpha || ^1.x"
60+
"@rspack/core": "^1.0.0-alpha || ^1.x",
61+
"@rspack/tracing": "^1.x"
62+
},
63+
"peerDependenciesMeta": {
64+
"@rspack/tracing": {
65+
"optional": true
66+
}
6167
},
6268
"publishConfig": {
6369
"access": "public",

packages/rspack-tracing/package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
{
22
"name": "@rspack/tracing",
3-
"version": "1.0.12",
4-
"private": true,
3+
"version": "1.2.0-beta.0",
54
"type": "module",
65
"description": "Internal tracing package for rspack",
76
"homepage": "https://rspack.dev",
@@ -11,6 +10,10 @@
1110
"url": "https://github.com/web-infra-dev/rspack",
1211
"directory": "packages/rspack-tracing"
1312
},
13+
"publishConfig": {
14+
"access": "public",
15+
"provenance": true
16+
},
1417
"license": "MIT",
1518
"main": "./index.js",
1619
"types": "./index.d.ts",

packages/rspack/package.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,21 +68,25 @@
6868
"webpack-dev-server": "5.0.4",
6969
"webpack-sources": "3.2.3",
7070
"zod": "^3.23.8",
71-
"zod-validation-error": "3.4.0"
71+
"zod-validation-error": "3.4.0",
72+
"@rspack/tracing": "workspace:*"
7273
},
7374
"dependencies": {
7475
"@module-federation/runtime-tools": "0.8.4",
7576
"@rspack/binding": "workspace:*",
76-
"@rspack/tracing": "workspace:*",
7777
"@rspack/lite-tapable": "1.0.1",
7878
"caniuse-lite": "^1.0.30001616"
7979
},
8080
"peerDependencies": {
81-
"@swc/helpers": ">=0.5.1"
81+
"@swc/helpers": ">=0.5.1",
82+
"@rspack/tracing": "^1.x"
8283
},
8384
"peerDependenciesMeta": {
8485
"@swc/helpers": {
8586
"optional": true
87+
},
88+
"@rspack/tracing": {
89+
"optional": true
8690
}
8791
}
8892
}

packages/rspack/src/exports.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -308,14 +308,25 @@ export const experiments: Experiments = {
308308
async register(filter, layer, output) {
309309
registerGlobalTrace(filter, layer, output);
310310
if (layer === "otel") {
311-
const { initOpenTelemetry } = await import("@rspack/tracing");
312-
await initOpenTelemetry();
311+
try {
312+
const { initOpenTelemetry } = await import("@rspack/tracing");
313+
await initOpenTelemetry();
314+
} catch (error) {
315+
console.error(
316+
"Failed to import `@rspack/tracing` package. Please install `@rspack/tracing` to enable OpenTelemetry tracing.",
317+
error
318+
);
319+
}
313320
}
314321
},
315322
async cleanup() {
316323
cleanupGlobalTrace();
317-
const { shutdownOpenTelemetry } = await import("@rspack/tracing");
318-
await shutdownOpenTelemetry();
324+
try {
325+
const { shutdownOpenTelemetry } = await import("@rspack/tracing");
326+
await shutdownOpenTelemetry();
327+
} catch (error) {
328+
// ignore cleanup tracing error
329+
}
319330
}
320331
},
321332
RemoveDuplicateModulesPlugin

packages/rspack/src/loader-runner/index.ts

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -340,20 +340,29 @@ function getCurrentLoader(
340340
return null;
341341
}
342342

343+
async function tryTrace(context: JsLoaderContext) {
344+
try {
345+
const {
346+
trace,
347+
propagation,
348+
context: tracingContext
349+
} = await import("@rspack/tracing");
350+
const tracer = trace.getTracer("rspack-loader-runner");
351+
const activeContext = propagation.extract(
352+
tracingContext.active(),
353+
context.__internal__tracingCarrier
354+
);
355+
return { tracer, activeContext };
356+
} catch (error) {
357+
return { tracer: null, activeContext: null };
358+
}
359+
}
360+
343361
export async function runLoaders(
344362
compiler: Compiler,
345363
context: JsLoaderContext
346364
): Promise<JsLoaderContext> {
347-
const {
348-
trace,
349-
propagation,
350-
context: tracingContext
351-
} = await import("@rspack/tracing");
352-
const tracer = trace.getTracer("rspack-loader-runner");
353-
const activeContext = propagation.extract(
354-
tracingContext.active(),
355-
context.__internal__tracingCarrier
356-
);
365+
const { tracer, activeContext } = await tryTrace(context);
357366

358367
const loaderState = context.loaderState;
359368

@@ -822,7 +831,7 @@ export async function runLoaders(
822831
currentLoaderObject.pitchExecuted = true;
823832
if (!fn) continue;
824833

825-
const span = tracer.startSpan(
834+
const span = tracer?.startSpan(
826835
"LoaderRunner:pitch",
827836
{
828837
attributes: {
@@ -837,7 +846,7 @@ export async function runLoaders(
837846
loaderContext.previousRequest,
838847
currentLoaderObject.data
839848
])) || [];
840-
span.end();
849+
span?.end();
841850

842851
const hasArg = args.some(value => value !== undefined);
843852

@@ -874,7 +883,7 @@ export async function runLoaders(
874883
const args = [content, sourceMap, additionalData];
875884
convertArgs(args, !!currentLoaderObject.raw);
876885

877-
const span = tracer.startSpan(
886+
const span = tracer?.startSpan(
878887
"LoaderRunner:normal",
879888
{
880889
attributes: {
@@ -885,7 +894,7 @@ export async function runLoaders(
885894
);
886895
[content, sourceMap, additionalData] =
887896
(await runSyncOrAsync(fn, loaderContext, args)) || [];
888-
span.end();
897+
span?.end();
889898
}
890899

891900
context.content = isNil(content) ? null : toBuffer(content);

pnpm-lock.yaml

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)