├── README.md ├── dependency-path.md ├── lockfile ├── 3.1.md ├── 3.2.md ├── 3.3.md ├── 3.4.md ├── 3.5.md ├── 3.6.md ├── 3.7.md ├── 3.8.md ├── 3.9.md ├── 3.md ├── 4.md ├── 5.2.md ├── 5.md ├── 6.0.md ├── 9.0.md └── README.md ├── node-modules-layout └── README.md ├── package-id.md ├── store └── README.md └── workspace └── filtering.md /README.md: -------------------------------------------------------------------------------- 1 | # pnpm specifications 2 | -------------------------------------------------------------------------------- /dependency-path.md: -------------------------------------------------------------------------------- 1 | # Dependency path 2 | 3 | A path to a dependency with a specific set of resolved subdependencies. 4 | It is always a valid filesystem path. 5 | It mostly equals the [package ID](package-id.md) of the dependency but may differ when: 6 | 7 | 1. The package has peer dependencies which are resolved neither by its own dependencies nor with top dependencies. 8 | 2. The package has dependencies with peer dependencies that are resolved from higher in the dependency tree. 9 | 10 | In those cases the package path has the next format: `_` (in shrinkwrap version <=4, it is `/`) 11 | 12 | E.g., if `foo@1.0.0` dependends on peers `bar@2.0.0` and `@scope/qar@3.0.0` then its path is: `/registry.npmjs.org/foo/1.0.0_bar@2.0.0+@scope+qar@3.0.0` (in shrinkwrap version <=4 `/registry.npmjs.org/foo/1.0.0/bar@2.0.0+@scope!qar@3.0.0`.). 13 | 14 | Peer specs are joined with `+` and if a peer is scoped then the `/` symbol is escaped with `+` as well (or with `!` in shrinkwrap version <=4). 15 | 16 | ## Relative path 17 | 18 | -------------------------------------------------------------------------------- /lockfile/3.1.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 3.1 2 | 3 | ## File format 4 | 5 | File name: `shrinkwrap.yaml` 6 | 7 | ### shrinkwrapVersion 8 | 9 | `3` 10 | 11 | ### shrinkwrapMinorVersion 12 | 13 | `1` 14 | 15 | ### registry 16 | 17 | Indicates what registry should be used for installing the dependencies. E.g.: `https://registry.npmjs.org/`. 18 | 19 | ### specifiers 20 | 21 | ### dependencies 22 | 23 | ### devDependencies 24 | 25 | ### optionalDependencies 26 | 27 | ### packages 28 | 29 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 30 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 31 | registry differs from the one specified as default in the shrinkwrap file. 32 | 33 | ### packages[dependencyPath].name 34 | 35 | Is only present when the package name is not in the `dependencyPath`. 36 | 37 | ### packages[dependencyPath].version 38 | 39 | Is only present when the package version is not in the `dependencyPath`. 40 | 41 | ### packages[dependencyPath].id 42 | 43 | The universal identifier of the package. Read more about package id [here](../package-id.md). 44 | It is only present when the dependency's package ID differs from its `dependencyPath`. 45 | 46 | ### packages[dependencyPath].dev 47 | 48 | If true then this dependency is either a development dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 49 | 50 | ### packages[dependencyPath].optional 51 | 52 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 53 | 54 | All optional dependencies should be included even if they're uninstallable on the current platform. 55 | 56 | ### packages[dependencyPath].dependencies 57 | 58 | This is a mapping of a dependency's dependency names to exact versions. 59 | 60 | ### packages[dependencyPath].optionalDependencies 61 | 62 | This is a mapping of a dependency's optional dependency names to exact versions. 63 | 64 | ### packages[dependencyPath].peerDependencies 65 | 66 | ### packages[dependencyPath].engines 67 | 68 | ### packages[dependencyPath].os 69 | 70 | ### packages[dependencyPath].cpu 71 | 72 | ### packages[dependencyPath].deprecated 73 | 74 | ### packages[dependencyPath].bundledDependencies 75 | -------------------------------------------------------------------------------- /lockfile/3.2.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 3.2 2 | 3 | File name: `shrinkwrap.yaml` 4 | 5 | ## Changes 6 | 7 | 1. The `packages[dependencyPath].dev` field is `false` when a dependency is neither a development dependency ONLY 8 | of the top level module nor a transitive dependency of one. 9 | 10 | ## File format 11 | 12 | ### shrinkwrapVersion 13 | 14 | `3` 15 | 16 | ### shrinkwrapMinorVersion 17 | 18 | `2` 19 | 20 | ### registry 21 | 22 | Indicates what registry should be used for installing the dependencies. E.g.: `https://registry.npmjs.org/`. 23 | 24 | ### specifiers 25 | 26 | ### dependencies 27 | 28 | ### devDependencies 29 | 30 | ### optionalDependencies 31 | 32 | ### packages 33 | 34 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 35 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 36 | registry differs from the one specified as default in the shrinkwrap file. 37 | 38 | ### packages[dependencyPath].name 39 | 40 | Is only present when the package name is not in the `dependencyPath`. 41 | 42 | ### packages[dependencyPath].version 43 | 44 | Is only present when the package version is not in the `dependencyPath`. 45 | 46 | ### packages[dependencyPath].id 47 | 48 | The universal identifier of the package. Read more about package id [here](../package-id.md). 49 | It is only present when the dependency's package ID differs from its `dependencyPath`. 50 | 51 | ### packages[dependencyPath].dev 52 | 53 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 54 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 55 | 56 | ### packages[dependencyPath].optional 57 | 58 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 59 | 60 | All optional dependencies should be included even if they're uninstallable on the current platform. 61 | 62 | ### packages[dependencyPath].dependencies 63 | 64 | This is a mapping of a dependency's dependency names to exact versions. 65 | 66 | ### packages[dependencyPath].optionalDependencies 67 | 68 | This is a mapping of a dependency's optional dependency names to exact versions. 69 | 70 | ### packages[dependencyPath].peerDependencies 71 | 72 | ### packages[dependencyPath].engines 73 | 74 | ### packages[dependencyPath].os 75 | 76 | ### packages[dependencyPath].cpu 77 | 78 | ### packages[dependencyPath].deprecated 79 | 80 | ### packages[dependencyPath].bundledDependencies 81 | -------------------------------------------------------------------------------- /lockfile/3.3.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 3.3 2 | 3 | File name: `shrinkwrap.yaml` 4 | 5 | ## Changes 6 | 7 | 1. non-npm-hosted packages can have alias names 8 | 9 | ## File format 10 | 11 | ### shrinkwrapVersion 12 | 13 | `3` 14 | 15 | ### shrinkwrapMinorVersion 16 | 17 | `3` 18 | 19 | ### registry 20 | 21 | Indicates what registry should be used for installing the dependencies. E.g.: `https://registry.npmjs.org/`. 22 | 23 | ### specifiers 24 | 25 | ### dependencies 26 | 27 | ### devDependencies 28 | 29 | ### optionalDependencies 30 | 31 | ### packages 32 | 33 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 34 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 35 | registry differs from the one specified as default in the shrinkwrap file. 36 | 37 | ### packages[dependencyPath].name 38 | 39 | Is only present when the package name is not in the `dependencyPath`. 40 | 41 | ### packages[dependencyPath].version 42 | 43 | Is only present when the package version is not in the `dependencyPath`. 44 | 45 | ### packages[dependencyPath].id 46 | 47 | The universal identifier of the package. Read more about package id [here](../package-id.md). 48 | It is only present when the dependency's package ID differs from its `dependencyPath`. 49 | 50 | ### packages[dependencyPath].dev 51 | 52 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 53 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 54 | 55 | ### packages[dependencyPath].optional 56 | 57 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 58 | 59 | All optional dependencies should be included even if they're uninstallable on the current platform. 60 | 61 | ### packages[dependencyPath].dependencies 62 | 63 | This is a mapping of a dependency's dependency names to exact versions. 64 | 65 | ### packages[dependencyPath].optionalDependencies 66 | 67 | This is a mapping of a dependency's optional dependency names to exact versions. 68 | 69 | ### packages[dependencyPath].peerDependencies 70 | 71 | ### packages[dependencyPath].engines 72 | 73 | ### packages[dependencyPath].os 74 | 75 | ### packages[dependencyPath].cpu 76 | 77 | ### packages[dependencyPath].deprecated 78 | 79 | ### packages[dependencyPath].bundledDependencies 80 | -------------------------------------------------------------------------------- /lockfile/3.4.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 3.4 2 | 3 | File name: `shrinkwrap.yaml` 4 | 5 | ## Changes 6 | 7 | 1. npm-hosted packages can have alias names 8 | 9 | ## File format 10 | 11 | ### shrinkwrapVersion 12 | 13 | `3` 14 | 15 | ### shrinkwrapMinorVersion 16 | 17 | `4` 18 | 19 | ### registry 20 | 21 | Indicates what registry should be used for installing the dependencies. E.g.: `https://registry.npmjs.org/`. 22 | 23 | ### specifiers 24 | 25 | ### dependencies 26 | 27 | ### devDependencies 28 | 29 | ### optionalDependencies 30 | 31 | ### packages 32 | 33 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 34 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 35 | registry differs from the one specified as default in the shrinkwrap file. 36 | 37 | ### packages[dependencyPath].name 38 | 39 | Is only present when the package name is not in the `dependencyPath`. 40 | 41 | ### packages[dependencyPath].version 42 | 43 | Is only present when the package version is not in the `dependencyPath`. 44 | 45 | ### packages[dependencyPath].id 46 | 47 | The universal identifier of the package. Read more about package id [here](../package-id.md). 48 | It is only present when the dependency's package ID differs from its `dependencyPath`. 49 | 50 | ### packages[dependencyPath].dev 51 | 52 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 53 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 54 | 55 | ### packages[dependencyPath].optional 56 | 57 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 58 | 59 | All optional dependencies should be included even if they're uninstallable on the current platform. 60 | 61 | ### packages[dependencyPath].dependencies 62 | 63 | This is a mapping of a dependency's dependency names to exact versions. 64 | 65 | ### packages[dependencyPath].optionalDependencies 66 | 67 | This is a mapping of a dependency's optional dependency names to exact versions. 68 | 69 | ### packages[dependencyPath].peerDependencies 70 | 71 | ### packages[dependencyPath].engines 72 | 73 | ### packages[dependencyPath].os 74 | 75 | ### packages[dependencyPath].cpu 76 | 77 | ### packages[dependencyPath].deprecated 78 | 79 | ### packages[dependencyPath].bundledDependencies 80 | -------------------------------------------------------------------------------- /lockfile/3.5.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 3.5 2 | 3 | File name: `shrinkwrap.yaml` 4 | 5 | ## Changes 6 | 7 | 1. packages that need to be built have a `requiresBuild: true` field (https://github.com/pnpm/pnpm/issues/1109) 8 | 9 | ## File format 10 | 11 | ### shrinkwrapVersion 12 | 13 | `3` 14 | 15 | ### shrinkwrapMinorVersion 16 | 17 | `5` 18 | 19 | ### registry 20 | 21 | Indicates what registry should be used for installing the dependencies. E.g.: `https://registry.npmjs.org/`. 22 | 23 | ### specifiers 24 | 25 | ### dependencies 26 | 27 | ### devDependencies 28 | 29 | ### optionalDependencies 30 | 31 | ### packages 32 | 33 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 34 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 35 | registry differs from the one specified as default in the shrinkwrap file. 36 | 37 | ### packages[dependencyPath].name 38 | 39 | Is only present when the package name is not in the `dependencyPath`. 40 | 41 | ### packages[dependencyPath].version 42 | 43 | Is only present when the package version is not in the `dependencyPath`. 44 | 45 | ### packages[dependencyPath].id 46 | 47 | The universal identifier of the package. Read more about package id [here](../package-id.md). 48 | It is only present when the dependency's package ID differs from its `dependencyPath`. 49 | 50 | ### packages[dependencyPath].dev 51 | 52 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 53 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 54 | 55 | ### packages[dependencyPath].optional 56 | 57 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 58 | 59 | All optional dependencies should be included even if they're uninstallable on the current platform. 60 | 61 | ### packages[dependencyPath].dependencies 62 | 63 | This is a mapping of a dependency's dependency names to exact versions. 64 | 65 | ### packages[dependencyPath].optionalDependencies 66 | 67 | This is a mapping of a dependency's optional dependency names to exact versions. 68 | 69 | ### packages[dependencyPath].peerDependencies 70 | 71 | ### packages[dependencyPath].engines 72 | 73 | ### packages[dependencyPath].os 74 | 75 | ### packages[dependencyPath].cpu 76 | 77 | ### packages[dependencyPath].deprecated 78 | 79 | ### packages[dependencyPath].bundledDependencies 80 | 81 | ### packages[dependencyPath].requiresBuild 82 | 83 | This field is `true` if the package has lifecycle scripts or the package is a native module that needs to be built. 84 | -------------------------------------------------------------------------------- /lockfile/3.6.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 3.6 2 | 3 | File name: `shrinkwrap.yaml` 4 | 5 | ## Changes 6 | 7 | 1. git-hosted packages that have a prepare script get a `prepare: true` field (https://github.com/pnpm/pnpm/issues/1085) 8 | 9 | ## File format 10 | 11 | ### shrinkwrapVersion 12 | 13 | `3` 14 | 15 | ### shrinkwrapMinorVersion 16 | 17 | `6` 18 | 19 | ### registry 20 | 21 | Indicates what registry should be used for installing the dependencies. E.g.: `https://registry.npmjs.org/`. 22 | 23 | ### specifiers 24 | 25 | ### dependencies 26 | 27 | ### devDependencies 28 | 29 | ### optionalDependencies 30 | 31 | ### packages 32 | 33 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 34 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 35 | registry differs from the one specified as default in the shrinkwrap file. 36 | 37 | ### packages[dependencyPath].name 38 | 39 | Is only present when the package name is not in the `dependencyPath`. 40 | 41 | ### packages[dependencyPath].version 42 | 43 | Is only present when the package version is not in the `dependencyPath`. 44 | 45 | ### packages[dependencyPath].id 46 | 47 | The universal identifier of the package. Read more about package id [here](../package-id.md). 48 | It is only present when the dependency's package ID differs from its `dependencyPath`. 49 | 50 | ### packages[dependencyPath].dev 51 | 52 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 53 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 54 | 55 | ### packages[dependencyPath].optional 56 | 57 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 58 | 59 | All optional dependencies should be included even if they're uninstallable on the current platform. 60 | 61 | ### packages[dependencyPath].dependencies 62 | 63 | This is a mapping of a dependency's dependency names to exact versions. 64 | 65 | ### packages[dependencyPath].optionalDependencies 66 | 67 | This is a mapping of a dependency's optional dependency names to exact versions. 68 | 69 | ### packages[dependencyPath].peerDependencies 70 | 71 | ### packages[dependencyPath].engines 72 | 73 | ### packages[dependencyPath].os 74 | 75 | ### packages[dependencyPath].cpu 76 | 77 | ### packages[dependencyPath].deprecated 78 | 79 | ### packages[dependencyPath].bundledDependencies 80 | 81 | ### packages[dependencyPath].requiresBuild 82 | 83 | This field is `true` if the package has lifecycle scripts or the package is a native module that needs to be built. 84 | 85 | ### packages[dependencyPath].prepare 86 | 87 | This field is `true` if the package is a git-hosted package and it has a "prepare" lifecycle script. 88 | -------------------------------------------------------------------------------- /lockfile/3.7.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 3.7 2 | 3 | File name: `shrinkwrap.yaml` 4 | 5 | ## Changes 6 | 7 | 1. directory dependencies are always prefixed with `link:` 8 | 9 | ## File format 10 | 11 | ### shrinkwrapVersion 12 | 13 | `3` 14 | 15 | ### shrinkwrapMinorVersion 16 | 17 | `6` 18 | 19 | ### registry 20 | 21 | Indicates what registry should be used for installing the dependencies. E.g.: `https://registry.npmjs.org/`. 22 | 23 | ### specifiers 24 | 25 | ### dependencies 26 | 27 | ### devDependencies 28 | 29 | ### optionalDependencies 30 | 31 | ### packages 32 | 33 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 34 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 35 | registry differs from the one specified as default in the shrinkwrap file. 36 | 37 | ### packages[dependencyPath].name 38 | 39 | Is only present when the package name is not in the `dependencyPath`. 40 | 41 | ### packages[dependencyPath].version 42 | 43 | Is only present when the package version is not in the `dependencyPath`. 44 | 45 | ### packages[dependencyPath].id 46 | 47 | The universal identifier of the package. Read more about package id [here](../package-id.md). 48 | It is only present when the dependency's package ID differs from its `dependencyPath`. 49 | 50 | ### packages[dependencyPath].dev 51 | 52 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 53 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 54 | 55 | ### packages[dependencyPath].optional 56 | 57 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 58 | 59 | All optional dependencies should be included even if they're uninstallable on the current platform. 60 | 61 | ### packages[dependencyPath].dependencies 62 | 63 | This is a mapping of a dependency's dependency names to exact versions. 64 | 65 | ### packages[dependencyPath].optionalDependencies 66 | 67 | This is a mapping of a dependency's optional dependency names to exact versions. 68 | 69 | ### packages[dependencyPath].peerDependencies 70 | 71 | ### packages[dependencyPath].engines 72 | 73 | ### packages[dependencyPath].os 74 | 75 | ### packages[dependencyPath].cpu 76 | 77 | ### packages[dependencyPath].deprecated 78 | 79 | ### packages[dependencyPath].bundledDependencies 80 | 81 | ### packages[dependencyPath].requiresBuild 82 | 83 | This field is `true` if the package has lifecycle scripts or the package is a native module that needs to be built. 84 | 85 | ### packages[dependencyPath].prepare 86 | 87 | This field is `true` if the package is a git-hosted package and it has a "prepare" lifecycle script. 88 | -------------------------------------------------------------------------------- /lockfile/3.8.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 3.8 2 | 3 | File name: `shrinkwrap.yaml` 4 | 5 | ## Changes 6 | 7 | 1. packages that have bin commands get a `hasBin: true` field (https://github.com/pnpm/pnpm/issues/1239) 8 | 9 | ## File format 10 | 11 | ### shrinkwrapVersion 12 | 13 | `3` 14 | 15 | ### shrinkwrapMinorVersion 16 | 17 | `6` 18 | 19 | ### registry 20 | 21 | Indicates what registry should be used for installing the dependencies. E.g.: `https://registry.npmjs.org/`. 22 | 23 | ### specifiers 24 | 25 | ### dependencies 26 | 27 | ### devDependencies 28 | 29 | ### optionalDependencies 30 | 31 | ### packages 32 | 33 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 34 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 35 | registry differs from the one specified as default in the shrinkwrap file. 36 | 37 | ### packages[dependencyPath].name 38 | 39 | Is only present when the package name is not in the `dependencyPath`. 40 | 41 | ### packages[dependencyPath].version 42 | 43 | Is only present when the package version is not in the `dependencyPath`. 44 | 45 | ### packages[dependencyPath].id 46 | 47 | The universal identifier of the package. Read more about package id [here](../package-id.md). 48 | It is only present when the dependency's package ID differs from its `dependencyPath`. 49 | 50 | ### packages[dependencyPath].dev 51 | 52 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 53 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 54 | 55 | ### packages[dependencyPath].optional 56 | 57 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 58 | 59 | All optional dependencies should be included even if they're uninstallable on the current platform. 60 | 61 | ### packages[dependencyPath].dependencies 62 | 63 | This is a mapping of a dependency's dependency names to exact versions. 64 | 65 | ### packages[dependencyPath].optionalDependencies 66 | 67 | This is a mapping of a dependency's optional dependency names to exact versions. 68 | 69 | ### packages[dependencyPath].peerDependencies 70 | 71 | ### packages[dependencyPath].engines 72 | 73 | ### packages[dependencyPath].os 74 | 75 | ### packages[dependencyPath].cpu 76 | 77 | ### packages[dependencyPath].deprecated 78 | 79 | ### packages[dependencyPath].bundledDependencies 80 | 81 | ### packages[dependencyPath].requiresBuild 82 | 83 | This field is `true` if the package has lifecycle scripts or the package is a native module that needs to be built. 84 | 85 | ### packages[dependencyPath].prepare 86 | 87 | This field is `true` if the package is a git-hosted package and it has a "prepare" lifecycle script. 88 | 89 | ### packages[dependencyPath].hasBin 90 | 91 | This field is `true` if the package has bin commands. 92 | -------------------------------------------------------------------------------- /lockfile/3.9.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 3.9 2 | 3 | File name: `shrinkwrap.yaml` 4 | 5 | ## Changes 6 | 7 | 1. packages specified via tarball URLs hosted by the default registry are saved as regular semver dependencies in `shrinkwrap.yaml`. (see https://github.com/pnpm/pnpm/issues/1292) 8 | 9 | ## File format 10 | 11 | ### shrinkwrapVersion 12 | 13 | `3` 14 | 15 | ### shrinkwrapMinorVersion 16 | 17 | `9` 18 | 19 | ### registry 20 | 21 | Indicates what registry should be used for installing the dependencies. E.g.: `https://registry.npmjs.org/`. 22 | 23 | ### specifiers 24 | 25 | ### dependencies 26 | 27 | ### devDependencies 28 | 29 | ### optionalDependencies 30 | 31 | ### packages 32 | 33 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 34 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 35 | registry differs from the one specified as default in the shrinkwrap file. 36 | 37 | ### packages[dependencyPath].name 38 | 39 | Is only present when the package name is not in the `dependencyPath`. 40 | 41 | ### packages[dependencyPath].version 42 | 43 | Is only present when the package version is not in the `dependencyPath`. 44 | 45 | ### packages[dependencyPath].id 46 | 47 | The universal identifier of the package. Read more about package id [here](../package-id.md). 48 | It is only present when the dependency's package ID differs from its `dependencyPath`. 49 | 50 | ### packages[dependencyPath].dev 51 | 52 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 53 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 54 | 55 | ### packages[dependencyPath].optional 56 | 57 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 58 | 59 | All optional dependencies should be included even if they're uninstallable on the current platform. 60 | 61 | ### packages[dependencyPath].dependencies 62 | 63 | This is a mapping of a dependency's dependency names to exact versions. 64 | 65 | ### packages[dependencyPath].optionalDependencies 66 | 67 | This is a mapping of a dependency's optional dependency names to exact versions. 68 | 69 | ### packages[dependencyPath].peerDependencies 70 | 71 | ### packages[dependencyPath].engines 72 | 73 | ### packages[dependencyPath].os 74 | 75 | ### packages[dependencyPath].cpu 76 | 77 | ### packages[dependencyPath].deprecated 78 | 79 | ### packages[dependencyPath].bundledDependencies 80 | 81 | ### packages[dependencyPath].requiresBuild 82 | 83 | This field is `true` if the package has lifecycle scripts or the package is a native module that needs to be built. 84 | 85 | ### packages[dependencyPath].prepare 86 | 87 | This field is `true` if the package is a git-hosted package and it has a "prepare" lifecycle script. 88 | 89 | ### packages[dependencyPath].hasBin 90 | 91 | This field is `true` if the package has bin commands. 92 | -------------------------------------------------------------------------------- /lockfile/3.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 3 2 | 3 | ## File format 4 | 5 | File name: `shrinkwrap.yaml` 6 | 7 | ### shrinkwrapVersion 8 | 9 | `3` 10 | 11 | ### registry 12 | 13 | Indicates what registry should be used for installing the dependencies. E.g.: `https://registry.npmjs.org/`. 14 | 15 | ### specifiers 16 | 17 | ### dependencies 18 | 19 | ### devDependencies 20 | 21 | ### optionalDependencies 22 | 23 | ### packages 24 | 25 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 26 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 27 | registry differs from the one specified as default in the shrinkwrap file. 28 | 29 | ### packages[dependencyPath].name 30 | 31 | Is only present when the package name is not in the `dependencyPath`. 32 | 33 | ### packages[dependencyPath].version 34 | 35 | Is only present when the package version is not in the `dependencyPath`. 36 | 37 | ### packages[dependencyPath].id 38 | 39 | The universal identifier of the package. Read more about package id [here](../package-id.md). 40 | It is only present when the dependency's package ID differs from its `dependencyPath`. 41 | 42 | ### packages[dependencyPath].dev 43 | 44 | If true then this dependency is either a development dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 45 | 46 | ### packages[dependencyPath].optional 47 | 48 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 49 | 50 | All optional dependencies should be included even if they're uninstallable on the current platform. 51 | 52 | ### packages[dependencyPath].dependencies 53 | 54 | This is a mapping of a dependency's dependency names to exact versions. 55 | 56 | ### packages[dependencyPath].optionalDependencies 57 | 58 | This is a mapping of a dependency's optional dependency names to exact versions. 59 | -------------------------------------------------------------------------------- /lockfile/4.md: -------------------------------------------------------------------------------- 1 | # Shrinkwrap version 4 - shared format 2 | 3 | ## Changes 4 | 5 | 1. `registry` field removed 6 | 2. `shrinkwrapMinorVersion` removed 7 | 3. `shrinkwrapVersion` is a ComVer instead of a number 8 | 9 | ## File format 10 | 11 | File name: `shrinkwrap.yaml` 12 | 13 | ### shrinkwrapVersion 14 | 15 | A [ComVer](https://github.com/staltz/comver) starting with the major number `4`. `4.0` is written as `4`. 16 | 17 | 18 | 19 | ### importers 20 | 21 | ### importers[relativePath].specifiers 22 | 23 | ### importers[relativePath].dependencies 24 | 25 | ### importers[relativePath].devDependencies 26 | 27 | ### importers[relativePath].optionalDependencies 28 | 29 | ### packages 30 | 31 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 32 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 33 | registry differs from the one specified as default in the shrinkwrap file. 34 | 35 | ### packages[dependencyPath].name 36 | 37 | Is only present when the package name is not in the `dependencyPath`. 38 | 39 | ### packages[dependencyPath].version 40 | 41 | Is only present when the package version is not in the `dependencyPath`. 42 | 43 | ### packages[dependencyPath].id 44 | 45 | The universal identifier of the package. Read more about package id [here](../package-id.md). 46 | It is only present when the dependency's package ID differs from its `dependencyPath`. 47 | 48 | ### packages[dependencyPath].dev 49 | 50 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 51 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 52 | 53 | ### packages[dependencyPath].optional 54 | 55 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 56 | 57 | All optional dependencies should be included even if they're uninstallable on the current platform. 58 | 59 | ### packages[dependencyPath].dependencies 60 | 61 | This is a mapping of a dependency's dependency names to exact versions. 62 | 63 | ### packages[dependencyPath].optionalDependencies 64 | 65 | This is a mapping of a dependency's optional dependency names to exact versions. 66 | 67 | ### packages[dependencyPath].peerDependencies 68 | 69 | ### packages[dependencyPath].engines 70 | 71 | ### packages[dependencyPath].os 72 | 73 | ### packages[dependencyPath].cpu 74 | 75 | ### packages[dependencyPath].deprecated 76 | 77 | ### packages[dependencyPath].bundledDependencies 78 | 79 | ### packages[dependencyPath].requiresBuild 80 | 81 | This field is `true` if the package has lifecycle scripts or the package is a native module that needs to be built. 82 | 83 | ### packages[dependencyPath].prepare 84 | 85 | This field is `true` if the package is a git-hosted package and it has a "prepare" lifecycle script. 86 | 87 | ### packages[dependencyPath].hasBin 88 | 89 | This field is `true` if the package has bin commands. 90 | -------------------------------------------------------------------------------- /lockfile/5.2.md: -------------------------------------------------------------------------------- 1 | # Lockfile version 5.2 2 | 3 | ## Changes 4 | 5 | * subdependencies may have linked dependencies. The links are relative to the lockfile's directory. Related PR: [pnpm/pnpm#2554](https://github.com/pnpm/pnpm/pull/2554) 6 | * peer dependencies that have the same name as the package are ignored. Related PR: [#2926](https://github.com/pnpm/pnpm/pull/2926) 7 | 8 | ## File format 9 | 10 | File name: `pnpm-lock.yaml` 11 | 12 | ### lockfileVersion 13 | 14 | A [ComVer](https://github.com/staltz/comver) starting with the major number `4`. `4.0` is written as `4`. 15 | 16 | ### packages 17 | 18 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 19 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 20 | registry differs from the one specified as default in the shrinkwrap file. 21 | 22 | ### packages[dependencyPath].name 23 | 24 | Is only present when the package name is not in the `dependencyPath`. 25 | 26 | ### packages[dependencyPath].version 27 | 28 | Is only present when the package version is not in the `dependencyPath`. 29 | 30 | ### packages[dependencyPath].id 31 | 32 | The universal identifier of the package. Read more about package id [here](../package-id.md). 33 | It is only present when the dependency's package ID differs from its `dependencyPath` and the package is not hosted by a npm-compatible registry. 34 | 35 | ### packages[dependencyPath].dev 36 | 37 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 38 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 39 | 40 | ### packages[dependencyPath].optional 41 | 42 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 43 | 44 | All optional dependencies should be included even if they're uninstallable on the current platform. 45 | 46 | ### packages[dependencyPath].dependencies 47 | 48 | This is a mapping of a dependency's dependency names to exact versions. 49 | 50 | ### packages[dependencyPath].optionalDependencies 51 | 52 | This is a mapping of a dependency's optional dependency names to exact versions. 53 | 54 | ### packages[dependencyPath].peerDependencies 55 | 56 | ### packages[dependencyPath].engines 57 | 58 | ### packages[dependencyPath].os 59 | 60 | ### packages[dependencyPath].cpu 61 | 62 | ### packages[dependencyPath].deprecated 63 | 64 | ### packages[dependencyPath].bundledDependencies 65 | 66 | ### packages[dependencyPath].requiresBuild 67 | 68 | This field is `true` if the package has lifecycle scripts or the package is a native module that needs to be built. 69 | 70 | ### packages[dependencyPath].prepare 71 | 72 | This field is `true` if the package is a git-hosted package and it has a "prepare" lifecycle script. 73 | 74 | ### packages[dependencyPath].hasBin 75 | 76 | This field is `true` if the package has bin commands. 77 | 78 | ## Fields that are present in dedicated shrinkwrap 79 | 80 | ### specifiers 81 | 82 | ### dependencies 83 | 84 | ### devDependencies 85 | 86 | ### optionalDependencies 87 | 88 | ## Fields that are present in a shared shrinkwrap 89 | 90 | ### importers 91 | 92 | ### importers[relativePath].specifiers 93 | 94 | ### importers[relativePath].dependencies 95 | 96 | ### importers[relativePath].devDependencies 97 | 98 | ### importers[relativePath].optionalDependencies 99 | -------------------------------------------------------------------------------- /lockfile/5.md: -------------------------------------------------------------------------------- 1 | # Lockfile version 5 2 | 3 | ## Changes 4 | 5 | 1. `registry` field removed 6 | 1. `shrinkwrapMinorVersion` removed 7 | 1. `shrinkwrapVersion` is a ComVer instead of a number 8 | 1. `shrinkwrapVersion` renamed to `lockfileVersion` 9 | 1. When a package depends on peer dependencies, its dependency path contains the specs of the resolved peers separated by `_`. So the depndency path that was `/foo/1.0.0/bar@1.0.0` in shrinkwrap version 3/4, is now `/foo/1.0.0_bar@1.0.0` 10 | 1. Packages hosted by npm-compatible registry have never an id field specified. It is always possible to get the ID of such packages from their dependency path 11 | 1. Resolved scoped peers are escaped by `+` in dependency path (they were escaped by `!` in shrinkwrap version 3/4). 12 | 1. The lockfile is removed from `shrinkwrap.yaml` to `pnpm-lock.yaml`. 13 | 14 | ## File format 15 | 16 | File name: `pnpm-lock.yaml` 17 | 18 | ### lockfileVersion 19 | 20 | A [ComVer](https://github.com/staltz/comver) starting with the major number `4`. `4.0` is written as `4`. 21 | 22 | ### packages 23 | 24 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo/1.0.0`) if the dependency 25 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo/1.0.0`) if the package's 26 | registry differs from the one specified as default in the shrinkwrap file. 27 | 28 | ### packages[dependencyPath].name 29 | 30 | Is only present when the package name is not in the `dependencyPath`. 31 | 32 | ### packages[dependencyPath].version 33 | 34 | Is only present when the package version is not in the `dependencyPath`. 35 | 36 | ### packages[dependencyPath].id 37 | 38 | The universal identifier of the package. Read more about package id [here](../package-id.md). 39 | It is only present when the dependency's package ID differs from its `dependencyPath` and the package is not hosted by a npm-compatible registry. 40 | 41 | ### packages[dependencyPath].dev 42 | 43 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 44 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 45 | 46 | ### packages[dependencyPath].optional 47 | 48 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 49 | 50 | All optional dependencies should be included even if they're uninstallable on the current platform. 51 | 52 | ### packages[dependencyPath].dependencies 53 | 54 | This is a mapping of a dependency's dependency names to exact versions. 55 | 56 | ### packages[dependencyPath].optionalDependencies 57 | 58 | This is a mapping of a dependency's optional dependency names to exact versions. 59 | 60 | ### packages[dependencyPath].peerDependencies 61 | 62 | ### packages[dependencyPath].engines 63 | 64 | ### packages[dependencyPath].os 65 | 66 | ### packages[dependencyPath].cpu 67 | 68 | ### packages[dependencyPath].deprecated 69 | 70 | ### packages[dependencyPath].bundledDependencies 71 | 72 | ### packages[dependencyPath].requiresBuild 73 | 74 | This field is `true` if the package has lifecycle scripts or the package is a native module that needs to be built. 75 | 76 | ### packages[dependencyPath].prepare 77 | 78 | This field is `true` if the package is a git-hosted package and it has a "prepare" lifecycle script. 79 | 80 | ### packages[dependencyPath].hasBin 81 | 82 | This field is `true` if the package has bin commands. 83 | 84 | ## Fields that are present in dedicated shrinkwrap 85 | 86 | ### specifiers 87 | 88 | ### dependencies 89 | 90 | ### devDependencies 91 | 92 | ### optionalDependencies 93 | 94 | ## Fields that are present in a shared shrinkwrap 95 | 96 | ### importers 97 | 98 | ### importers[relativePath].specifiers 99 | 100 | ### importers[relativePath].dependencies 101 | 102 | ### importers[relativePath].devDependencies 103 | 104 | ### importers[relativePath].optionalDependencies 105 | -------------------------------------------------------------------------------- /lockfile/6.0.md: -------------------------------------------------------------------------------- 1 | # Lockfile version 6.0 2 | 3 | ## Changes 4 | 5 | * [Lockfile v6](https://github.com/pnpm/pnpm/pull/5810) is adopted. This new format improves the readability of the lockfile by removing hashes from package IDs. It also has some rearrangement of fields in the `importers` section. **The new `pnpm-lock.yaml` file is more resistant to git merge conflicts!** 6 | * The registry field is removed from the `resolution` object in `pnpm-lock.yaml`. 7 | * A lockfile is generated even for projects with no dependencies. 8 | 9 | ## File format 10 | 11 | File name: `pnpm-lock.yaml` 12 | 13 | ### lockfileVersion 14 | 15 | A [ComVer](https://github.com/staltz/comver) starting with the major number `4`. 16 | 17 | ### packages 18 | 19 | This is a mapping of dependency path to dependency object. The [dependency path](../dependency-path.md) is relative (e.g., `/foo@1.0.0`) if the dependency 20 | is from the registry specified in the registry property, or absolute (e.g., `registry.node-modules.io/foo@1.0.0`) if the package's 21 | registry differs from the one specified as default in the shrinkwrap file. 22 | 23 | ### packages[dependencyPath].name 24 | 25 | Is only present when the package name is not in the `dependencyPath`. 26 | 27 | ### packages[dependencyPath].version 28 | 29 | Is only present when the package version is not in the `dependencyPath`. 30 | 31 | ### packages[dependencyPath].id 32 | 33 | The universal identifier of the package. Read more about package id [here](../package-id.md). 34 | It is only present when the dependency's package ID differs from its `dependencyPath` and the package is not hosted by a npm-compatible registry. 35 | 36 | ### packages[dependencyPath].dev 37 | 38 | If `false` then this dependency is neither a development dependency ONLY of the top level module nor a transitive dependency of one. This is not set for dependencies that are both a development dependency of the top level and a transitive dependency of a non-development dependency of the top level. 39 | It is `true` when the dependency is not a top level or a transitive prod dependency but only a dev one. 40 | 41 | ### packages[dependencyPath].optional 42 | 43 | If true then this dependency is either an optional dependency ONLY of the top level module or a transitive dependency of one. This is false for dependencies that are both an optional dependency of the top level and a transitive dependency of a non-optional dependency of the top level. 44 | 45 | All optional dependencies should be included even if they're uninstallable on the current platform. 46 | 47 | ### packages[dependencyPath].dependencies 48 | 49 | This is a mapping of a dependency's dependency names to exact versions. 50 | 51 | ### packages[dependencyPath].optionalDependencies 52 | 53 | This is a mapping of a dependency's optional dependency names to exact versions. 54 | 55 | ### packages[dependencyPath].peerDependencies 56 | 57 | ### packages[dependencyPath].engines 58 | 59 | ### packages[dependencyPath].os 60 | 61 | ### packages[dependencyPath].cpu 62 | 63 | ### packages[dependencyPath].deprecated 64 | 65 | ### packages[dependencyPath].bundledDependencies 66 | 67 | ### packages[dependencyPath].requiresBuild 68 | 69 | This field is `true` if the package has lifecycle scripts or the package is a native module that needs to be built. 70 | 71 | ### packages[dependencyPath].prepare 72 | 73 | This field is `true` if the package is a git-hosted package and it has a "prepare" lifecycle script. 74 | 75 | ### packages[dependencyPath].hasBin 76 | 77 | This field is `true` if the package has bin commands. 78 | 79 | ## Fields that are present in dedicated shrinkwrap 80 | 81 | ### specifiers 82 | 83 | ### dependencies 84 | 85 | ### devDependencies 86 | 87 | ### optionalDependencies 88 | 89 | ## Fields that are present in a shared shrinkwrap 90 | 91 | ### importers 92 | 93 | ### importers[relativePath][dependencyType][dependencyName].specifier 94 | 95 | `dependencyType` is one of `dependencies`, `optionalDependencies`, or `devDependencies`. 96 | 97 | ### importers[relativePath][dependencyType][dependencyName].version 98 | 99 | -------------------------------------------------------------------------------- /lockfile/9.0.md: -------------------------------------------------------------------------------- 1 | # Lockfile version 9.0 2 | 3 | ## File format 4 | 5 | File name: `pnpm-lock.yaml` 6 | 7 | ### lockfileVersion 8 | 9 | A [ComVer](https://github.com/staltz/comver) starting with the major number `9`. 10 | 11 | ### packages 12 | 13 | This is a mapping of dependency ID (`@`) to dependency object. 14 | 15 | ### packages[dependencyId].peerDependencies 16 | 17 | ### packages[dependencyId].peerDependenciesMeta 18 | 19 | ### packages[dependencyId].engines 20 | 21 | ### packages[dependencyId].os 22 | 23 | ### packages[dependencyId].cpu 24 | 25 | ### packages[dependencyId].libc 26 | 27 | ### packages[dependencyId].deprecated 28 | 29 | ### packages[dependencyId].bundledDependencies 30 | 31 | ### packages[dependencyId].resolution 32 | 33 | ### packages[dependencyId].hasBin 34 | 35 | This field is `true` if the package has bin commands. 36 | 37 | ## snapshots 38 | 39 | This is a mapping of all the dependencies of dependencies. Every entry in this record matches a directory inside the virtual store (`node_modules/.pnpm`). The keys are called dependency paths. A dependency path is a dependency ID and optionaly a peer dependencies suffix. A peer dependency suffix is a string concatenated from the dependency paths of the resolved peer dependencies of the given dependency. For instance, if `button@1.0.0` has `react` in peer dependencies, a dependency ID may look like this: `button@1.0.0(react@16.0.0)`. If react has peer dependencies of its own, the dependency path may become more complicated, e.g.: `button@1.0.0(react@16.0.0(react-dom@16.0.0))`. 40 | 41 | ### snapshots[dependencyPath].dependencies 42 | 43 | This is a mapping of a dependency's dependency names to exact versions. 44 | 45 | ### snapshots[dependencyPath].optionalDependencies 46 | 47 | This is a mapping of a dependency's optional dependency names to exact versions. 48 | 49 | ### snapshots[dependencyPath].transitivePeerDependencies 50 | 51 | ### importers 52 | 53 | ### importers[relativePath][dependencyType][dependencyName].specifier 54 | 55 | `dependencyType` is one of `dependencies`, `optionalDependencies`, or `devDependencies`. 56 | 57 | ### importers[relativePath][dependencyType][dependencyName].version 58 | 59 | -------------------------------------------------------------------------------- /lockfile/README.md: -------------------------------------------------------------------------------- 1 | # Specifications of pnpm's lockfile 2 | 3 | The purpose of pnpm's lockfile is to freeze the state of `node_modules`. It has the same purpose as npm's `package-lock.json` and Yarn's `yarn.lock`. 4 | 5 | ## Relation of pnpm version to lockfile version 6 | 7 | | lockfile version | used by pnpm versions | 8 | | -- | -- | 9 | | 9.0 | >=9.0.0 | 10 | | 6.0 | >=8.0.0 <9.0.0 | 11 | | 5.4 | >=7.0.0 <8.0.0 | 12 | | 5.3 | >=6.0.0 | 13 | | 5.2 | >=5.10.0 | 14 | | 5.1 | >=3.5.0 | 15 | | 5.0 | >=3.0.0 | 16 | | 3.9 and 4.0 | >=2.17.0 | 17 | | 3.9 | >=2.13.3 | 18 | | 3.8 | >=2.8.0 | 19 | | 3.7 | >=2.0.0 | 20 | | 3.6 | >=1.43.0 | 21 | | 3.5 | >=1.40.0 | 22 | | 3.4 | >=1.23.0 | 23 | | 3.3 | >=1.22.0 | 24 | | 3.2 | >=1.18.1 | 25 | | 3.1 | >=1.17 <1.18.1 | 26 | | 3 | >=1 <1.17 | 27 | | 2 | >=0.62 <1 | 28 | -------------------------------------------------------------------------------- /node-modules-layout/README.md: -------------------------------------------------------------------------------- 1 | ## Relation of pnpm version to `node_modules` layout version 2 | 3 | | node_modules layout version | used by pnpm versions | 4 | | -- | -- | 5 | | 1 | 1, 2 | 6 | | 2 | 3 | 7 | | 3 | 4 | 8 | | 4 | 5 | 9 | -------------------------------------------------------------------------------- /package-id.md: -------------------------------------------------------------------------------- 1 | # Package ID 2 | 3 | An identifier that can be used to detect the source of the package. 4 | Is always a valid filesystem path. 5 | 6 | ## Packages from npm-compatible registries 7 | 8 | `//` 9 | 10 | E.g.: 11 | 12 | ``` 13 | registry.npmjs.org/gulp/2.1.0 14 | registry.npmjs.org/@cycle/dom/14.1.0 15 | registry.node-modules.io/@wmhilton/log/1.1.0 16 | ``` 17 | 18 | If the registry origin has a protocol then the `:` is substituted with a `+`. 19 | 20 | ``` 21 | localhost+4873/foo/1.0.0 22 | ``` 23 | 24 | ## Packages from Git 25 | 26 | `//` 27 | 28 | E.g.: `github.com/alexGugel/ied/b246270b53e43f1dc469df0c9b9ce19bb881e932` 29 | -------------------------------------------------------------------------------- /store/README.md: -------------------------------------------------------------------------------- 1 | ## Relation of pnpm version to store version 2 | 3 | | store version | used by pnpm versions | 4 | | -- | -- | 5 | | 2 | 1,2,3,4 | 6 | | 3 | 5,6,7 | 7 | -------------------------------------------------------------------------------- /workspace/filtering.md: -------------------------------------------------------------------------------- 1 | # Workspace filtering 2 | 3 | When running commands on a workspace, it is possible to limit them to a subset of packages. 4 | pnpm supports package selectors that can be used together with its `recursive` commands: 5 | 6 | ```sh 7 | pnpm recursive [arg..] -- [selector...] 8 | # or 9 | pnpm recursive [arg..] --filter --filter ... 10 | ``` 11 | 12 | When packages in the workspace are filtered, every package is taken that matches at least one of 13 | the selectors. 14 | 15 | ## Selecting by path 16 | 17 | Selectors that start with `./` are selectors by filesystem path. Selectors by path don't support globs. 18 | 19 | ### Examples 20 | 21 | Select all packages in the `packages` folder: 22 | 23 | ```sh 24 | pnpm recursive install -- ./packages 25 | ``` 26 | 27 | ## Selecting by package name 28 | 29 | Selectors that don't start with `./` are selectors by package name. 30 | 31 | ### Selecting only the specified packages 32 | 33 | To select an exact package, just specify its name. For insance, 34 | the following command will be applied on `foo`, `bar` and `@pnpm/config`: 35 | 36 | ``` 37 | pnpm recursive install -- foo bar @pnpm/config 38 | ``` 39 | 40 | ### Selecting a package with dependencies 41 | 42 | To select a package and its dependencies (direct and non-direct), suffix the package name with 3 dots: `...`. 43 | For instance, the next command will run installation in all dependencies of `foo` and in `foo`: 44 | 45 | ``` 46 | pnpm recursive install -- foo... 47 | ``` 48 | 49 | ### Selecting a package with dependents 50 | 51 | To select a package and its dependent packages (direct and non-direct), prefix the package name with 3 dots: `...`. 52 | For instance, the next command will run installation in all dependents of `foo` and in `foo`: 53 | 54 | ``` 55 | pnpm recursive install -- ...foo 56 | ``` 57 | 58 | ### Selecting transitive packages 59 | 60 | To select all packages that are between two packages in the dependency graph, the two package names 61 | should be concatenated with `..`: `..`. 62 | The following command is performed on all transitive deps of `foo` and `bar` (including `foo` and `bar`): 63 | 64 | ``` 65 | pnpm recursive install -- foo..bar 66 | ``` 67 | 68 | ### Combining selectors 69 | 70 | Selecting all dependents and dependencies: ` -- ......` 71 | 72 | Selecting dependencies of `pkg2` and transitive dependencies between `pkg1` ang `pkg2`: ` -- pkg1..pkg2...` 73 | --------------------------------------------------------------------------------