Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Complete the new build system #3536

Closed
8 of 9 tasks
MangelMaxime opened this issue Sep 27, 2023 · 0 comments
Closed
8 of 9 tasks

Complete the new build system #3536

MangelMaxime opened this issue Sep 27, 2023 · 0 comments

Comments

@MangelMaxime
Copy link
Member

MangelMaxime commented Sep 27, 2023

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:

  • 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:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant