You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue is a follow up of the work done in #3529
Old build system overview
While trying to work on Fable, I discovered that the build.fsx was having several issues:
No code unification between the different targets
Build process was difficult to understand because it was not always easy to understands what the code was doing
Extensive usage of callbacks
List.fold
Not everything was defined inside of the build.fsx, but was also using some function from Fable.PublishUtils which is kind of fine but also using npm scripts making it difficult to follow the order of execution
New build system goals
Have everything define in a single place/project
Have a more declarative code making it easier to follow what each step does and minimise usage of callbacks
Make it easy to share codes when possible or re-use code
Good exemple of that is the BuildFableLibrary which allows each target to provide a few parameters but encapsulate all the logic possible
Ability to re-use others command handler like github-release which re-use publish handler
Setup a VSCode devcontainer making it easier for anyone to contribute to Fable and also workaround the current limitation of not being able to compile the Fable standalone on OXS (seems to be a dotnet runtime edge case...)
Clean VSCode tasks and launch configuration that are not usable anymore + add new ones for things that can be supported and improve the developer experience
In the future, I will move some of the helpers function like changelog parsing, fsproj/package.json manipulation into a library. To simply the project and make it usable for others projects too.
Tasks
However, for all the good things that the new build system provide there are still things that needs to be completed:
Update PackageReleaseNotes node in the fsproj when releasing new version.
Currently, terser seems to be running without ever completing (let it run for more than 30min without success).
Investigate if we can use vite instead of rollup/terser. I tested using esbuild and it was able to bundle the project in less than a second. But I need more time to complete the work on:
Description
This issue is a follow up of the work done in #3529
Old build system overview
While trying to work on Fable, I discovered that the
build.fsx
was having several issues:List.fold
build.fsx
, but was also using some function fromFable.PublishUtils
which is kind of fine but also usingnpm scripts
making it difficult to follow the order of executionNew build system goals
callbacks
BuildFableLibrary
which allows each target to provide a few parameters but encapsulate all the logic possiblegithub-release
which re-usepublish
handlerIn the future, I will move some of the helpers function like changelog parsing, fsproj/package.json manipulation into a library. To simply the project and make it usable for others projects too.
Tasks
However, for all the good things that the new build system provide there are still things that needs to be completed:
Update
PackageReleaseNotes
node in the fsproj when releasing new version.d60e3a9#r130824463
Port and fix the
fable-standalone
command https://github.com/fable-compiler/Fable/blob/main/build.fsx#L860-L862Currently, terser seems to be running without ever completing (let it run for more than 30min without success).
Investigate if we can use
vite
instead of rollup/terser. I tested usingesbuild
and it was able to bundle the project in less than a second. But I need more time to complete the work on:Port the
fable-compiler-js
command https://github.com/fable-compiler/Fable/blob/main/build.fsx#L857-L859Waiting for
fable-standalone
Port the
fable-worker
command https://github.com/fable-compiler/Fable/blob/main/build.fsx#L863-L865Fix sync with Ncava FCS repo (see Port
sync-fcs-repo
andcopy-fcs-repo
to the new build system #3531)Port the
package
command https://github.com/fable-compiler/Fable/blob/main/build.fsx#L842-L844Port the
package-core
command https://github.com/fable-compiler/Fable/blob/main/build.fsx#L845-L847Activate support for publishing
fable-standalone
Waiting for
fable-standalone
Activate support for publishing
fable-compiler-js
Waiting for
fable-standalone
The text was updated successfully, but these errors were encountered: