Zoltan Kochan
7d5ada0701
feat: reverse pnpm why tree and improve list/why output ( #10615 )
...
- **`pnpm why` now shows a reverse dependency tree.** The searched package appears at the root with its dependants as branches, walking back to workspace roots. This replaces the previous forward-tree output which was noisy and hard to read for deeply nested dependencies.
- **Replaced `archy` with a new `@pnpm/text.tree-renderer` package** that renders trees using box-drawing characters (├──, └──, │) and supports grouped sections, dim connectors, and deduplication markers.
- **Show peer dependency hash suffixes** in `pnpm list` and `pnpm why` output to distinguish between different peer-dep variants of the same package.
- **Improved `pnpm list` visual output:** bold importer nodes, dimmed workspace paths, dependency grouping, package count summary, and deterministic sort order.
- **Added `--long` support to `pnpm why`** and the ability to read package manifests from the CAS store.
- **Deduplicated shared code** between `list` and `why` commands into a common module, and reused `getPkgInfo` in the why tree builder.
2026-02-15 14:38:43 +01:00
Ryo Matsukawa
8ffb1a7f0c
fix: display npm: protocol for aliased packages in list and why ( #10084 )
...
* fix: support alias resolution in pnpm why with npm:
protocol
* refactor: make alias required instead of optional
* refactor: reorder field to put alias first
2025-11-20 01:08:53 +01:00
Ryo Matsukawa
2464485700
feat: add --lockfile-only option to pnpm list ( #10066 )
...
close #10020
---------
Co-authored-by: Zoltan Kochan <z@kochan.io >
2025-11-17 16:57:29 +01:00
Khải
ae43ac79fa
feat(cli/config)!: breaking changes ( #9854 )
...
* feat(cli/config)!: breaking changes
* refactor(test): remove `deepNullProto` and reuse `getOutputString`
* feat(cli/config/list): censor protected settings
* test: censorship of protected settings
* docs(changeset): censorship of protected settings
* fix: eslint
* feat(config)!: exclude non-option from `rawConfig`
* fix: eslint
* refactor: move default registries to builtin (#9886 )
* feat(config)!: filter rc settings
* feat(config): don't exclude non-options
This reverts commit a79f72dbfb .
* feat(cli/config/get)!: print array as json
* test: fix
* docs(changeset): correct
* test: fix
* feat(cli/config)!: only kebabize option fields (wip)
* chore(git): revert the implementation
This reverts commit 529f9bdd47 .
* test: restore
This reverts commit d8191e0ed8 .
* feat(cli/config)!: only kebabize option fields (wip)
* feat: use `types` instead
* feat(cli/config/get)!: only kebabize rc fields
* test: add
* test: non-rc kebab-case keys
* test: correct
* docs(changeset): correct
* docs(changeset): style
* docs(changeset): correct
* test: only kebabize rc fields
* fix: import path
* fix: eslint
* fix: `isCamelCase`
* feat(cli/config/set)!: forbid unknown rc fields
* test: fix existing test
* test: refuse unsupported rc settings
* feat: hint
* feat(cli/config/set)!: refuse kebab-case workspace-specific settings
* feat(config)!: ignore non-camelCase from `pnpm-workspace.yaml`
* test: config get
* test: config list
* refactor: extract shared code into its own package
* test: `isCamelCase`
* feat(cli/config/list)!: consistent naming cases
* refactor: make it more reusable
* feat(cli/config/get)!: consistent naming cases
* feat(cli/config/get): censor protected settings
* test: `get ''` should be the same as `list`
* docs(test): quotation marks
* refactor: remove unnecessary `test.each`
* docs(changeset): case changes
* test: unknown keys
* docs(changeset): correct
* docs(changeset): non camelCase from `pnpm-workspace.yaml`
* fix: eslint
* docs(changeset): correct terminology
* docs(changeset): clarify
* feat!: do not load non-auth and non-registry
* fix: implementation
* test: no hidden settings
* fix: eslint
* fix: do not drop default values
* test: fix
* test: remove irrelevant tests
* test: fix (wip)
* fix: auth
* test: skip an inapplicable test
* test: temporary skip a test
* test: fix 'respects testPattern'
* test: fix 'respects changedFilesIgnorePattern'
* test: fix 'changedFilesIgnorePattern is respected'
* test: rename a test
* test: fix `package-lock=false`
* feat: exception for `managePackageManagerVersions`
* test: `managePackageManagerVersions: false`
* test: fix (wip)
* test: workaround
* fix: default `optional` to `true`
* fix: `filter` on `pnpm-workspace.yaml`
* test: fix
* test: disable ones that no longer apply
* chore(git): revert incorrect change
* fix: `filter` on `pnpm-workspace.yaml` (#10127 )
* fix: `filter` on `pnpm-workspace.yaml`
* docs: changeset
* fix: actual fix
* fix: don't set default on config
* docs(readme): correct a package description
* fix: typo
* test: fix
* test: use a field that wouldn't be ignored
* test: replace some `.npmrc` with `pnpm-workspace.yaml`
* docs(changeset): less awkward wordings
* docs(changeset): correction
2025-10-28 17:09:15 +01:00
Zoltan Kochan
6f861bccaa
Merge remote-tracking branch 'origin/main' into v11
2025-09-12 22:35:14 +02:00
Zoltan Kochan
e792927841
feat: support finder functions for performing complex searches with list and why commands ( #9946 )
2025-09-12 11:46:32 +02:00
Zoltan Kochan
491a84fb26
feat: use ESM instead of commonjs ( #9870 )
2025-08-25 10:02:00 +02:00
Zoltan Kochan
facd7656e8
refactor: always use extensions in relative imports ( #9878 )
2025-08-19 15:25:11 +02:00
Zoltan Kochan
cf630a8e84
feat: allow to set multiple pnpmfiles ( #9702 )
2025-07-08 14:54:07 +02:00
Zoltan Kochan
b217bbb4a7
feat: add a new setting for telling pnpm if the env is CI ( #9616 )
...
This is an addition to https://github.com/pnpm/pnpm/pull/8190 . The global virtual store isn't a good choice for CI. So, we disable it even if the setting sets `enableGlobalVirtualStore` to `true`.
2025-06-08 15:00:22 +02:00
v1rtl
acdf26d8cd
refactor: replace strip-ansi with built-in util.stripVTControlCharacters ( #9009 )
2025-01-26 11:44:40 +01:00
Zoltan Kochan
d47c4266db
perf: faster repeat install ( #8838 )
2024-12-08 23:42:33 +01:00
Zoltan Kochan
e9985b6f21
feat!: default value of virtual-store-dir-max-length set to 60 on Windows ( #8556 )
2024-09-23 09:30:45 +02:00
Khải
44b8935997
fix(listing): --json shows wrong private ( #8541 )
...
close #8519
2024-09-22 02:37:50 +02:00
Khải
9b4f73caaf
chore(scripts): typecheck-only ( #8395 )
...
* chore(scripts): typecheck-only
* feat: change all configuration
* feat: include pnpm/ and pnpm/test/
* chore(deps): remove unused dependency
* refactor(typescript-only): use find-packages
* refactor(typescript-only): refactor paths
* fix: typescript-only
* fix: update compile-only
* fix: compile pnpm
* fix: windows
* fix: windows
* chore: meta-updater
* refactor(tsconfig): remove explicit composite
* fix: path in windows
* feat: don't depend on cwd
---------
Co-authored-by: Zoltan Kochan <z@kochan.io >
2024-08-11 08:26:01 +02:00
Brandon Cheng
75a98e12b3
refactor: improve type checking when finding workspace packages ( #8214 )
...
---------
Co-authored-by: Zoltan Kochan <z@kochan.io >
2024-06-17 17:34:54 +02:00
Brandon Cheng
c7e1b6fae8
chore: configure TypeScript project references for tests ( #8128 )
...
* refactor: store link values before converting to references
* fix: use .sort() without localeCompare
https://github.com/pnpm/pnpm/pull/8128#discussion_r1614031566
> Nit, but you probably just want to call sort without a comparison
> function; these are already strings and locale compare is not a good
> comparison for anything but human readable strings since it will
> differ on different people's machines based on their language setting.
> I've hit this too many times before for code gen.
* feat: configure meta-updater to write test/tsconfig.json files
* fix: relative imports for __typings__
* chore: `pnpm run meta-updater`
* fix: explicitly use test/tsconfig.json for ts-jest
2024-05-31 12:48:13 +02:00
Zoltan Kochan
9719a42d0e
feat: configurable max length of directories inside node_modules/.pnpm ( #7994 )
...
close #7355
2024-04-28 11:07:29 +02:00
Zoltan Kochan
a5a3b995c1
test: use sync fs operations in tests ( #7664 )
2024-02-16 19:43:04 +01:00
Zoltan Kochan
d6592964f0
refactor: rootProjectManifestDir is a required option
2023-10-24 15:14:33 +03:00
Zoltan Kochan
aaefb07d0b
fix(list): don't fail on local directory dependencies ( #6911 )
...
close #6873
2023-08-05 12:58:03 +03:00
Zoltan Kochan
09e08a9ae3
test(listing): use local pnpm to install in fixture
2023-07-27 13:29:20 +03:00
Zoltan Kochan
ee61ca4cb7
style: update eslint ( #6236 )
2023-03-18 14:57:29 +02:00
Zoltan Kochan
9cbe293876
refactor: put all non-public projects to directories that start with __
2022-11-20 02:40:44 +02:00
Zoltan Kochan
4ca53b0b50
refactor: group projects in different subdirectories ( #5659 )
2022-11-20 01:35:22 +02:00