hunk.code_window: const pkgJson = loadJsonFile.sync<DependencyManifest>(require.resolve('pnpm/package.json', { paths: [__dirname] }))
   const packageManager = {
     name: pkgJson.name,
     // Never a prerelease version
  
hunk.labels: keep replace keep keep keep
hunk.after_edit: const pkgJson = loadJsonFile.sync<DependencyManifest>(
     path.join(path.dirname(require.main!.filename), '../package.json'),
   )
  
hunk.file_path: packages/cli-utils/src/pnpmPkgJson.ts
hunk.type: replace
file: # pnpm vs npm
  
  ## npm's flat tree
  
  npm maintains a [flattened dependency tree](https://github.com/npm/npm/issues/6912) as of version 3.
  This leads to less disk space bloat, with a messy `node_modules` directory as a side effect.
  
  On the other hand, pnpm manages `node_modules` as an addressable storage in its [store layout](about-the-package-store.md).
  This nets you the benefits of less disk space usage, while keeping your `node_modules` clean.
  
  The good thing about pnpm's proper `node_modules` structure is that it [helps to avoid silly bugs](https://www.kochan.io/nodejs/pnpms-strictness-helps-to-avoid-silly-bugs.html) by making it impossible to use modules
  that are not specified in the project's `package.json`.
  
  ## Installation
  
  pnpm does not allow installations of packages without saving them to `package.json`.
  If no parameters are passed to `pnpm install`, packages are saved as regular dependencies.
  Like with npm, `--save-dev` and `--save-optional` can be used to install packages as dev or optional dependencies.
  
  As a consequence of this limitation, projects won't have any extraneous packages when they use pnpm.
  That's why pnpm's implementation of the [prune command](https://docs.npmjs.com/cli/prune) does not
  have the possibility of prunning specific packages. pnpm's prune always removes all the extraneous packages.
  
  ## Directory dependencies
  
  Directory dependencies are the ones that start with the `file:` prefix and point to a directory in the filesystem.
  Like npm, pnpm symlinks those dependencies. Unlike npm, pnpm does not perform installation for the file dependencies.
  So if you have package `foo` (in `home/src/foo`), that has a dependency `bar@file:../bar`, pnpm won't perform installation in `/home/src/bar`.
  
  If you need to run installations in several packages at the same time (maybe you have a monorepo), you might want to use [pnpmr](https://github.com/pnpm/pnpmr). pnpmr searches for packages and runs `pnpm install` for them in the correct order.
  