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

Husky replaces my "prepare" script #1387

Open
ezeamin opened this issue Feb 6, 2024 · 5 comments
Open

Husky replaces my "prepare" script #1387

ezeamin opened this issue Feb 6, 2024 · 5 comments

Comments

@ezeamin
Copy link

ezeamin commented Feb 6, 2024

Context

  • Terminal: Powershell - Windows 11
  • Node: 20.9.0
  • pnpm: 8.14.0

Hi! Husky is working great so far, thanks for your time! But, when I run pnpm exec husky init, following the docs, it installs the hooks but also replaces my prepare script with prepare: husky. I understand the purpose of this behaviour, but if I have a prepare script already, it should't replace it with its own script.

It also replaces my repo pre-commit file inside of /husky with a default one that does pnpm test. This is undesired behavior, because I already had a configuration written for the pre-commit hook.

@typicode
Copy link
Owner

typicode commented Feb 6, 2024

Hi!

For existing hooks, it's better to follow the 'How to migrate' section from https://github.com/typicode/husky/releases/tag/v9.0.1

I'll update docs to make that clearer.

@deleonio
Copy link

Hello @typicode and @ezeamin,

we use the script prepare for more than just husky. I think it is more comfortable to leave it as it is.

@zayne-wang
Copy link

@typicode
I created a pull request #1407 to fix this issue, please test and check.

@SH4LIN
Copy link

SH4LIN commented Mar 24, 2024

At least there should be a condition to check if prepare script has any commands in it or not If there is a command then this husky command should be appended.

Like this

- 14 ;(o.scripts ||= {}).prepare = 'husky'
+ 14 ;(o.scripts ||= {}).prepare = '' === (o.scripts ||= {}).prepare ? 'husky' : (o.scripts ||= {}).prepare + ' && husky'

Raised the PR for the mentioned solution please check it out.

@zayne-wang
Copy link

zayne-wang commented Mar 25, 2024

At least there should be a condition to check if prepare script has any commands in it or not If there is a command then this husky command should be appended.

Like this

- 14 ;(o.scripts ||= {}).prepare = 'husky'
+ 14 ;(o.scripts ||= {}).prepare = '' === (o.scripts ||= {}).prepare ? 'husky' : (o.scripts ||= {}).prepare + ' && husky'

Raised the PR for the mentioned solution please check it out.

Hi @SH4LIN,

Maybe we experienced the same mistake. According to typicode's reply in PR #1407, the custom scripts should be placed in .husky/, but not in .husky/_/. The .husky/_/ directory is managed by husky itself.

Hope this could make sense for you.

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

5 participants