Tengo un proyecto Node.js que requiere Node versión 12 o superior. ¿Hay alguna forma de especificar esto en el archivo packages.json, para que el instalador verifique e informe a los usuarios automáticamente si necesitan actualizar?
261

Respuestas:
Creo que puedes usar el campo "motores":
Como está diciendo que su código definitivamente no funcionará con ninguna versión anterior, probablemente también desee el indicador "engineStrict":
La documentación para el archivo package.json se puede encontrar en el sitio npmjs
Actualizar
engineStrictahora está en desuso, por lo que esto solo dará una advertencia. Ahora depende del usuario ejecutarnpm config set engine-strict truesi quiere esto.Actualización 2
Como señaló Ben a continuación, la creación de un
.npmrcarchivo en la raíz de su proyecto (el mismo nivel que su archivo package.json) con el textoengine-strict=trueforzará un error durante la instalación si la versión del Nodo no es compatible.fuente
engineStrictha quedado en desuso durante varios meses, produciendo advertencias cuando se usó. Comenzando con npm @ 3, el valor de se ignora el campo, y las violaciones del motor solo producirán advertencias. Si, como usuario, desea una aplicación estricta del campo de los motores, simplemente ejecute npm config set engine-estricto verdadero "cd .. && npm i <folder-name>para verificar el proyecto en sí. Sin embargo, esto desencadenará una construcción completa en sí mismo.engine-strict=truea su .npmrc ahora tiene el mismo efectoAñadir
a
package.jsonal archivo
.npmrc(cerca delpackage.jsonmismo directorio)fuente
npm install; trabaja conyarnasípackage.jsoncon una sección de "motores" similar a la anterior (11.13.0y6.7.0), y una.npmrccon nada más que el contenido especificado anteriormente. Nvm me cambió a una versión de nodo anterior, luego ejecuténpm install, pero solo instala las dependencias y ni siquiera menciona la falta de coincidencia de la versión del motor.Al igual que dijo Ibam,
engineStrictahora está en desuso. Pero he encontrado esta solución:check-version.js:
package.json:
Obtenga más información aquí: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4
.nvmrc
Y una cosa más. Se puede usar un archivo de puntos '.nvmrc' para requerir una versión de nodo específica: https://github.com/creationix/nvm#nvmrc
Pero, solo es respetado por los scripts npm (y los scripts de hilo).
fuente
.nvmrcSi está utilizando NVM de esta manera , lo que probablemente debería, entonces puede indicar la versión de nodejs requerida para un proyecto determinado en un
.nvmrcarchivo con seguimiento de git :Esto no tiene efecto automáticamente
cd, lo cual es sensato: el usuario debe hacer lo siguiente:y ahora esa versión del nodo se usará para el shell actual.
Puede enumerar las versiones de nodo que tiene con:
.nvmrcestá documentado en: https://github.com/creationix/nvm/tree/02997b0753f66c9790c6016ed022ed2072c22603#nvmrccdSe preguntó cómo seleccionar automáticamente la versión de ese nodo en: Cambiar automáticamente a la versión correcta del Nodo según el proyectoProbado con NVM 0.33.11.
fuente
Hay otra forma más simple de hacer esto:
npm install Node@8(guarda el Nodo 8 como dependencia en package.json)Esto funciona porque
nodees solo un paquete que envía el nodo como paquete binario. Solo incluye como node_module / .bin, lo que significa que solo hace que el nodo esté disponible para empaquetar scripts. No es la carcasa principal.Vea la discusión en Twitter aquí: https://twitter.com/housecor/status/962347301456015360
fuente
./node node-sasslugar de solonode-sass. No estoy seguro si es igual para todos los archivos .bin.Un ejemplo de caso de prueba Mocha:
fuente