analogjs / analog

The fullstack meta-framework for Angular. Powered by Vite and Nitro
https://analogjs.org
MIT License
2.58k stars 247 forks source link

Feature: add configuration to allow custom TypeScript transformers to be added. #210

Closed brandonroberts closed 1 year ago

brandonroberts commented 1 year ago

Which scope/s are relevant/related to the feature request?

vite-plugin-angular

Information

Because Angular wraps the TypeScript compiler, being able to transform source code is usually done through transformers. One example is replacing the bootstrapping call in the main.ts. This feature would add a configuration option to allow custom transformers to be included before Angular compilation starts.

Existing transformers are here: https://github.com/analogjs/analog/blob/main/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts#L446

Proposed:

import { defineConfig } from 'vite';
import analog from '@analogjs/platform';

// https://vitejs.dev/config/
export default defineConfig(() => {
  return {
    plugins: [
      analog({
        advanced: {
          tsTransformers: [customTransformer]
        }
      })
    ]
  };
});

Provided transformers would be added to the before array.

Describe any alternatives/workarounds you're currently using

No response

I would be willing to submit a PR to fix this issue

marcus-sa commented 1 year ago

+1, would be great to use Deepkit runtime types with Analog

brandonroberts commented 1 year ago

@marcus-sa how would this enable that?

marcus-sa commented 1 year ago

@marcus-sa how would this enable that?

Deepkit needs a custom transformer for it to work. https://docs.deepkit.io/deepkit-book-english.html under section 2.1.x

ch1ffa commented 1 year ago

Then, I think, we need to change interface a tad as Deepkit requires afterDeclaration transformer

marcus-sa commented 1 year ago

Then, I think, we need to change interface a tad as Deepkit requires afterDeclaration transformer

Yeah the API for custom transformers needs to be a bit more flexible.