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

feat(pkg-manifest): preserve comments in json5 manifests #5677

Merged
merged 14 commits into from Nov 27, 2022

Commits on Nov 26, 2022

  1. feat(manifest): preserve comments in JSON5 manifests

      Use npm package `strip-comments-strings` to find all comments in any
      manifest file as it is read. Save them as part of the "file formatting"
      detected by the manifest reader, noting for each the text of the lines
      they are on, before, and after, and the line number as a fallback.
    
      When the manifest is written, attempt to place each comment back in
      the resulting JSON5 text, so that the text of the line it is on,
      before, or after (in that priority order) matches the text at time of
      reading. Otherwise, so that no comments are lost, replace the comment
      on the same line number, adding a notation that it may have been
      relocated (due to sorting dependencies, for example, it may no longer
      be in the same "logical position" in the file, even though it is on
      the same physical line number).
    
      When comments are in fairly ordinary positions and the manifest does
      not change too drastically (i.e. once the dependencies are sorted as
      pnpm prefers, and there are not many parameters added all at once),
      this strategy results in exact preservation of the comments, as a new
      test shows.
    
      The motivation for this commit is to take advantage of the feature of
      JSON5 that it allows human-readable comments. For this feature to be
      useful in the case of package.json5 manifests, those comments must be
      preserved across manifest changes.
    
      Partially resolves pnpm#2008. [That issue requests comment preservation
      also for YAML manifests, but I have no experience working with YAML,
      and it also requests that key order be preserved, but I did not
      address key order because current code in the the pnpm manifest
      reader/writer _explicitly_ reorders keys -- clearly deliberately --
      so I did not want to simply remove code that appeared to have been
      purposefully written and included.]
    gwhitney committed Nov 26, 2022
    Configuration menu
    Copy the full SHA
    ed25f2a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    d77f945 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    5469140 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    2a74c22 View commit details
    Browse the repository at this point in the history
  5. style: remove lint issues

      (Including one unused variable that was inadvertently left in.)
    gwhitney committed Nov 26, 2022
    Configuration menu
    Copy the full SHA
    5c3d64b View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    843becc View commit details
    Browse the repository at this point in the history
  7. refactor(pkg-manifest): separate comment-handling code

      Move comment extraction and reinsertion into their own functions,
      called only when the manifest is Json5.
    gwhitney committed Nov 26, 2022
    Configuration menu
    Copy the full SHA
    7fba4af View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    b48d0f0 View commit details
    Browse the repository at this point in the history

Commits on Nov 27, 2022

  1. Configuration menu
    Copy the full SHA
    1704039 View commit details
    Browse the repository at this point in the history
  2. docs: add changesets

    zkochan committed Nov 27, 2022
    Configuration menu
    Copy the full SHA
    d2c346c View commit details
    Browse the repository at this point in the history
  3. refactor: comments-parser

    zkochan committed Nov 27, 2022
    Configuration menu
    Copy the full SHA
    cc40d7a View commit details
    Browse the repository at this point in the history
  4. refactor: comments-parser

    zkochan committed Nov 27, 2022
    Configuration menu
    Copy the full SHA
    aa572b3 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    82b6190 View commit details
    Browse the repository at this point in the history
  6. test: fix

    zkochan committed Nov 27, 2022
    Configuration menu
    Copy the full SHA
    eb17e8d View commit details
    Browse the repository at this point in the history