adds devEngines
reggi committed
Sep 17, 2024 at 11:03 UTC
574efb2c92c38a2f578286afa8f45b093b546c0e
1 file changed
+27
content/cli/v10/configuring-npm/package-json.mdx
+27
@@ -905,6 +905,33 @@ Like the `os` option, you can also block architectures:
905
906
The host architecture is determined by `process.arch`
907
908
+### devEngines
909
+
910
+You can specify a `devEngines` property in your `package.json` which will run before `install`, `ci`, and `run` commands.
911
+
912
+The `devEngines` field aids engineers working on a codebase to all be using the same tooling.
913
+
914
+> 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.
915
+
916
+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`.
917
+
918
+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.
919
+
920
+```json
921
+{
922
+ "devEngines": {
923
+ "runtime": {
924
+ "name": "node",
925
+ "onFail": "error"
926
+ },
927
+ "packageManager": {
928
+ "name": "npm",
929
+ "onFail": "error"
930
+ }
931
+ }
932
+}
933
+```
934
+
935
### private
936
937
If you set `"private": true` in your package.json, then npm will refuse to publish it.