Skip to content

Commit 72bd0ab

Browse files
committed
fix(@angular-devkit/build-angular): allow vite to serve JavaScript and TypeScript assets
This commit fixes an issue which caused vite to transform JavaScript and TypeScript assets. Closes #26641
1 parent 7eb412c commit 72bd0ab

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

packages/angular_devkit/build_angular/src/builders/dev-server/tests/behavior/build-assets_spec.ts

+23-1
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ import { describeServeBuilder } from '../jasmine-helpers';
1212
import { BASE_OPTIONS, DEV_SERVER_BUILDER_INFO } from '../setup';
1313

1414
describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupTarget) => {
15+
const javascriptFileContent =
16+
"import {foo} from 'unresolved'; /* a comment */const foo = `bar`;\n\n\n";
17+
1518
describe('Behavior: "browser builder assets"', () => {
1619
it('serves a project JavaScript asset unmodified', async () => {
17-
const javascriptFileContent = '/* a comment */const foo = `bar`;\n\n\n';
1820
await harness.writeFile('src/extra.js', javascriptFileContent);
1921

2022
setupTarget(harness, {
@@ -33,5 +35,25 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT
3335
expect(result?.success).toBeTrue();
3436
expect(await response?.text()).toContain(javascriptFileContent);
3537
});
38+
39+
it('serves a project TypeScript asset unmodified', async () => {
40+
await harness.writeFile('src/extra.ts', javascriptFileContent);
41+
42+
setupTarget(harness, {
43+
assets: ['src/extra.ts'],
44+
optimization: {
45+
scripts: true,
46+
},
47+
});
48+
49+
harness.useTarget('serve', {
50+
...BASE_OPTIONS,
51+
});
52+
53+
const { result, response } = await executeOnceAndFetch(harness, 'extra.ts');
54+
55+
expect(result?.success).toBeTrue();
56+
expect(await response?.text()).toContain(javascriptFileContent);
57+
});
3658
});
3759
});

packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts

+5
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,11 @@ export async function setupServer(
609609
// Rewrite all build assets to a vite raw fs URL
610610
const assetSourcePath = assets.get(pathname);
611611
if (assetSourcePath !== undefined) {
612+
// Workaround to disable Vite transformer middleware.
613+
// See: https://github.com/vitejs/vite/blob/746a1daab0395f98f0afbdee8f364cb6cf2f3b3f/packages/vite/src/node/server/middlewares/transform.ts#L201 and
614+
// https://github.com/vitejs/vite/blob/746a1daab0395f98f0afbdee8f364cb6cf2f3b3f/packages/vite/src/node/server/transformRequest.ts#L204-L206
615+
req.headers.accept = 'text/html';
616+
612617
// The encoding needs to match what happens in the vite static middleware.
613618
// ref: https://github.com/vitejs/vite/blob/d4f13bd81468961c8c926438e815ab6b1c82735e/packages/vite/src/node/server/middlewares/static.ts#L163
614619
req.url = `${server.config.base}@fs/${encodeURI(assetSourcePath)}`;

0 commit comments

Comments
 (0)