Skip to content

Commit

Permalink
fix(vite-plugin-angular): use esbuild to postprocess sourcemaps durin…
Browse files Browse the repository at this point in the history
…g testing (#1399)
  • Loading branch information
brandonroberts authored Oct 12, 2024
1 parent 7afc9bd commit bdf8cee
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 3 deletions.
4 changes: 2 additions & 2 deletions packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import {
createJitResourceTransformer,
SourceFileCache,
} from './utils/devkit.js';
import { angularVitestPlugin } from './angular-vitest-plugin.js';
import { angularVitestPlugins } from './angular-vitest-plugin.js';
import { angularStorybookPlugin } from './angular-storybook-plugin.js';

const require = createRequire(import.meta.url);
Expand Down Expand Up @@ -409,7 +409,7 @@ export function angular(options?: PluginOptions): Plugin[] {

return [
angularPlugin(),
(isTest && !isStackBlitz && angularVitestPlugin()) as Plugin,
...(isTest && !isStackBlitz ? angularVitestPlugins() : []),
(jit &&
jitPlugin({
inlineStylesExtension: pluginOptions.inlineStylesExtension,
Expand Down
46 changes: 45 additions & 1 deletion packages/vite-plugin-angular/src/lib/angular-vitest-plugin.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Plugin, transformWithEsbuild } from 'vite';
import { Plugin, transformWithEsbuild, UserConfig } from 'vite';

export function angularVitestPlugin(): Plugin {
return {
Expand Down Expand Up @@ -46,3 +46,47 @@ export function angularVitestPlugin(): Plugin {
},
};
}

/**
* This eagerly disables esbuild so Vitest
* disables it when its internal plugin
* is configured.
*/
export function angularVitestEsbuildPlugin(): Plugin {
return {
name: '@analogjs/vitest-angular-esbuild-plugin',
enforce: 'pre',
config(userConfig: UserConfig) {
return {
esbuild: userConfig.esbuild ?? false,
};
},
};
}

/**
* This plugin does post-processing with esbuild
* instead of preprocessing to re-align
* the sourcemaps so breakpoints and coverage reports
* work correctly.
*/
export function angularVitestSourcemapPlugin(): Plugin {
return {
name: '@analogjs/vitest-angular-sourcemap-plugin',
async transform(code: string, id: string) {
const result = await transformWithEsbuild(code, id, {
loader: 'js',
});

return result;
},
};
}

export function angularVitestPlugins() {
return [
angularVitestPlugin(),
angularVitestEsbuildPlugin(),
angularVitestSourcemapPlugin(),
];
}

0 comments on commit bdf8cee

Please sign in to comment.