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

fix(versions): Empty Objects are removed when format or fix-mismatches invoked. #223

Open
denis-fwd opened this issue Jun 13, 2024 · 2 comments

Comments

@denis-fwd
Copy link

Description

Greetings! I am syncpack newest fan. Thank you for your effort. I am coming to you as I have an issue that, after reviewing, the source appears to not be a user error.

My issue is this - I would like to have a property in package.json which is empty. This is due to nx and the use of root-level tasks: https://nx.dev/recipes/running-tasks/root-level-scripts#setup. However, anytime I run fix-mismatches the empty object tied to nx property disappears.

Related: #117

Steps to reproduce:

  1. Create a root nx property inpackage.json
  2. Run syncpack fix-mismatches
  3. Observe the removal of the property and its object.

Suggested Solution

I believe the issue is related to this function -
https://github.com/JamieMason/syncpack/blob/main/src/bin-fix-mismatches/fix-mismatches.ts#L94

I propose that the configuration consider a deny list, that suggests to syncpack "I know what I am doing" for the following operations. Something like:

{
  "denyList": {
    "nx": {
      "path": "nx",
      "operations": ["fix-mismatches"]    
    }
  }
}

I realize this interface may not be needed in its entirety to solve my issue. However I believe something like this can allow for more refined customization and implicitly allows the code paths to continue working as they do today.

Help Needed

I am hoping a fix can be made in the area identified if it is the correct code path. Happy to test out any solution!

@JamieMason
Copy link
Owner

Thanks a lot @denis-fwd, great issue and you're exactly right.

  1. We only need to check and clean up empty objects if a Banned Version Group has been fixed and eg. devDependencies is now empty as a result.
  2. We should only check and clean up empty objects in the places syncpack has removed banned dependencies.

But, the way I've done it is pretty sloppy – it always runs and is not targeted about what it cleans up. I'll get this fixed in the next version.

@JamieMason JamieMason changed the title Empty Objects are removed when format or fix-mismatches invoked. fix(versions): Empty Objects are removed when format or fix-mismatches invoked. Jun 16, 2024
@denis-fwd
Copy link
Author

@JamieMason no the thanks goes to you. I appreciate your work and look forward to the next release. For folks coming across this issue, I've created my own sloppy fix for this in the interim:

If I set the field like this to avoid it getting deleted:

// package.json
{
  "nx": {
     "targets": [] 
  }
}

@JamieMason feel free to close this at your leisure.

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

No branches or pull requests

2 participants