<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/pnpm-12-17-0-xy4jijzo5" -->

---
title: pnpm 12.17.0 | daily.dev
description: pnpm 12.17.0 adds pnpm peers check --global to check globally installed packages. The overrides field now supports :prod, :optional, and :peer pseudo-selectors...
canonical: https://daily.dev/posts/pnpm-12-17-0-xy4jijzo5
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: pnpm 12.17.0 | daily.dev
og:description: pnpm 12.17.0 adds pnpm peers check --global to check globally installed packages. The overrides field now supports :prod, :optional, and :peer pseudo-selectors...
og:url: https://daily.dev/posts/pnpm-12-17-0-xy4jijzo5
og:image: https://api.daily.dev/og/posts/Xy4jijZO5.png
og:image:alt: pnpm 12.17.0
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# pnpm 12.17.0

**[Fast, disk space efficient package manager \| pnpm](https://daily.dev/sources/pnpm-blog)** · 8 min read · 0 upvotes · 0 comments

## Summary

pnpm 12.17.0 adds pnpm peers check --global to check globally installed packages. The overrides field now supports :prod, :optional, and :peer pseudo-selectors plus wildcard patterns, and pnpm outdated and pnpm update can now inspect runtime, package manager, Cargo, and Python dependencies. Files pnpm creates now get the permissions the umask gives any new file, instead of being readable only by the user who ran pnpm, which broke Docker images that run as a different user. Hardlinking from the store now stats each file once per install instead of once per linking package, cutting up to 15% system CPU on an offline install of a large workspace. Several fixes address repeat installs missing changes to local file: and workspace dependencies.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://pnpm.io/blog/releases/12.17.0>

## Questions this post answers

### Why does pnpm install inside a Docker image create files that another user can't read?

Before pnpm 12.17.0, several files pnpm created in a project, such as node_modules/.pnpm-workspace-state-v1.json and pnpm-workspace.yaml, were given permissions readable only by the user who ran pnpm instead of the umask's default like 0644. This broke Docker images where a different user later ran pnpm commands. Version 12.17.0 fixes this so new files follow the umask; edited existing files keep their original permissions.

_Track pnpm fixes like this on daily.dev before they break your Docker build._

### How do I check for peer dependency issues in globally installed npm packages with pnpm?

Run 'pnpm peers check --global' or the shorthand 'pnpm peers check -g', added in pnpm 12.17.0. After running a global install or update, pnpm's peer dependency warning now also suggests this exact command, making it easier to audit peer dependency problems in global packages rather than only in project-local installs.

_Keep pnpm workflows current on daily.dev as new CLI flags like this ship._

### How can I target only production or optional dependencies when writing a pnpm overrides rule?

pnpm 12.17.0 adds :prod, :optional, and :peer pseudo-selectors to the overrides field, letting a rule target a single dependency group instead of all of them. Overrides also gained support for '*' wildcard patterns on both parent and target package names, giving finer control over which dependencies a version override applies to.

_Developers tuning dependency overrides can follow pnpm release details on daily.dev._

## Similar posts on daily.dev

- [pnpm 12.16.0](https://daily.dev/posts/pnpm-12-16-0-88ljuyuda) · Fast, disk space efficient package manager \| pnpm · 0 upvotes · 0 comments
- [pnpm 12.2-12.3](https://daily.dev/posts/pnpm-12-2-12-3-gtkuwlrn9) · Fast, disk space efficient package manager \| pnpm · 4 upvotes · 0 comments
- [pnpm 12.7](https://daily.dev/posts/pnpm-12-7-ot65yjyad) · Fast, disk space efficient package manager \| pnpm · 11 upvotes · 0 comments
- [pnpm 11.28](https://daily.dev/posts/pnpm-11-28-g0urujyp5) · Fast, disk space efficient package manager \| pnpm · 15 upvotes · 0 comments

---

Tags: [#general-programming](https://daily.dev/tags/general-programming), [#nodejs](https://daily.dev/tags/nodejs), [#docker](https://daily.dev/tags/docker), [#pnpm](https://daily.dev/tags/pnpm)

[View this post on daily.dev](https://daily.dev/posts/pnpm-12-17-0-xy4jijzo5)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"pnpm 12.17.0","url":"https://daily.dev/posts/pnpm-12-17-0-xy4jijzo5","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/pnpm-12-17-0-xy4jijzo5"},"datePublished":"2026-10-30T14:50:56.379Z","dateModified":"2026-10-30T14:51:25.528Z","description":"pnpm 12.17.0 adds pnpm peers check --global to check globally installed packages. The overrides field now supports :prod, :optional, and :peer pseudo-selectors...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/63763758f3e74381d631e88f7667e808?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/63763758f3e74381d631e88f7667e808?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Fast, disk space efficient package manager | pnpm","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Fast, disk space efficient package manager | pnpm","logo":"https://media.daily.dev/image/upload/s--JKuzGOiX--/f_auto,q_auto/v1787487440/logos/pnpm-blog?_a=BAMAMicg0","url":"https://daily.dev/sources/pnpm-blog"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/pnpm-12-17-0-xy4jijzo5","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"general-programming,nodejs,docker,pnpm","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Fast, disk space efficient package manager | pnpm","item":"https://daily.dev/sources/pnpm-blog"},{"@type":"ListItem","position":3,"name":"pnpm 12.17.0"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/pnpm-12-17-0-xy4jijzo5#faq","mainEntity":[{"@type":"Question","name":"Why does pnpm install inside a Docker image create files that another user can't read?","acceptedAnswer":{"@type":"Answer","text":"Before pnpm 12.17.0, several files pnpm created in a project, such as node_modules/.pnpm-workspace-state-v1.json and pnpm-workspace.yaml, were given permissions readable only by the user who ran pnpm instead of the umask's default like 0644. This broke Docker images where a different user later ran pnpm commands. Version 12.17.0 fixes this so new files follow the umask; edited existing files keep their original permissions. Track pnpm fixes like this on daily.dev before they break your Docker build."}},{"@type":"Question","name":"How do I check for peer dependency issues in globally installed npm packages with pnpm?","acceptedAnswer":{"@type":"Answer","text":"Run 'pnpm peers check --global' or the shorthand 'pnpm peers check -g', added in pnpm 12.17.0. After running a global install or update, pnpm's peer dependency warning now also suggests this exact command, making it easier to audit peer dependency problems in global packages rather than only in project-local installs. Keep pnpm workflows current on daily.dev as new CLI flags like this ship."}},{"@type":"Question","name":"How can I target only production or optional dependencies when writing a pnpm overrides rule?","acceptedAnswer":{"@type":"Answer","text":"pnpm 12.17.0 adds :prod, :optional, and :peer pseudo-selectors to the overrides field, letting a rule target a single dependency group instead of all of them. Overrides also gained support for '*' wildcard patterns on both parent and target package names, giving finer control over which dependencies a version override applies to. Developers tuning dependency overrides can follow pnpm release details on daily.dev."}}]}
```

