Skip to content

Commit 988d8e7

Browse files
authored
fix(nuxt): Add nuxt-module-builder for build output (#13183)
Reverting the change in this PR: #13138 For the time being (until this is debugged and fixed), this change is reverted and the Nuxt module will still be built with the nuxt-module-builder. The changed build-setup led to an error in `nuxt dev` and the navigation in the E2E test apps did not work. The error message: ``` ERROR [worker reload] [worker init] Package import specifier "#internal/nitro/virtual/app-config" is not defined in package /Users/sigridh/Documents/DEV/sentry-javascript-examples/node_modules/nitropack/package.json imported from /Users/sigridh/Documents/DEV/sentry-javascript-examples/node_modules/nitropack/dist/runtime/config.mjs ``` Similar errors were reported here: - nuxt/content#2736 - nuxt/icon#204 - nuxt/nuxt#13801
1 parent 6a61244 commit 988d8e7

File tree

9 files changed

+409
-46
lines changed

9 files changed

+409
-46
lines changed

packages/nuxt/package.json

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
}
3131
},
3232
"./module": {
33-
"types": "./build/types/module/index.d.ts",
34-
"import": "./build/esm/module/index.js",
35-
"require": "./build/cjs/module/index.js"
33+
"types": "./build/module/types.d.ts",
34+
"import": "./build/module/module.mjs",
35+
"require": "./build/module/module.cjs"
3636
}
3737
},
3838
"publishConfig": {
@@ -53,12 +53,14 @@
5353
"@sentry/vue": "8.22.0"
5454
},
5555
"devDependencies": {
56+
"@nuxt/module-builder": "0.8.1",
5657
"nuxt": "^3.12.2"
5758
},
5859
"scripts": {
5960
"build": "run-s build:types build:transpile",
6061
"build:dev": "yarn build",
61-
"build:transpile": "rollup -c rollup.npm.config.mjs",
62+
"build:nuxt-module": "nuxt-module-build build --outDir build/module",
63+
"build:transpile": "rollup -c rollup.npm.config.mjs && yarn build:nuxt-module",
6264
"build:types": "tsc -p tsconfig.types.json",
6365
"build:watch": "run-p build:transpile:watch build:types:watch",
6466
"build:dev:watch": "yarn build:watch",
@@ -88,8 +90,7 @@
8890
"outputs": [
8991
"{projectRoot}/build/cjs",
9092
"{projectRoot}/build/esm",
91-
"{projectRoot}/build/cjs/module",
92-
"{projectRoot}/build/esm/module"
93+
"{projectRoot}/build/module"
9394
]
9495
}
9596
}

packages/nuxt/rollup.npm.config.mjs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,27 @@ export default [
88
'src/index.client.ts',
99
'src/client/index.ts',
1010
'src/server/index.ts',
11-
'src/module/index.ts',
11+
'src/module.ts',
1212
],
1313
packageSpecificConfig: {
1414
external: ['nuxt/app'],
1515
},
1616
}),
1717
),
18+
/* The Nuxt module plugins are also built with the @nuxt/module-builder.
19+
This rollup setup is still left here for an easier switch between the setups while
20+
manually testing different built outputs (module-builder vs. rollup only) */
1821
...makeNPMConfigVariants(
1922
makeBaseNPMConfig({
20-
entrypoints: ['src/module/plugins/sentry.client.ts', 'src/module/plugins/sentry.server.ts'],
23+
entrypoints: ['src/runtime/plugins/sentry.client.ts', 'src/runtime/plugins/sentry.server.ts'],
2124

2225
packageSpecificConfig: {
2326
external: ['nuxt/app', 'nitropack/runtime', 'h3'],
2427
output: {
2528
// Preserve the original file structure (i.e., so that everything is still relative to `src`)
26-
entryFileNames: 'module/[name].js',
29+
entryFileNames: 'runtime/[name].js',
2730
},
2831
},
2932
}),
3033
),
3134
];
32-
33-
/*
34-
35-
*/

packages/nuxt/src/module/index.ts renamed to packages/nuxt/src/module.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import * as fs from 'fs';
22
import * as path from 'path';
33
import { addPlugin, addPluginTemplate, addServerPlugin, createResolver, defineNuxtModule } from '@nuxt/kit';
4-
import type { SentryNuxtModuleOptions } from '../common/types';
5-
import { setupSourceMaps } from '../vite/sourceMaps';
4+
import type { SentryNuxtModuleOptions } from './common/types';
5+
import { setupSourceMaps } from './vite/sourceMaps';
66

77
export type ModuleOptions = SentryNuxtModuleOptions;
88

@@ -31,7 +31,7 @@ export default defineNuxtModule<ModuleOptions>({
3131
'export default defineNuxtPlugin(() => {})',
3232
});
3333

34-
addPlugin({ src: moduleDirResolver.resolve('./plugins/sentry.client'), mode: 'client' });
34+
addPlugin({ src: moduleDirResolver.resolve('./runtime/plugins/sentry.client'), mode: 'client' });
3535
}
3636

3737
const serverConfigFile = findDefaultSdkInitFile('server');
@@ -46,7 +46,7 @@ export default defineNuxtModule<ModuleOptions>({
4646
'export default defineNuxtPlugin(() => {})',
4747
});
4848

49-
addServerPlugin(moduleDirResolver.resolve('./plugins/sentry.server'));
49+
addServerPlugin(moduleDirResolver.resolve('./runtime/plugins/sentry.server'));
5050
}
5151

5252
if (clientConfigFile || serverConfigFile) {

packages/nuxt/test/client/runtime/utils.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { describe, expect, it } from 'vitest';
2-
import { extractErrorContext } from '../../../src/module/utils';
2+
import { extractErrorContext } from '../../../src/runtime/utils';
33

44
describe('extractErrorContext', () => {
55
it('returns empty object for undefined or empty context', () => {

packages/nuxt/test/server/runtime/plugin.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { afterEach, describe, expect, it, vi } from 'vitest';
2-
import { addSentryTracingMetaTags } from '../../../src/module/utils';
2+
import { addSentryTracingMetaTags } from '../../../src/runtime/utils';
33

44
const mockReturns = vi.hoisted(() => {
55
return {

yarn.lock

Lines changed: 390 additions & 27 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)