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
engineStrict
ahora está en desuso, por lo que esto solo dará una advertencia. Ahora depende del usuario ejecutarnpm config set engine-strict true
si quiere esto.Actualización 2
Como señaló Ben a continuación, la creación de un
.npmrc
archivo en la raíz de su proyecto (el mismo nivel que su archivo package.json) con el textoengine-strict=true
forzará un error durante la instalación si la versión del Nodo no es compatible.fuente
engineStrict
ha 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=true
a su .npmrc ahora tiene el mismo efectoAñadir
a
package.json
al archivo
.npmrc
(cerca delpackage.json
mismo directorio)fuente
npm install
; trabaja conyarn
asípackage.json
con una sección de "motores" similar a la anterior (11.13.0
y6.7.0
), y una.npmrc
con 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,
engineStrict
ahora 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
.nvmrc
Si 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
.nvmrc
archivo 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:
.nvmrc
está documentado en: https://github.com/creationix/nvm/tree/02997b0753f66c9790c6016ed022ed2072c22603#nvmrccd
Se 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
node
es 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-sass
lugar de solonode-sass
. No estoy seguro si es igual para todos los archivos .bin.Un ejemplo de caso de prueba Mocha:
fuente