<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/pnpm-12-8-6geqcckjt" -->

---
title: pnpm 12.8 | daily.dev
description: Version 12.8 of pnpm adds a warning when pnpm pack or pnpm publish would ship a .env file not listed in package.json files. Workspaces configured with...
canonical: https://daily.dev/posts/pnpm-12-8-6geqcckjt
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: pnpm 12.8 | daily.dev
og:description: Version 12.8 of pnpm adds a warning when pnpm pack or pnpm publish would ship a .env file not listed in package.json files. Workspaces configured with...
og:url: https://daily.dev/posts/pnpm-12-8-6geqcckjt
og:image: https://api.daily.dev/og/posts/6GeqccKjt.png
og:image:alt: pnpm 12.8
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.8

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

## Summary

Version 12.8 of pnpm adds a warning when pnpm pack or pnpm publish would ship a .env file not listed in package.json files. Workspaces configured with sharedWorkspaceLockfile: false now install projects concurrently up to workspaceConcurrency, sharing metadata, lockfile verification, and store caches for lower CPU and memory use. Every pnpm setting can now be passed via --config.<name>=<value> on the command line, fixing cases like --config.frozen-lockfile=true being silently dropped. Command-line settings now take precedence over pnpmfile updateConfig hooks. On Windows, Ctrl+C no longer leaves the terminal stuck when interrupting scripts that run through batch shims like vite.CMD. The release also bundles a large number of bug fixes across installing, resolving, lockfiles, workspaces, store/caches, patched dependencies, script running, publishing, configuration, global packages, and Windows-specific issues.

## Full article

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

## Questions this post answers

### How do I set a pnpm config option like frozen-lockfile from the command line without it silently being ignored?

As of pnpm 12.8, every setting pnpm supports can be set with --config.<name>=<value> on the command line, not just settings whose command already has a matching flag. Previously, running pnpm install --config.frozen-lockfile=true dropped the setting and rewrote pnpm-lock.yaml as though the install had not been frozen; this is now fixed.

_daily.dev surfaces release notes like this one so pnpm config quirks don't bite your CI setup._

### Why does pnpm install install workspace projects concurrently when sharedWorkspaceLockfile is false?

Starting in pnpm 12.8, workspaces with sharedWorkspaceLockfile: false install projects concurrently, up to workspaceConcurrency at a time, instead of sequentially. Each project is resolved, fetched, and written to its virtual store without waiting for the workspace projects it depends on, waiting only before linking dependencies and running lifecycle scripts. Shared package metadata, lockfile verification, and store caches reduce CPU and memory use.

_Developers tuning monorepo install speed can track pnpm workspace changes like this via daily.dev._

### Why does Ctrl+C hang my terminal on Windows when running a script like vite dev through pnpm?

This happened because scripts running through a batch shim, such as vite dev via vite.CMD, made cmd.exe wait forever on its 'Terminate batch job (Y/N)?' prompt after Ctrl+C, causing every following keystroke to go to that prompt instead of the terminal. pnpm 12.8 fixes this by ending the cmd.exe script shell once it has sat idle for a second after the interrupt with nothing running under it.

_Windows developers hitting stuck terminals can follow fixes like this pnpm change on daily.dev._

## Similar posts on daily.dev

- [pnpm 12.7](https://daily.dev/posts/pnpm-12-7-ot65yjyad) · Fast, disk space efficient package manager \| pnpm · 11 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 11 Adds Supply Chain Protection Defaults for Minimum Re...](https://daily.dev/posts/pnpm-11-adds-supply-chain-protection-defaults-for-minimum-re--wxgk3vhhu) · Socket · 102 upvotes · 6 comments
- [pnpm 11 cuts the npm umbilical cord](https://daily.dev/posts/pnpm-11-cuts-the-npm-umbilical-cord-vhucinbuf) · Bytes by ui.dev · 50 upvotes · 5 comments

---

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

[View this post on daily.dev](https://daily.dev/posts/pnpm-12-8-6geqcckjt)

```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.8","url":"https://daily.dev/posts/pnpm-12-8-6geqcckjt","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/pnpm-12-8-6geqcckjt"},"datePublished":"2026-09-30T11:28:08.674Z","dateModified":"2026-09-30T11:28:32.311Z","description":"Version 12.8 of pnpm adds a warning when pnpm pack or pnpm publish would ship a .env file not listed in package.json files. Workspaces configured with...","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-8-6geqcckjt","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":5},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"general-programming,nodejs,pnpm","timeRequired":"PT12M"}
{"@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.8"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/pnpm-12-8-6geqcckjt#faq","mainEntity":[{"@type":"Question","name":"How do I set a pnpm config option like frozen-lockfile from the command line without it silently being ignored?","acceptedAnswer":{"@type":"Answer","text":"As of pnpm 12.8, every setting pnpm supports can be set with --config.<name>=<value> on the command line, not just settings whose command already has a matching flag. Previously, running pnpm install --config.frozen-lockfile=true dropped the setting and rewrote pnpm-lock.yaml as though the install had not been frozen; this is now fixed. daily.dev surfaces release notes like this one so pnpm config quirks don't bite your CI setup."}},{"@type":"Question","name":"Why does pnpm install install workspace projects concurrently when sharedWorkspaceLockfile is false?","acceptedAnswer":{"@type":"Answer","text":"Starting in pnpm 12.8, workspaces with sharedWorkspaceLockfile: false install projects concurrently, up to workspaceConcurrency at a time, instead of sequentially. Each project is resolved, fetched, and written to its virtual store without waiting for the workspace projects it depends on, waiting only before linking dependencies and running lifecycle scripts. Shared package metadata, lockfile verification, and store caches reduce CPU and memory use. Developers tuning monorepo install speed can track pnpm workspace changes like this via daily.dev."}},{"@type":"Question","name":"Why does Ctrl+C hang my terminal on Windows when running a script like vite dev through pnpm?","acceptedAnswer":{"@type":"Answer","text":"This happened because scripts running through a batch shim, such as vite dev via vite.CMD, made cmd.exe wait forever on its 'Terminate batch job (Y/N)?' prompt after Ctrl+C, causing every following keystroke to go to that prompt instead of the terminal. pnpm 12.8 fixes this by ending the cmd.exe script shell once it has sat idle for a second after the interrupt with nothing running under it. Windows developers hitting stuck terminals can follow fixes like this pnpm change on daily.dev."}}]}
```

