Tengo un package.json y algunas de las versiones de dependencias son:
... "dependencies": { "@octopol/common": "workspace:packages/common", } ... Quiero reemplazar todas estas versiones ( workspace:packages/<something> ) con, por ejemplo, 1.0.0 .
Intenté esto:
`"@octopol/common": "workspace:packages/common","@octopol/aa": "workspace:packages/aa",` .replace(/(workspace:packages\/(.*))/g, "1.0.0")esperaba obtener:
"@octopol/common": "1.0.0","@octopol/aa": "1.0.0",
Pero el resultado fue:
'"@octopol/common": "1.0.0'
¿Que me estoy perdiendo aqui?
El .* coincide hasta el final de la línea, y dado que su entrada es una sola línea, /(workspace:packages\/(.*))/g coincide con workspace:packages/ y luego cualquier cero o más caracteres que no sean el salto de línea caracteres, tantos como sea posible, hasta el final de la línea. Necesitas templar el punto de alguna manera.
Una posible solución puede parecer
console.log( `"@octopol/common": "workspace:packages/common","@octopol/aa": "workspace:packages/aa",` .replace(/workspace:packages\/[^"]*/g, "1.0.0") ); donde workspace:packages\/[^"]* coincide
workspace:packages\/ - espacio de workspace:packages/ cadena[^"]* - cero o más caracteres que no sean " . Si la parte que se va a reemplazar no puede contener espacios en blanco, puede precisar aún más el patrón como /workspace:packages\/[^"\s]*/g .