Commit Graph

70 Commits

Author SHA1 Message Date
Khải
90bd3c31f8 feat(config)!: project-specific packageConfigs (#10304)
* feat(config)!: project level `config.yaml`

* test: fix

* refactor: shorten some names

* docs(changeset): change wording

* feat: move project settings to pnpm-workspace.yaml

* test: remove unneeded fixture

* docs(changeset): correct

* refactor: replace validation with creation

* docs: consistent terminology

* perf: validate once

* test: projectConfig

* refactor: explicitly use `undefined`

* refactor: reuse `ProjectConfigRecord`

* chore(deps): remove unused dependency

* style: remove extra pipe character

* refactor: rename to `projectConfigs`

* feat: flatten `projectConfig` with `match`

* refactor: correct error class names

* docs(changeset): update

* test: fix

* feat: rename to `packageConfigs`

Rename `projectConfigs` to `packageConfigs` in the workspace manifest.

The term "project config" is still used internally, because, internally,
"project" refers to workspace packages whilst "package" refers to 3rd party
packages and dependencies.

* docs(changeset): clarify `project-N`
2025-12-21 12:01:18 +01:00
Zoltan Kochan
0048667db4 refactor: use Maps instead of Records (#10312) 2025-12-15 11:48:19 +01:00
Zoltan Kochan
7e12e5bf71 fix: update run-groups to v4 2025-12-10 17:17:40 +01:00
Zoltan Kochan
05fb1aee5f fix: reporting ignored dependency builds (#10276) 2025-12-06 16:32:19 +01:00
Zoltan Kochan
4362c06005 fix: dependencies that were added to onlyBuiltDependencies should be built on install (#10256) 2025-12-02 15:31:52 +01:00
Zoltan Kochan
dab9abef5c Merge remote-tracking branch 'origin/main' into v11 2025-10-24 14:19:07 +02:00
Zoltan Kochan
dee39ecb8a feat: support allowing the build of specific versions of dependencies (#10104)
close #10076
2025-10-21 12:38:16 +02:00
Zoltan Kochan
3df6702bcb fix: update load-json-file, write-json-file, write-pkg 2025-08-28 11:37:38 +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
15ba5ab931 fix: rebuild should not fail if an index file is not found in the store (#9788) 2025-07-23 11:48:46 +02:00
btea
ab155a5990 fix: pnpm rebuild should not add ignored built pkg to ignoredBuilds (#9344)
close #9338
2025-07-03 22:51:43 +02:00
Zoltan Kochan
b3898dbb1e fix: take into account the integrities of packages in when calculating the dependency graph hash (#9605)
* fix: take into account the integrities of packages in when calculating the dependency graph hash

* test: fix

* test: fix

* test: fix

* test: fix

* fix: include the package's integirty in the hash as well

* docs: add comment

* perf: hashing deps graph

* fix: deps graph hash

* refactor: calc graph hash

* test: fix

* refactor: calc graph hash

* refactor: rename uniquePkgId to fullPkgId

* docs: add changeset
2025-06-08 01:05:10 +02:00
Zoltan Kochan
b0ead519b3 feat: global virtual store (#8190)
close #1001
2025-06-03 18:18:58 +02:00
modten
36d1448c48 feat: add workspace-concurrency cli option for pack and publish command (#9493)
* refactor: set the default `workspaceConcurrency` to `Math.min(os.availableParallelism(), 4)`

* feat(plugin-commands-publishing): add `workspace-concurrency` cli option for pack and publish

* feat(recursive): add support for `recursive pack`

* feat: get default workspaceConcurrency from config package

* test(config): mock cpus to support Node.js 18
2025-05-09 10:30:21 +02:00
btea
a2903a04ec fix: pnpm rebuild causes approve build list error (#9324)
* fix: pnpm rebuild causes approve build list error

* fix: update

* refactor(rebuild): use read-package-json

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2025-03-24 02:16:39 +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
961dc5d29d feat: add ignored-builds command (#8963)
* feat: add ignored-builds command

* test: ignored-builds

* test: ignored-builds

* fix: document the new command

* refactor: update text

* feat: add approve-builds command

* feat: rebuild approved packages

* fix: ignored builds

* feat: add final approval prompt

* test: approve builds

* refactor: approve-builds
2025-01-25 18:51:35 +01:00
Zoltan Kochan
4771813309 feat: store ignored dependencies list in modules state file (#8903) 2024-12-24 03:01:35 +01:00
Zoltan Kochan
a76da0c53c feat!: remove conversion of lockfile v6 to v9 (#8866) 2024-12-15 14:39:19 +01:00
Zoltan Kochan
298e5dcafd feat!: create a separate directory in the store for index files (#8700) 2024-10-27 21:00:28 +01:00
Zoltan Kochan
aae0808b35 Merge remote-tracking branch 'origin/main' into v10 2024-10-05 02:24:28 +02:00
Khải
83681daf57 fix: install packages with incompatible libc (#8569)
close #7362
2024-09-27 22:46:16 +02:00
Zoltan Kochan
d433cb9c9f feat: adding the package name into the index file name (#8510)
close #8204
2024-09-15 18:26:28 +02:00
Zoltan Kochan
db420ab592 refactor(cafs): create a separate function for creating index file path (#8508) 2024-09-08 14:43:09 +02:00
Zoltan Kochan
c92f4bf282 refactor: rename lockfile-walker to lockfile.walker 2024-07-28 01:42:38 +02:00
Zoltan Kochan
c5ef9b0643 refactor: rename filter-utils to lockfile.utils 2024-07-28 01:35:40 +02:00
Zoltan Kochan
797ef0fc46 refactor: rename lockfile-types to lockfile.types 2024-07-27 14:46:23 +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
Zoltan Kochan
9927c2855a refactor(core): workspace packages (#8248)
Make workspace packages optional.
2024-06-30 15:17:07 +02:00
Zoltan Kochan
7c6c923a3d feat: a new option strict-store-pkg-content-check (#8212)
ref #4724
2024-06-16 21:37:58 +02:00
Zoltan Kochan
13e55b2865 fix: a filtered install should update the lockfile first (#8183)
close #8165
2024-06-12 14:49:39 +02:00
Zoltan Kochan
47341e5004 fix: make the peers suffix shorter (#8177)
ref #7079
2024-06-07 23:37:07 +02:00
Zoltan Kochan
3dd30b1909 refactor: create branded type for project ID (#8164) 2024-06-04 18:30:59 +02:00
Zoltan Kochan
c649954e41 refactor: create a separate type for DepPath (#8094) 2024-05-20 16:11:46 +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
Khải
a8bc9902b6 refactor(exec): type checking perf (#7911) 2024-04-13 00:18:14 +02:00
Zoltan Kochan
0564745b1d style: use unknown in try/catch (#7709) 2024-03-06 01:47:04 +01:00
Zoltan Kochan
5c20db0dd2 feat!: use the same lockfile format in 1-pkg workspace as in multi-pkg one (#7696) 2024-02-29 10:28:29 +01:00
Nacho Aldama
7733f3a943 feat: support scoped client certificates (#7626)
close #7427

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2024-02-14 12:11:12 +01:00
btea
e79ab3847b chore(dep): update @types/node (#7414)
* chore(dep): update @types/node

* chore: update
2023-12-13 14:06:52 +01:00
Zoltan Kochan
d6592964f0 refactor: rootProjectManifestDir is a required option 2023-10-24 15:14:33 +03:00
Zoltan Kochan
6390033cde perf: use a worker for hard linking directories (#7154) 2023-10-19 17:24:49 +03:00
阿豪
4246f41bed feat(graph-sequencer): add package @pnpm/graph-sequencer (#7168)
---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2023-10-15 22:28:05 +03:00
Zoltan Kochan
4aa41ef3a6 perf(rebuild): only link bins if something was built (#7193) 2023-10-11 17:55:54 +03:00
Zoltan Kochan
d774a3196c feat: onlyBuiltDependenciesFile (#7167)
close #7137
2023-10-08 01:50:47 +03:00
Alvis Tang
12f45a83d2 fix: honor never/only-built-dependencies in workspace setup (#7141)
close #7135
close #5407

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2023-10-03 19:42:13 +03:00
LaicZhang
41b5eb7a5b perf: replace startsWith with === (#7138) 2023-09-27 16:32:05 +03:00
Brandon Cheng
e9aa6f682a chore(deps): update TypeScript 5.1.6 -> 5.2.2 (#7016)
* test: use sha512 integrity in fixtures to fix ci break

* test: update snapshots for sha512 fixture change

* chore(deps): remove unneeded peer dependency exception

The `peerDependencyRules.allowedVersions` exception on
`@typescript-eslint/eslint-plugin` no longer seems to be necessary.
Removing it does not introduce any new peer dependency errors on
`pnpm install`.

I suspect this was needed for the
`eslint-config-standard-with-typescript` dependency in the past, but a
@typescript-eslint/eslint-plugin upgrade made it no longer necessary.

* chore(deps): update @typescript-eslint dependencies 5.62.0 -> 6.5.0

@typescript-eslint 6.5.0 is the first version to introduce support for
TypeScript 5.2.

https://github.com/typescript-eslint/typescript-eslint/releases/tag/v6.5.0

```
=============

WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.

You may find that it works just fine, or you may not.

SUPPORTED TYPESCRIPT VERSIONS: >=3.3.1 <5.2.0

YOUR TYPESCRIPT VERSION: 5.2.2

Please only submit bug reports when using the officially supported version.
```

* chore(deps): update eslint-config-standard-with-typescript 37.0.0 -> 39.0.0

Version 38.0.0 is the first version to support @typescript-eslint v6.
https://github.com/standard/eslint-config-standard-with-typescript/releases/tag/v38.0.0

Otherwise the following error appears.

```
> eslint "src/**/*.ts" "test/**/*.ts" "--fix"

Oops! Something went wrong! :(

ESLint: 8.47.0

Error: ../../.eslintrc.json » @pnpm/eslint-config » eslint-config-standard-with-typescript:
        Configuration for rule "@typescript-eslint/restrict-plus-operands" is invalid:
        Value {"checkCompoundAssignments":true} should NOT have additional properties.

    at ConfigValidator.validateRuleOptions (/Users/gluxon/Developer/pnpm/node_modules/.pnpm/@eslint+eslintrc@2.1.2/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:2039:23)
    at /Users/gluxon/Developer/pnpm/node_modules/.pnpm/@eslint+eslintrc@2.1.2/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:2094:18
```

* chore: remove unnecessary disables for restrict-template-expressions

The `@typescript-eslint/restrict-template-expressions` rule relaxed
what types are allowed in template expressions.

c13ce0b4f7 (diff-b852e1e199d2976eee1183fc84ac12a5d42fc61f0ae4b1c290dd54d621546db0)

Many of these disables were for interpolated values that had an `any`
type.

* chore: remove unnecessary disables for restrict-plus-operands

The original error was:

```
Invalid operand for a '+' operation. Operands must each be a number or string. Got `any`. eslint@typescript-eslint/restrict-plus-operands
```

It look like the newer version now allows `any`.

* style: fix errors of prefer-optional-chain and prefer-nullish-coalescing

The `@typescript-eslint/prefer-optional-chain` and
`@typescript-eslint/prefer-nullish-coalescing` rules got a bit
smarter. This commit applies autofixes. I believe the changes should be
equivalent to what existed before.

Example of the new `@typescript-eslint/prefer-optional-chain` lints.

```
pnpm/pkg-manifest/exportable-manifest/src/index.ts
  71:10  error  Prefer using an optional chain expression instead, as it's more concise and easier to read  @typescript-eslint/prefer-optional-chain
  87:10  error  Prefer using an optional chain expression instead, as it's more concise and easier to read  @typescript-eslint/prefer-optional-chain
```

Example of the new `@typescript-eslint/prefer-nullish-coalescing` lints.

```
pnpm/fs/find-packages/src/index.ts
  32:38  error  Prefer using nullish coalescing operator (`??`) instead of a ternary expression, as it is simpler to read  @typescript-eslint/prefer-nullish-coalescing
```

* chore(deps): update TypeScript 5.1.6 -> 5.2.2

* chore(deps): update @yarnpkg/core->@types/lodash override to 4.14.197

This fixes a compilation error that appears on TypeScript 5.2.2. This
error was fixed in a later version of `@types/lodash`.

https://github.com/DefinitelyTyped/DefinitelyTyped/pull/66123

```
../node_modules/.pnpm/@types+lodash@4.14.181/node_modules/@types/lodash/index.d.ts:45:15 - error TS2428: All declarations of 'WeakMap' must have identical type parameters.

45     interface WeakMap<K extends object, V> { }
                 ~~~~~~~

Found 4 errors.
```
2023-08-31 16:27:01 +03:00