Closed cethien closed 3 weeks ago
Hey! Thank you for creating an issue. Do you have an idea of how an executable script could be run with either nodejs or bun? I can think of a statically built executable (probably with bun) but I have concerns. It would be great to know if there's a common solution for such cases. I will investigate
bun is intended as a node replacement, so just calling a script.js file should work fine.
It would be great to know if there's a common solution for such cases. I will investigate
i will check out some stuff and give a comment
@mrexox @cethien #705 maybe fixes this case as removes require of Node.js and #!/usr/bin/env node
For those of you, that want to utilize this package with bun now, Ive figured out a quick patch solution until bun support has been officially added.
Add these to your package.json file and you'll be good to go.
"prepare:lefthook": "lefthook install && bun -e \"const fs=require('node:fs'); fs.writeFileSync('node_modules/lefthook/bin/index.js', fs.readFileSync('node_modules/lefthook/bin/index.js', 'utf8').replace(/^#!\\/usr\\/bin\\/env\\s+node/gm, '#!/usr/bin/env bun'))\"",
"postinstall": "bun prepare:lefthook"
@Blaquewithaq, thanks for the temporary fix!
Any news on if @dalisoft's PR removes the node dependency to allow runtime independence? Using the above solution is a whole lot of verbose that would be amazing to clear up.
Like @cethien said, Bun is a node runtime replacement, we could simply run any script.js using either Node or Bun depending on the first that passes, since the result will be runtime independent once converted to git hooks.
since I opened the issue, I was experimenting around a bit and noticed something:
when installing other tools like esbuild, there is no js script that executes the binary, only a script to install for the right OS. the root cause for my problem seems to be the js script that runs the binary - is it possible to ditch the index.js alltogether?
I hope so, I have @dalisoft's PR on my radar, I just need to test it to make sure it solves the issue with bun.
I hope so, I have @dalisoft's PR on my radar, I just need to test it to make sure it solves the issue with bun.
Hey @mrexox, it seems you have merged the PR you referred to here, do you have any updates on this issue? Can it be closed, or are there any extra steps that need to be taken?
Hey! Unfortunately there was a backward compatibility issue with the PR, I am going to try a slightly different approach and will notify ASAP.
@cethien could you please check if the newest lefthook version works? I've changed the order of checks in the hook template and it must not fail with /usr/bin/env: ‘node’: No such file or directory
@cethien could you please check if the newest lefthook version works? I've changed the order of checks in the hook template and it must not fail with
/usr/bin/env: ‘node’: No such file or directory
hey, only managed to test now
I removed node from my system, and tested this one:
.lefthook.yml
# yaml-language-server: $schema=https://json.schemastore.org/lefthook.json
# vim: set ts=2 sw=2 tw=0 fo=cnqoj
commit-msg:
parallel: true
commands:
commitlint:
run: bun commitlint --edit $1
it seemed to work, my commit was some gibberish and i got a commitlint error.
seems to be resolved
:wrench: Summary
seems like the tool doesn't work without node. i have only bun for js on my system. after
lefthook install
, every hooked git actions results in/usr/bin/env: ‘node’: No such file or directory
Lefthook version
1.6.7 599459eb87d1dab4fd56707fd1ad3a4209c133c8
Steps to reproduce
Expected results
commitlint error
Actual results
/usr/bin/env: ‘node’: No such file or directory
Logs / Screenshots