quick-format-unescaped@4.0.1 под капотом используется версия 4.0.2, которая ломает работу pino
кроме pino никакой пакет больше не использует quick-format-unescaped
как понять кто добавляет эту версию и как вернуть все на место?
(удаление yarn.lock и node_modules с последующей инсталяцией не помогают - в yarn.lock снова появляется версия 4.0.2)
yarnl.lock
pino@^6.11.1:
version "6.11.1"
resolved "https://registry.yarnpkg.com/pino/-/pino-6.11.1.tgz#5af2d5395cfe625ead9fe64a3b51a4802cd2598e"
integrity sha512-PoDR/4jCyaP1k2zhuQ4N0NuhaMtei+C9mUHBRRJQujexl/bq3JkeL2OC23ada6Np3zeUMHbO4TGzY2D/rwZX3w==
dependencies:
fast-redact "^3.0.0"
fast-safe-stringify "^2.0.7"
flatstr "^1.0.12"
pino-std-serializers "^3.1.0"
quick-format-unescaped "^4.0.1"
sonic-boom "^1.0.2"
quick-format-unescaped@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.2.tgz#dd9ff79fda5e582799cb4e9cbdc9e3f2c7db1266"
integrity sha512-HNPqtTHgal9dBpJxibFGgOEmlaTbwEbplrR+oOiWp9aNFlFKBYfkbvvF8VrJPK65okrZuGOwHKLfe7/gT6NWuw==
а yarn why quick-format-unescaped что показывает?
$ yarn why quick-format-unescaped yarn why v1.22.4 [1/4] Why do we have the module "quick-format-unescaped"...? [2/4] Initialising dependency graph... [3/4] Finding dependency... [4/4] Calculating file sizes... => Found "quick-format-unescaped@4.0.2" info Reasons this module exists - "pino" depends on it - Hoisted from "pino#quick-format-unescaped" info Disk size without dependencies: "32KB" info Disk size with unique dependencies: "32KB" info Disk size with transitive dependencies: "32KB" info Number of shared dependencies: 0 Done in 2.18s. но в package.json у pino прописана версия 4.0.1
а что не так то?) Ты же сам указал, что твой пакет может обновиться до любой версии
у меня он не прописан - это зависимость pino кто его обновляет? у pino в package.json прописана версия 4.0.1 - кто устанавливает 4.0.2?
вот такая форма записи версий ^4.0.1 это позволяет делать
я понимаю что такая запись позволяет, но для этого кто-то должен сказать сделай апгрейд, а никто не говорит такое - удаляю yarn.lock и node_modules и делаю yarn install - должны установиться те зависимости что прописаны без апгрейдов, а по факту устанавливается 4.0.2
так, ладно, я не смог установить зависимости у pino (привет баги npm 7) Все просто ^4.0.1 - позволяет ставить 4.0.*, может даже и минорные (не помню) У пакетов в npm registry нет своего package-lock файла, который бы запретил пакету обновляться. Поэтому подъезжают самые новые версии, которые удовлетворяют условию ^4.0.1
т.е. можно писать issue в pino чтобы зафиксировали версию точно?
да. Но они скорее обновятся просто, чем будут править package.json файл
нет - новая версия ломает функционал - им либо фиксировать версию нужно либо фиксить код под новую версию
ну это в любом случае им разбираться)
сам можешь это проверить есть package.json (но нет lock-файла) { "private": true, "dependencies": { "esbuild": "^0.9.0" } } $ npm i $ cat package-lock.json ... "node_modules/esbuild": { "version": "0.9.1", ...
до сегодняшнего дня я был в уверенности что устанавливаются только те версии что прописаны, а новые по команде апгрейда ...
Если бы зависимости ставились ровно те, что указаны, то при возникновении уязвимости ты бы не мог обновить отдельный какой-то пакет, не дождавшись обновлениях всех библиотек, которые используют эту уязвимую версию. Именно поэтому зависимости ставятся по-умолчанию с ^ в начале, чтобы можно было обновляться.
понял, спасибо ребята в pino завели баг
Обсуждают сегодня