hunk.code_window:   const pkgJson = await readPkg()
     t.deepEqual(pkgJson.dependencies, {rimraf: '^2.5.1'}, 'rimraf has been added to dependencies')
   })
   test("don't override existing spec in package.json on named installation", async function (t: tape.Test) {
     const project = prepare(t, {
       dependencies: {
         'is-positive': '^2.0.0', // this will be kept as no newer version is available from the range
  
hunk.labels: keep keep keep add keep keep keep keep
hunk.after_edit: // NOTE: this works differently for global installations. See similar tests in global.ts
  
hunk.file_path: test/install/updatingPkgJson.ts
hunk.type: add
file: # API
  
  ## `pnpm.installPkgs(pkgsToInstall, [options])`
  
  Install packages.
  
  **Arguments:**
  
  * `pkgsToInstall` - *Object | String[]* - either an object that maps package names to version ranges or inputs usually passed to `npm install` (e.g., `foo@1.0.0`, `foo`).
  * `options.save` - *Boolean* - package will appear in `dependencies`.
  * `options.saveDev` - *Boolean* - package will appear in `devDependencies`.
  * `options.saveOptional` - *Boolean* - package will appear in `optionalDependencies`.
  * `options.saveExact` - *Boolean* - saved dependencies will be configured with an exact version rather than using npm's default semver range operator.
  * `options.global` - *Boolean* - the packages will be installed globally rather than locally.
  * `options.prefix` - *String* - the directory in which the installation will be performed. By default the `process.cwd()` value is used.
  * `options.quiet` - *Boolean* - `false` by default. No output to the console.
  * `options.metaCache` - *Map* - a cache for package meta info.
  * `options.networkConcurrency` - *Number* - `16` by default. Max amount of network requests to perform concurrently.
  * `options.offline` - *Boolean* - `false` by default. Install packages using only the local registry mirror, w/o doing any network requests.
  
  **Returns:** a Promise
  
  **Example:**
  
  ```js
  const pnpm = require('pnpm')
  
  pnpm.install({
    'is-positive': '1.0.0',
    'hello-world': '^2.3.1'
  }, { save: true, quiet: true })
  ```
  
  ## `pnpm.install([options])`
  
  Install all modules listed as dependencies in `package.json`.
  
  **Arguments:** (same as in named install and additionally)
  
  * `options.production` - *Boolean* - `false` by default or `true` when the `NODE_ENV` environment variable is set to `production`. Modules listed in `devDependencies` will not be installed.
  
  ## `pnpm.uninstall(pkgsToUninstall, [options])`
  
  Uninstalls a package, completely removing everything pnpm installed on its behalf.
  
  **Arguments:**
  
  * `pkgsToUninstall` - *String[]* - the package names to be uninstalled.
  * `options.save` - *Boolean* - the package will be removed from `dependencies`.
  * `options.saveDev` - *Boolean* - the package will be removed from `devDependencies`.
  * `options.saveOptional` - *Boolean* - the package will be removed from `optionalDependencies`.
  * `options.global` - *Boolean* - the packages will be uninstalled globally.
  
  ## `pnpm.link(linkFrom, lintTo, [options])`
  
  Create a symbolic link from the linked package to the target package's `node_modules` (and its `node_modules/.bin`).
  
  **Arguments:**
  
  * `linkFrom` - *String* - path to the package that should be linked.
  * `lintTo` - *String* - path to the dependent package.
  
  ## `pnpm.linkToGlobal(linkFrom, options)`
  
  Create a symbolic link from the specified package to the global `node_modules`.
  
  **Arguments:**
  
  * `linkFrom` - *String* - path to the package that should be linked.
  * `globalPrefix` - *String* - path to the global directory.
  
  ## `pnpm.linkFromGlobal(pkgName, linkTo, options)`
  
  Create a symbolic link from the global `pkgName` to the `linkTo/node_modules` folder.
  
  **Arguments:**
  
  * `pkgName` - *String* - package to link.
  * `linkTo` - *String* - package to link to.
  * `globalPrefix` - *String* - path to the global directory.
  
  ## `pnpm.prune([options])`
  
  Remove extraneous packages. Extraneous packages are packages that are not listed on the parent package's dependencies list.
  
  **Arguments:**
  
  * `options.production` - *Boolean* - by default `false`. If this property is `true`, prune will remove the packages specified in `devDependencies`.
  * `options.prefix` - *String* - by default `process.cwd()`.
  
  ## `pnpm.storeStatus([options])`
  
  Return the list of modified dependencies.
  
  **Returns:** `Promise<string[]>` - the paths to the modified packages of the current project. The paths contain the location of packages in the store,
  not in the projects `node_modules` folder.
  