Zoltan Kochan
1c8c4e49f5
style: add eslint-plugin-simple-import-sort ( #10947 )
...
Add eslint-plugin-simple-import-sort to enforce consistent import ordering:
- Node.js builtins first
- External packages second
- Relative imports last
- Named imports sorted alphabetically within each statement
2026-03-13 02:02:38 +01:00
Zoltan Kochan
3a5bfaa94f
chore: update zkochan packages to latest versions ( #10930 )
...
Update all packages from zkochan/packages to their latest major versions
and exclude them from minimumReleaseAge requirement. This includes
updating catalog entries, adapting to breaking API changes (default
exports replaced with named exports, sync functions renamed with Sync
suffix), and updating type declarations.
2026-03-11 13:47:46 +01:00
Brandon Cheng
01914345d5
build: enable @typescript-eslint/no-import-type-side-effects ( #10630 )
...
* build: enable `@typescript-eslint/no-import-type-side-effects`
* build: disable `@typescript-eslint/consistent-type-imports`
* chore: apply fixes for `no-import-type-side-effects`
pnpm exec eslint "**/src/**/*.ts" "**/test/**/*.ts" --fix
2026-03-08 00:02:48 +01:00
Zoltan Kochan
543c7e4bae
feat: use global virtual store for global packages and dlx ( #10694 )
...
* feat: use global virtual store for global packages and dlx
* fix(config): remove unnecessary virtualStoreDir override for global installs
When the global virtual store is disabled, the default `node_modules/.pnpm`
path works fine — no need to explicitly override it to `.pnpm`.
2026-03-01 18:03:04 +01:00
Ryo Matsukawa
fa5ff08473
fix(dlx): respect minimumReleaseAgeExclude ( #10572 )
...
close #10338
2026-02-11 02:32:54 +01:00
Maikel van Dort
8eee41691c
feat: add support for catalogs with dlx ( #10434 )
...
* feat: add support for catalogs with dlx
* fix: feedback
* Update .changeset/curly-dryers-jam.md
Co-authored-by: Brandon Cheng <gluxon@users.noreply.github.com >
* Update .changeset/curly-dryers-jam.md
Close #10249
Co-authored-by: Brandon Cheng <gluxon@users.noreply.github.com >
---------
Co-authored-by: Brandon Cheng <gluxon@users.noreply.github.com >
2026-01-26 07:06:36 +01:00
Oleg Pustovit
46de860489
fix(run): fail when no packages have script in filtered recursive run ( #10437 )
...
* fix(run): fail when no packages have script in filtered recursive run
Previously, `pnpm run -r <script>` and `pnpm run --filter <filter> <script>`
would silently succeed with exit code 0 when no packages had the specified
script, as long as a filter was used. This was inconsistent with the
documentation which states "If none of the packages have the command, the
command fails."
This change makes the command fail with ERR_PNPM_RECURSIVE_RUN_NO_SCRIPT in
all cases where no packages have the script, regardless of whether a filter
is used. The `--if-present` flag can be used to suppress this error.
close #6844
2026-01-16 01:49:24 +01:00
Zoltan Kochan
e4d08f920e
fix(exec): preserve user execution cwd ( #10445 )
...
close #5759
close #10403
2026-01-12 15:41:17 +01:00
Zoltan Kochan
095f659720
fix: setting requiredScripts in pnpm-workspace.yaml ( #10404 )
...
close #10261
2026-01-04 16:43:08 +01:00
Zoltan Kochan
71de2b3f2b
feat!: remove use-node-version CLI option and pnpm.executionEnv.nodeVersion manifest field ( #10373 )
2025-12-27 22:41:53 +01:00
月正海角
a297ebc9f6
feat: improve error message for versions not meeting minimumReleaseAge ( #10350 )
...
close #10307
2025-12-22 17:28:52 +01:00
Oren
ba065f6a8b
fix(git-fetcher): block git dependencies from running prepare scripts unless allowed ( #10288 )
...
* fix(git-fetcher): block git dependencies from running prepare scripts unless allowed
* Update exec/prepare-package/src/index.ts
Co-authored-by: Zoltan Kochan <z@kochan.io >
* Also implement in gitHostedTarballFetcher
* refactor: move allowBuild function creation to the store manager
* refactor: pass allowBuild function to fetch function directly
* refactor: revert not needed changes and update changesets
* test: fix
* fix: implemented CR suggestions
* test: fix
* test: fix
---------
Co-authored-by: Zoltan Kochan <z@kochan.io >
2025-12-09 18:25:07 +01:00
Zoltan Kochan
a43166624e
Merge remote-tracking branch 'origin/main' into v11
2025-10-10 10:01:19 +02:00
Zoltan Kochan
2b6100de12
fix: dlx command with minimumReleaseAge set ( #10047 )
...
close #9963
2025-10-08 10:56:07 +02:00
Zoltan Kochan
491a84fb26
feat: use ESM instead of commonjs ( #9870 )
2025-08-25 10:02:00 +02:00
Zoltan Kochan
27cbc09206
style: fix jest-related linting issues ( #9894 )
2025-08-22 21:56:49 +02:00
Zoltan Kochan
facd7656e8
refactor: always use extensions in relative imports ( #9878 )
2025-08-19 15:25:11 +02:00
Zoltan Kochan
c89c93d59b
test: use @jest/globals ( #9877 )
2025-08-19 00:16:25 +02:00
Zoltan Kochan
14c78e81d4
test: use jest.mocked ( #9874 )
2025-08-18 15:22:37 +02:00
btea
9df09dd38e
feat: check the engine when excute the create command ( #9775 )
...
* feat: check the engine when excute the create command
* chore: test case
* test: update
* fix: update
* fix: update
* refactor: use readProjectManifestOnly to do engine checks on dependencies executed by dlx
---------
Co-authored-by: Zoltan Kochan <z@kochan.io >
2025-08-04 13:38:32 +02:00
Khải
6f7ac0f48b
feat: customize supportedArchitectures using CLI ( #9745 )
...
close #7510
2025-07-16 00:56:00 +02:00
Zoltan Kochan
cf630a8e84
feat: allow to set multiple pnpmfiles ( #9702 )
2025-07-08 14:54:07 +02:00
Zoltan Kochan
9362b5fb15
fix: updateConfig in pnpm-workspace.yaml should not be ignored ( #9501 )
...
* fix: updateConfig in pnpm-workspace.yaml should not be ignored
close #9500
* fix: reading executionEnv from pnpm-workspace.yaml
2025-05-08 12:24:43 +02:00
Khải
3b0b740e87
refactor: use toMatchObject ( #9431 )
2025-04-18 18:00:18 +02:00
Zoltan Kochan
64a11f2e37
test(dlx): fix
2025-03-17 12:01:29 +01:00
Zoltan Kochan
c1f09d48fa
fix: dlx with --allow-build flag ( #9281 )
...
close #9263
2025-03-14 02:27:58 +01:00
Brandon Cheng
4885c3708b
test(dlx): use @pnpm.e2e/for-testing-pnpm-dlx from @pnpm/registry-mock ( #9260 )
...
Co-authored-by: Zoltan Kochan <z@kochan.io >
2025-03-13 03:09:14 +01:00
Khải
57f989ef45
fix(exec): add missing node-options to recursive run ( #9264 )
...
* fix(run): add missing `node-options` to `recursive`
Fixes https://github.com/pnpm/pnpm/issues/9180
* refactor: share code
* refactor: remove unused field
2025-03-11 02:52:59 +01:00
Zoltan Kochan
8fcc221394
feat: reading settings from pnpm-workspace.yaml ( #9121 )
...
Related discussion: https://github.com/orgs/pnpm/discussions/9037
close #9033
2025-02-22 02:10:43 +01:00
Zoltan Kochan
c52f55af30
refactor: create exec.pnpm-cli-runner ( #9064 )
2025-02-08 22:34:19 +01:00
Khải
265946bb6d
fix: verify-deps-before-run after install --prod|--no-optional ( #9055 )
...
close #9019
2025-02-07 12:36:58 +01:00
Zoltan Kochan
b5ba5350bf
feat(dlx): add an option to dlx for providing a list of deps that are allowed to run install scripts ( #9026 )
2025-02-03 14:46:28 +01:00
Khải
c96eb2b042
fix(lifecycle): skip verify for install hooks ( #8957 )
...
close #8954
---------
Co-authored-by: Zoltan Kochan <z@kochan.io >
2025-01-10 23:14:27 +01:00
Zoltan Kochan
d47c4266db
perf: faster repeat install ( #8838 )
2024-12-08 23:42:33 +01:00
Zoltan Kochan
7d7c51ecd6
feat!: dlx should use exact versions of packages in the cache key ( #8811 )
...
close #8722
2024-11-27 09:04:42 +01:00
Zoltan Kochan
7997ed4ae2
fix: running install automatically before run ( #8805 )
2024-11-25 14:02:17 +01:00
Zoltan Kochan
4dd27a894f
feat: add an option to install dependencies before running scripts ( #8781 )
2024-11-25 09:02:12 +01:00
btea
ef7c10221c
fix: pnpm exec should specify command ( #8774 )
2024-11-17 17:07:32 +01:00
Khải
19d5b51558
feat(exec): check dependencies before running scripts ( #8645 )
...
* refactor: break a long line into multiple lines
* feat: cache that tracks workspace structures
* feat: handle hash collisions
* docs(changeset): packages-list-cache
* feat(packages-list-cache): store mtime
* fix(packages-list-cache): JSON5 and YAML manifests
* feat(packages-list-cache): add catalogs
* style: sort fields alphabetically
* fix: actually fix it
* lint: fix
* lint: fix
* test(packages-list-cache): test
* feat(exec): check deps before run scripts
Resolves https://github.com/pnpm/pnpm/issues/8585
* style: fix eslint
* feat: use a single lastValidatedTimestamp
* refactor: rearrange
* perf: don't do pointless comparisons
* perf: optimize non-workspace
* perf: optimize sharedWorkspaceLockfile=false
* perf: remove unnecessary fs reads
* refactor: statManifestFile
* perf: skip comparing manifest to lockfile by stats
* feat: add wantedLockfileDir to error message
* refactor: shorten a function name
* refactor: rename a function
* docs: improve wordings
* feat: export `linkedPackagesAreUpToDate`
* feat: make sure lockfile specs satisfy manifest (wip)
* docs: todo
* fix: projectId
* feat: skip install-related scripts
* fix: type errors
* refactor: use tagged union
* refactor: remove unnecessary type expression
* docs: todo
* feat: add linkedPackagesAreUpToDate (wip)
* refactor: rearrange fields
* refactor: remove a temporary variable
* feat: export `getWorkspacePackagesByDirectory`
* feat: make workspacePackages optional
* feat: complete `linkedPackagesAreUpToDate`
* docs: remove unapplicable todo
* docs: explain why check is skipped
* feat: load allProjects and try again
* refactor: remove unused dependencies
* refactor: remove commented-out code
* refactor: replace `else if` with `return`
* feat: use-case without workspace manifest
* perf: skip unnecessary work
* feat: add a guard
* fix: eslint
* refactor: move code to new package
* refactor: sort dependencies
* test: outline
* refactor: extract assertLockfilesEqual for testing
* test: skip failing tests for now
* fix: eslint
* test: assertLockfilesEqual
* refactor: extract statManifestFile for testing
* test: todo
* test: statManifestFile
* test: shouldRunCheck
* refactor: rename a test file
* test: add
* test: todo
* docs: remove a commented-out code
* test: create groups
* test: todo
* test: add
* test: platform agnostic
* test: remove unnecessary scripts
* test: use `assert.strictEqual` instead
* test: export bin locations
* test: nested `pnpm run`
* test: todo
* test: add `cwd` option to `execPnpmSync`
* test: add
* fix: recursive
* test: add
* test: fix package names
* fix: catalogs comparison
* test: add
* refactor: just use ramda filter
* test: add
* test: mutations
* fix: package.json
* fix: jest
* feat(packages-list): debug logs
* feat: add debug messages
* fix: eslint
* test: check debug messages in other case
* docs: add next step
* test: mtime updates without modification
* docs: correct test description
* test: mtime changes
* test: check should be skipped
* docs: remove fulfilled todos
* fix: remove `.only`
* docs: todo
* docs: correct test names
* test: workspace structure changes
* test: packages list cache
* test: add
* refactor: divide a test file into 2
* docs: consistent wordings
* refactor: clearer error messages
* fix: ignore check in recursive nested scripts
* test: no dependencies
* test: print error messages on failures
* test: improve stdout/stderr in error messages
* docs: consistent wordings
* docs: clarify what did what
* test: nested script
* docs: consistent test descriptions
* docs(changeset): correction
* fix: save catalogs to packages list
* test: catalogs
* test: fix
* test: fix windows
* refactor: remove unused option field
* refactor: prefer `!= null`
* feat: use `node_modules` instead
* refactor: rename a package
* refactor: apply suggestion
* refactor: remove workspaceDir
* refactor: move `shouldRunCheck` to `exec`
* feat: rename config key
* refactor: rename a test dir
* refactor: correct grammar
* refactor: make loadPackagesList sync
* test: multiple lockfiles
* feat: prevent deletion of `node_modules`
* feat: skip checking on filtered install
* fix: accidentally dropping catalogs
* refactor: remove unnecessary `Promise.all`
* refactor: use `virtualStoreDir` from config
* refactor: split `opts` into `ctx` and `opts`
* test: fix
* style: fix eslint
* test: fix windows
* feat(exec): add `verifyDepsBeforeRun` to `exec`
* refactor: sync stat
* feat: stop ignoring filtered install
* test: filtered install
* refactor: rearrange imports
* feat: rename "packages list" to "workspace state"
* test: fix
* fix: workspace state on failed install
2024-11-15 01:01:09 +01:00
Jonathan Hefner
8c3de19fc1
fix(dlx): ENOENT when symlink=false ( #8732 ) ( #8733 )
...
Prior to this commit, if `symlink` was set to `false` (such as in an RC
file), `dlx` would throw `ENOENT` because it expected the
`node_modules/the-package` symlink to exist:
```console
$ pnpm config get symlink
false
$ rm -rf ~/.cache/pnpm/
$ pnpm dlx the-package
Packages: +1
+
Progress: resolved 1, reused 1, downloaded 0, added 1, done
ENOENT ENOENT: no such file or directory, open '/home/${USER}/.cache/pnpm/dlx/.../
node_modules/the-package/package.json'
```
This commit filters the `symlink` option before installing the package,
allowing the symlink to be created, preventing the error.
Fixes #8732 .
2024-11-06 10:43:35 +01:00
btea
934f1836f1
fix: script command regular parameters do not support the v flag ( #8711 )
2024-11-03 21:32:40 +01:00
Zoltan Kochan
74c6dd3cca
fix!: the test command should pass all args to the underlying script ( #8619 )
2024-10-09 01:36:00 +02: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
Zoltan Kochan
f10256d088
feat!: use SHA256 for creating cache keys for dlx ( #8531 )
2024-09-16 02:36:06 +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
Khải
5aa98b6d6f
fix(dlx/cache): account for customized registries ( #8299 )
...
* fix(dlx/cache): account for customized registries
Different registries potentially return different packages for the same
name, so reusing dlx cache for packages from a different registry would
be incorrect.
* style: eslint
* refactor: dlx
---------
Co-authored-by: Zoltan Kochan <z@kochan.io >
2024-07-13 17:06:14 +02:00
Khải
0ef168b77d
feat: per-package node version ( #8277 )
...
close #6720
2024-07-13 14:08:57 +02:00
Zoltan Kochan
0406d4ad3d
refactor: use a branded type for project root dir paths ( #8272 )
2024-07-04 13:13:34 +02:00
Zoltan Kochan
dd00eeb18c
refactor: normalize dir field names across project objects ( #8262 )
2024-07-01 11:27:04 +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