Solución:
Puede solucionar el problema con las compilaciones paralelas creando un nuevo directorio para una serie de comandos npm y estableciendo su cache
a ese directorio vacío y luego elimínelo. Igual que:
export npm_config_cache=$(mktemp -d)
npm ...
...
rm -rf $npm_config_cache
Esto eliminaría la necesidad de npm cache clean
ya que siempre comenzaría con un caché vacío.
Como npm-config documentó:
force§ Predeterminado: falso Tipo: Booleano Hace que varios comandos sean más contundentes.
- La falla del script del ciclo de vida no bloquea el progreso.
- publicando clobbers versiones previamente publicadas.
- omite el caché al solicitarlo desde el registro.
- evita las comprobaciones contra la manipulación de archivos que no son npm.
Quizás usar -f
/ --force
es la forma más sencilla de desactivar la caché npm.
npm install --force
En mi caso, estaba enfrentando un problema similar mientras se ejecuta varias instancias de ‘npm install’ en la máquina virtual utilizada para la compilación (Windows)
Dado que era una máquina virtual utilizada solo para la compilación, no había ningún otro programa que bloqueara los archivos. Intenté deshabilitar varias configuraciones de antivirus que no funcionaron. “npm cache clear” y “npm cache verify” funcionaron, pero no fue una solución adecuada para mí, ya que no puedo adivinar cuándo alguien activará un trabajo de compilación de Jenkins para diferentes versiones / entornos que conducen a múltiples instancias de ‘npm install’ y, por lo tanto, No puedo agregarlo al script de compilación ni puedo iniciar sesión en la VM y borrar / eliminar las carpetas de caché manualmente cada vez.
Finalmente, después de investigar un poco, terminé ejecutando “npm install” con una ruta de caché separada para cada trabajo usando el siguiente comando:
npm install --cache path/to/some/folder
Dado que todos los trabajos que se ejecutan al mismo tiempo ahora tenían una ruta de caché separada en lugar de la ruta global común (Users / AppData / Roaming /), este problema se solucionó ya que los trabajos ya no intentaban bloquear y acceder al mismo archivo, desde el caché npm común.
Tenga en cuenta que puede instalar un solo paquete con una ruta de caché de la siguiente manera:
npm install packageName --cache path/to/some/folder
No pude encontrar esta forma de proporcionar una ruta de caché en la documentación de npm, pero lo intenté y funcionó. Estoy usando npm6 y parece que funciona desde npm5 como @ArchNoob mencionado en el comentario