Open dharijanto opened 5 years ago
incremental
is a compiler option, so if you specify a project file - i.e. a tsconfig.json
file - when you run tsify, you can configure the option in the project file's compilerOptions
. tsify will use the options specified in said file.
Can you show an example of usage? It doesn't seem to work when setup this way:
plugin: [
['tsify', {
project: {
compilerOptions: {
incremental: true
}
}
}]
]
tsBuildInfoFile
is not created and the build is not faster than without the incremental flag.
I guess it doesn't work because tsify passes its own compiler host to TypeScript - to abstract the file system - as the compiled files need to be made available to Browserify via streams.
I don't have time to look into this, ATM, but if it's something you'd be interested in looking into, I can give you some pointers regarding where to start in this codebase.
With great pleasure. I've been digging into source code yesterday and will continue today. I'll let you know if I need help with it.
Cool, I'll write up some pointers tonight - in about 6 hours or so.
The main thing will be to switch debugging on and checkout the logs - to see if TypeScript is using the compiler host's API to write the intermediate data.
@ericmorand I'd forgotten that I'd written an outline of the codebase. You should start with that. It's here.
Once you've familiarised yourself with that, this is what I'd do:
incremental
flag when using the command line.incremental
information to the file system in this call.I finally had the chance to perform a simple test.
I have a simple TS project that consists of two files:
class Foo {
}
* tsconfig.json
{ "compilerOptions": { "module": "commonjs", "target": "es5", "sourceMap": true, "incremental": true, "tsBuildInfoFile": ".foo" }, "exclude": [ "../node_modules" ] }
When I run `tsc`, I successfully obtain a `.foo` file which means incremental is working.
When I run `npx browserify index.ts -p tsify`, I don't get a `.foo` file which means incrmental is not working.
When I run `npx browserify index.ts -p [tsify {incremental: true, tsBuildInfoFile: ".foo"}]`, I don't get it either.
I continue my investigations.
I also confirm that Host.prototype.writeFile
never attemps to write the build info file .foo
.
I think the issue is related to:
https://github.com/microsoft/TypeScript/issues/29978
ts-loader guys seems to be stuck at the same point than tsify:
https://github.com/TypeStrong/ts-loader/issues/913
What di you think?
Yep. Probably worth having a look at - or keeping an eye on - https://github.com/TypeStrong/ts-loader/pull/935 too.
Looks like there has been some progress made regarding an api: https://github.com/microsoft/TypeScript/pull/31432
Hello, First off, thanks for this wonderful open source project. I've been regularly using this with browserify :)
Since typescript 3.4 introduced
--incremental
(see: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html), is there a plan to support the flag on tsify library? Seems it'd be nice not having to recompile everything when the build script is restarted (i.e. computer restart) :)