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

Adds Bun support #392

Closed
wants to merge 8 commits into from
Closed

Conversation

pftg
Copy link
Contributor

@pftg pftg commented Aug 5, 2023

Description 📖

Adds support of Bun

Background 📜

Lately, Bun has adopted Vite, so we can use it for compilation assets.

@pftg pftg changed the title WIP: Adds Bun support Adds Bun support Sep 8, 2023
@pftg pftg changed the title Adds Bun support WIP: Adds Bun support Sep 8, 2023
@vitalyliber
Copy link

It will be great to see the Bun support!

@pftg
Copy link
Contributor Author

pftg commented Sep 13, 2023

@vitalyliber left to fix tests ;( but you can use my pr to confirm at least this "fast" workaround works for you too

@pftg pftg changed the title WIP: Adds Bun support Adds Bun support Sep 14, 2023
@pftg
Copy link
Contributor Author

pftg commented Sep 14, 2023

@ElMassimo please review this PR

Notes:

This is a very naive approach to start using it. I already use it for my projects.
Later, I saw some ideas to encapsulate all those package managers: remove duplication to find the current package manager.

@pftg pftg marked this pull request as draft September 18, 2023 17:10
@pftg
Copy link
Contributor Author

pftg commented Sep 18, 2023

I found some strange issue: (!) "base" option should start with a slash.

@vladimirtemnikov
Copy link
Contributor

Hello, @pftg

Currently, bun does not support brotli: oven-sh/bun#267

ViteRuby could work with bun, but we have vite-plugin-rails, which depends on brotli compression currently, may be we should wait some time before brotli will be implemented or conditionally enable brotli in plugin?

@ElMassimo any thoughts on this?

@pftg
Copy link
Contributor Author

pftg commented Sep 19, 2023

@vladimirtemnikov Yeah, you are right.

I had to disable brotli by the way, to use this version. So if this is a hard requirement to support the compress plugin, then there is a workaround.

So, for now, I use compress: { brotli: false } to use a bun. I'm ok with that ;)

I think better to start using without brotli to find more issues

@pftg pftg marked this pull request as ready for review October 15, 2023 10:39
@pftg
Copy link
Contributor Author

pftg commented Oct 15, 2023

@vladimirtemnikov @ElMassimo updated PR, what do you think to add notice in the Readme that it's not compatible with the vite rails plugin and list of supported bun versions?

@pftg
Copy link
Contributor Author

pftg commented Oct 16, 2023

Hmm, for development mode, everything was fine, but as soon as I tried to run on Heroku with production mode, the compilation got stuck. I found that when removing RubyPlugin, it's not stuck. I need help to set env to see the real problem. I'll try to look into it later.

Will be great to find a guide on how to set up development env for those plugins with bun and with integration testing in the real app.

@pftg pftg marked this pull request as draft October 16, 2023 10:10
@dominikklein
Copy link

Any ideas to bring this forward? Also rails 7.1. has now bun support. Would be nice to when it can also be used in the vite-ruby/rails context.

@pftg
Copy link
Contributor Author

pftg commented Mar 5, 2024

Yeah need to check latest tests, maybe now it's working. For now I'm using this approach to use bun https://jtway.co/integrating-bun-with-vite-ruby-for-lightning-fast-frontend-builds-bbd220fefdc0

@pftg pftg force-pushed the experiment-with-bun branch 2 times, most recently from 5892ef2 to d044bd6 Compare March 6, 2024 11:03
@pftg pftg marked this pull request as ready for review March 6, 2024 13:46
@pftg
Copy link
Contributor Author

pftg commented Mar 6, 2024

@ElMassimo, with the latest bun, it looks like it works. I'm working on the cleanup in a separate PR jetthoughts#2

@pftg
Copy link
Contributor Author

pftg commented Apr 4, 2024

https://github.com/ElMassimo/vite_ruby/actions/runs/8186414098/job/22384757347?pr=392 - it's a new issue that appeared lately, I will check, but I believe I need to rebase

@pftg pftg force-pushed the experiment-with-bun branch 5 times, most recently from 89b2388 to 412a06a Compare April 4, 2024 21:51
@schonert
Copy link

schonert commented Apr 5, 2024

@pftg all green - great job!

@adamburmister
Copy link

Fantastic, just what I need, but I see this has sat around in a green state for a month+.
Is there a plan to merge and publish this?

@ElMassimo
Copy link
Owner

Hi @pftg and other folks!

I've added support for a packageManager config option:

As part of that feature, it felt it was reasonable to add experimental support for bun, as it only required two lines of code.

Give it a try in vite_ruby-3.7.0.

The implementation in this pull request is reasonable, but I'd like to minimize the surface area of the library (users typically end up using internals even if they are marked as such).

@ElMassimo ElMassimo force-pushed the main branch 2 times, most recently from d55cc92 to ebe50b8 Compare July 17, 2024 14:43
@pftg
Copy link
Contributor Author

pftg commented Jul 17, 2024

@ElMassimo, could you clarify whether we should close this PR or if you need me to rework some parts?

@pftg
Copy link
Contributor Author

pftg commented Jul 17, 2024

Oh, it just adds settings to avoid auto-detection. In this pr, you find encapsulations of package managers at all, and I also added package manager settings too ;) https://github.com/ElMassimo/vite_ruby/pull/392/files#diff-756bec63bbf1c84f70817c5a763e016026db97b00b4b5e99a074dfc2ddb9521cR5

@Shaglock
Copy link

Hi @ElMassimo, are there any plans to merge this or make vite_ruby not depend on NodeJS being installed in the system?

@pftg
Copy link
Contributor Author

pftg commented Oct 7, 2024

@ElMassimo I forgot to mentione that there are missed more lines, you can check my PR what other changes need to add to make bun works. But I'd suggest to cleanup once and remove duplications with managing js packages, it was a little hard to find all those parts and cleanup it.

@danielnc
Copy link

@ElMassimo it would be nice to get this merged and how to enable bun with vite_rails we are using bun to compile assets in prod and works fine but dev still relies on node

@ElMassimo
Copy link
Owner

To clarify what I meant with:

I'd like to minimize the surface area of the library

I'm not interested in merging this refactoring, I'd prefer to keep the library lighter (less classes, smaller footprint).

Feel free to open an issue/PR if setting "packageManager": "bun" is not working as intended, providing error traces or relevant system information.


Given the misunderstanding after my reply, I've updated the CONTRIBUTING docs to minimize the chance of similar situations in the future.

A few notes from it:

  • If you’d like to discuss a new feature, create a new Discussion.
  • Keep changes to a minimum. If you have multiple features or fixes, submit multiple pull requests.
  • Please open a discussion to get feedback on your idea before spending too much time on it.

@ElMassimo ElMassimo closed this Oct 11, 2024
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

Successfully merging this pull request may close these issues.

9 participants