github pnpm/pnpm v9.0.0-alpha.3

latest releases: v9.13.0, v10.0.0-alpha.0, v9.12.3...
pre-release9 months ago

Major Changes

  • Node.js v16 support dropped. Use at least Node.js v18.12.

  • Support for lockfile v5 is dropped. Use pnpm v8 to convert lockfile v5 to lockfile v6 #7470.

  • The dedupe-injected-deps setting is true by default.

  • The default value of the link-workspace-packages setting changed from true to false. This means that by default, dependencies will be linked from workspace packages only when they are specified using the workspace protocol.

  • Use the same directories on macOS as on Linux. Don't use directories inside ~/Library on macOS #7321.

  • The default value of the hoist-workspace-packages is true.

  • pnpm licenses list prints license information of all versions of the same package in case different versions use different licenses. The format of the pnpm licenses list --json output has been changed #7528.

  • A new command added for printing completion code to the console: pnpm completion [shell]. The old command that modified the user's shell dotfiles has been removed #3083.

  • Use the same directories on macOS as on Linux. Don't use directories inside ~/Library on macOS #7321.

  • Peer dependencies of peer dependencies are now resolved correctly. When peer dependencies have peer dependencies of their own, the peer dependencies are grouped with their own peer dependencies before being linked to their dependents.

    For instance, if card has react in peer dependencies and react has typescript in its peer dependencies, then the same version of react may be linked from different places if there are multiple versions of typescript. For instance:

    project1/package.json
    {
      "dependencies": {
        "card": "1.0.0",
        "react": "16.8.0",
        "typescript": "7.0.0"
      }
    }
    project2/package.json
    {
      "dependencies": {
        "card": "1.0.0",
        "react": "16.8.0",
        "typescript": "8.0.0"
      }
    }
    node_modules
      .pnpm
        card@1.0.0(react@16.8.0(typescript@7.0.0))
          node_modules
            card
            react --> ../../react@16.8.0(typescript@7.0.0)/node_modules/react
        react@16.8.0(typescript@7.0.0)
          node_modules
            react
            typescript --> ../../typescript@7.0.0/node_modules/typescript
        typescript@7.0.0
          node_modules
            typescript
        card@1.0.0(react@16.8.0(typescript@8.0.0))
          node_modules
            card
            react --> ../../react@16.8.0(typescript@8.0.0)/node_modules/react
        react@16.8.0(typescript@8.0.0)
          node_modules
            react
            typescript --> ../../typescript@8.0.0/node_modules/typescript
        typescript@8.0.0
          node_modules
            typescript
    

    In the above example, both projects have card in dependencies but the projects use different versions of typescript. Hence, even though the same version of card is used, card in project1 will reference react from a directory where it is placed with typescript@7.0.0 (because it resolves typescript from the dependencies of project1), while card in project2 will reference react with typescript@8.0.0.

    Related issue: #7444.

    Related PR: #7606.

Minor Changes

  • It is now possible to install only a subdirectory from a Git repository.

    For example, pnpm add github:user/repo#path:packages/foo will add a dependency from the packages/foo subdirectory.

    This new parameter may be combined with other supported parameters separated by &. For instance, the next command will install the same package from the dev branch: pnpm add github:user/repo#dev&path:packages/bar.

    Related issue: #4765.
    Related PR: #7487.

  • node-gyp updated to version 10.

  • PowerShell completion support added #7597.

  • Support node-options option inside .npmrc file when running scripts #7596

Platinum Sponsors

Gold Sponsors

Our Silver Sponsors

Don't miss a new pnpm release

NewReleases is sending notifications on new releases.