docs: improve `devEngines` note (#1535)
This PR improves the docs for `devEngines` and fixes some typos. https://docs.npmjs.com/cli/v11/configuring-npm/package-json#devengines https://docs.npmjs.com/cli/v10/configuring-npm/package-json#devengines
Steven committed
Apr 4, 2025 at 13:29 UTC
c2efb649816e27d37b37da2b21200e4c9ade0d17
2 files changed
+2
-2
content/cli/v10/configuring-npm/package-json.mdx
+1
-1
@@ -903,7 +903,7 @@ The `devEngines` field aids engineers working on a codebase to all be using the
903
904
You can specify a `devEngines` property in your `package.json` which will run before `install`, `ci`, and `run` commands.
905
906
-> Note: `engines` and `devEngines` differ in object shape. They also function very differently. `engines` is designed to alert the user when a dependency uses a differening npm or node version that the project it's being used in, whereas `devEngines` is used to alert people interacting with the source code of a project.
906
+> Note: `devEngines` and `engines` differ in object shape and functionality. `devEngines` is used to declare the intended runtime (node, etc) and/or package manager (npm, etc) to be used by developers working directly in the source code of a project, whereas `engines` is intended for a package to declare the node and/or npm versions it is compatible with.
907
908
The supported keys under the `devEngines` property are `cpu`, `os`, `libc`, `runtime`, and `packageManager`. Each property can be an object or an array of objects. Objects must contain `name`, and optionally can specify `version`, and `onFail`. `onFail` can be `warn`, `error`, or `ignore`, and if left undefined is of the same value as `error`. `npm` will assume that you're running with `node`. Here's an example of a project that will fail if the environment is not `node` and `npm`. If you set `runtime.name` or `packageManager.name` to any other string, it will fail within the npm CLI.
909
content/cli/v11/configuring-npm/package-json.mdx
+1
-1
@@ -928,7 +928,7 @@ The `devEngines` field aids engineers working on a codebase to all be using the
928
929
You can specify a `devEngines` property in your `package.json` which will run before `install`, `ci`, and `run` commands.
930
931
-> Note: `engines` and `devEngines` differ in object shape. They also function very differently. `engines` is designed to alert the user when a dependency uses a differening npm or node version that the project it's being used in, whereas `devEngines` is used to alert people interacting with the source code of a project.
931
+> Note: `devEngines` and `engines` differ in object shape and functionality. `devEngines` is used to declare the intended runtime (node, etc) and/or package manager (npm, etc) to be used by developers working directly in the source code of a project, whereas `engines` is intended for a package to declare the node and/or npm versions it is compatible with.
932
933
The supported keys under the `devEngines` property are `cpu`, `os`, `libc`, `runtime`, and `packageManager`. Each property can be an object or an array of objects. Objects must contain `name`, and optionally can specify `version`, and `onFail`. `onFail` can be `warn`, `error`, or `ignore`, and if left undefined is of the same value as `error`. `npm` will assume that you're running with `node`. Here's an example of a project that will fail if the environment is not `node` and `npm`. If you set `runtime.name` or `packageManager.name` to any other string, it will fail within the npm CLI.
934