Yarn soporta resoluciones de versión selectiva, que permite definir versiones de paquete de la aduana interior de sus dependencias a través del campo de resolutions en el archivo package.json. Normalmente, esto requeriría modificaciones manuales en el archivo yarn.lock.

¿Por qué querrias hacer esto?

  • Usted puede depender en un paquete que no se actualiza con frecuencia, que depende de otro paquete que tiene una actualización importante. En este caso, si el rango de versión especificado por su dependencia directa no cubre la nueva versión de sub-dependencia, están barados esperando por el autor.

  • Una sub dependencia de su proyecto tiene una actualización de seguridad importante y no quisieras esperar a que su dependencia directa a emitir una actualización de versión mínima.

  • Se basa en un paquete de trabajo pero sin mantenimiento y una de sus dependencias es actualizada. Sabes que la actualización no iba a dañar cosas y no quieren el paquete que se basa en, al actualizar una dependencia menor de la bifurcación.

  • La dependencia define una gama amplia de la versión y su sub-dependencia acaba de recibir una actualización problemática por lo que quiere a prender a una versión anterior.

¿Com usarlo?

Agregar un campo de resolutionsal archivo package.json y definir su versión reemplaza:

package.json

{
  "name": "project",
  "version": "1.0.0",
  "dependencies": {
    "left-pad": "1.0.0",
    "c": "file:../c-1",
    "d2": "file:../d2-1"
  },
  "resolutions": {
    "d2/left-pad": "1.1.1",
    "c/**/left-pad": "1.1.2"
  }
}

Entonces corre yarn install.

Consejos & Trucos

  • Usted recibirá una advertencia si defines una solución válida (como con un nombre de paquete no válido)
  • Usted recibirá una advertencia si su versión de la resolución o del rango no es válido.
  • Usted recibirá una advertencia si su versión de la resolución o el intervalo no es compatible con la gama de la versión original.

Limitaciones & Advertencias

  • Los paquetes anidados pueden no funcionar correctamente.
  • En algunos casos de borde pueden no funcionar correctamente ya que esta es una característica bastante nueva.