microbundle
microbundle copied to clipboard
[Feature Request] use ttypescript under the hood to enable applying TS transforms
https://www.npmjs.com/package/ttypescript
The main benefit of going with this solution is being able to specify transformer plugins in tsconfig.json
so it's an easy configuration
~~Nvm, I see you're using https://github.com/ezolenko/rollup-plugin-typescript2. Will move the FR there.~~
update: it's actually meant to be passed as a transform to rollup-plugin-typescript2
https://www.npmjs.com/package/ttypescript#rollup
First of all, thank you for opening a PR. Can you elaborate a little bit on why we want to allow typescript transformers? Why not go for a babel plugin?
I'm worried that if we swap typescript with a third party compiler, we will open up to more bugs that are not related to microbundle itself.
I actually tried using a relevant Babel plugin but it didn’t seem to work, possibly because of the order of tools? Not quite sure.
For example, I wanted to run the styled-components Babel plugin over some code but adding it to babelrc had no effect.
I would also be in favor of including ttypescript so that I can use https://www.npmjs.com/package/ts-transformer-properties-rename to rename TS properties.
@wardpeet
from https://github.com/cevek/ttypescript#what-it-is:
Instead of tsc and tsserver, use ttsc and ttsserver wrappers. This wrappers try to use locally installed typescript first.
No version lock-ins - typescript used as peer dependency.
ttypescript uses typescript under the hood. I don't BELEIVE anything should break. However, smoke tests should be written if no one else is certain.
Yeah it basically just allows the rollup plugin to also look at tsconfig.json :)
FWIW @berndartmueller Microbundle already provides that exact feature:
// package.json
{
"mangle": {
"properties": "^_"
}
}
@developit I think ts-transformer-properties-rename
can do even more - it automatically detects what properties are "public" (or "external") and don't rename them, and what properties are internal (not just "private" in terms of class methods/properties, but all objects fields which aren't public/external) and rename them accordingly.
I'd say ts-transformer-properties-rename
should be used before properties mangling, because the transformer does not minify them, just add a prefix to name so it's still easy to debug but could be well minified with properties mangling.
Maybe instead of hardcoding it to ttypescript
, make a new cli option like --typescript-compiler
(or --tsc
?)? Then it's opt-in, so if it breaks things people know it's probably not microbundle
.