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
package.json is formatted unexpectedly when there are no changes to be applied to the file during yarn install. Yes --immutable does stop the formatting but sometimes I want to get the changes and then re-format package.json after. install should not format anything unless the file content is actually changed.
To reproduce
mkdir new
cd new
yarn init
yarn add -D cspell eslint prettier ts-node typescript
As a workaround, I made a simple plugin to run prettier after all installed:
import{cwdascwdFunc,stdout,stdin,stderr}from'process';import{Configuration,Hooks,Project,scriptUtils}from'@yarnpkg/core';import{getPluginConfiguration}from'@yarnpkg/cli';import{PortablePath}from'@yarnpkg/fslib';// The documentation says to use `const plugin: Plugin = {...}; export.default = plugin` but this// does not work. Explicit `module.exports` does.module.exports={factory: (): {hooks: Hooks}=>({hooks: {afterAllInstalled(project: Project): void{void(async()=>{constcwd=cwdFunc()asPortablePath;constconfiguration=awaitConfiguration.find(cwd,getPluginConfiguration());const{ locator }=awaitProject.find(configuration,cwd);constpackageAccessibleBinaries=awaitscriptUtils.getPackageAccessibleBinaries(locator,{
project,},);if(!packageAccessibleBinaries.get('prettier')){thrownewError('Prettier not found.');}constret=awaitscriptUtils.executePackageAccessibleBinary(locator,'prettier',['--log-level','error','-w','package.json','.yarnrc.yml'],{ cwd, packageAccessibleBinaries, project, stderr, stdin, stdout },);if(ret!==0){thrownewError(`Prettier returned non-zero: {ret}.`);}})();},},}),name: 'plugin-prettier-after-all-installed',};
The reason for this is because I have a hook in pre-commit to check that yarn.lock is valid against package.json. The formatting done by Yarn leads to a false positive.
Self-service
Describe the bug
package.json
is formatted unexpectedly when there are no changes to be applied to the file duringyarn install
. Yes--immutable
does stop the formatting but sometimes I want to get the changes and then re-formatpackage.json
after.install
should not format anything unless the file content is actually changed.To reproduce
mkdir new cd new yarn init yarn add -D cspell eslint prettier ts-node typescript
Add the following to
package.json
:package.json
at path.eslint.rules["@typescript-eslint/no-magic-numbers"][1].ignore
is now formatted with one number per line in the list.Environment
System: OS: Linux 6.8 Gentoo Linux CPU: (12) x64 12th Gen Intel(R) Core(TM) i7-1265U Binaries: Node: 22.1.0 - /tmp/xfs-63083062/node Yarn: 4.2.2 - /tmp/xfs-63083062/yarn npm: 10.2.5 - ~/.local/share/npm-global/bin/npm
Additional context
No response
The text was updated successfully, but these errors were encountered: