-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't bust cache on new workspace packages #1304
Comments
It's not just adding a new package. If you change version of any namespaces package, then package-lock.json in the root directory also changes to reflect that causing all packages to be rebuilt, even if nothing depends on it. We just stopped updating versions altogether because of this. |
I realize this isn't very straight forward to implement, but generally speaking, blindly invalidating the cache isn't so great. If a single workspace package adds or changes the version of a dependency, there's really no reason to invalidate the cache for other packages which don't depend on it. Smarter parsing of the lock file could make a huge difference in cache efficiency |
Based on the documentation I believe it will parse lockfiles, at least |
I'm not sure about Yarn - but to the best of my knowledge, yarn doesn't add workspace dependencies to the lockfile anyway - but with pnpm, any change to the lockfile seems to bust the cache completely |
Take a look at https://turborepo.org/docs/core-concepts/caching#hashing at the end there's a note that for yarn it parses the lockfile, but apparently not for npm and pnpm for whatever reason. Yarn uses the same lockfile for all the workspaces in a project, and it gets modified by any change to dependencies (presumably as with npm and pnpm). |
I guess if you take a look at why npm/pnpm are not currently supported you could try to fix it and submit a PR. |
My Related Discussion: #1501 |
Any update on parsing of the pnpm lock file? We have many and frequently changing packages, which basically eliminates turborepo's value proposition for us. We really don't want to give up pnpm or Turborepo, but as things stand, we will have to |
Supporting |
Thank you. This is great |
@gsoltis Is there any expected timeframe on this? |
@Moriz-code no ETA until we start the effort; we always have to weigh any task against our other priorities. |
@nathanhammond Of course. I just got the impression the effort did start with #1819 being merged and from @gsoltis's comment saying this is an area of active development. We're hit pretty hard by this |
Has this been fixed in |
It definitely is an issue with |
Any update on this? |
|
I installed a new package from NPM in one of the workspaces and the problem still exists. When running a command through We use pnpm. The environment: |
@Dwlad90 just to confirm, the hash changes for every package, not just the ones that depend on the package you added a dependency to? |
@gsoltis The package was installed to high level workspace without dependents. Before running Tasks: 133 successful, 133 total
Cached: 133 cached, 133 total
Time: 1.568s >>> FULL TURBO After:
It is a output of --- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -751,6 +751,7 @@ importers:
react: ^18.1.0
react-dom: ^18.1.0
request: ^2.88.2
+ start-server-and-test: ^1.15.4
style9: ^0.14.0
dependencies:
'@babel/runtime': 7.20.1
@@ -786,6 +787,7 @@ importers:
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
request: 2.88.2
+ start-server-and-test: 1.15.4
style9: 0.14.0_rollup@2.79.1
devDependencies:
'list': link:../../button
@@ -12060,6 +12062,16 @@ packages:
- supports-color
dev: true
+ /@hapi/hoek/9.3.0:
+ resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
+ dev: false
+
+ /@hapi/topo/5.1.0:
+ resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+ dependencies:
+ '@hapi/hoek': 9.3.0
+ dev: false
+
/@humanwhocodes/config-array/0.11.8:
resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
engines: {node: '>=10.10.0'}
@@ -13229,6 +13241,20 @@ packages:
- zenObservable
dev: true
+ /@sideway/address/4.1.4:
+ resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==}
+ dependencies:
+ '@hapi/hoek': 9.3.0
+ dev: false
+
+ /@sideway/formula/3.0.1:
+ resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
+ dev: false
+
+ /@sideway/pinpoint/2.0.0:
+ resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
+ dev: false
+
/@sinclair/typebox/0.24.51:
resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==}
dev: true
@@ -17769,6 +17795,10 @@ packages:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
dev: true
+ /arg/5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+ dev: false
+
/argparse/1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
dependencies:
@@ -18012,6 +18042,15 @@ packages:
engines: {node: '>=4'}
dev: true
+ /axios/0.27.2_debug@4.3.4:
+ resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==}
+ dependencies:
+ follow-redirects: 1.15.2
+ form-data: 4.0.0
+ transitivePeerDependencies:
+ - debug
+ dev: false
+
/axobject-query/3.1.1:
resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==}
dependencies:
@@ -18352,6 +18391,10 @@ packages:
readable-stream: 3.6.0
dev: true
+ /bluebird/3.7.2:
+ resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
+ dev: false
+
/body-parser/1.20.1:
resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -18842,6 +18885,11 @@ packages:
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
dev: true
+ /check-more-types/2.24.0:
+ resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==}
+ engines: {node: '>= 0.8.0'}
+ dev: false
+
/chokidar/3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
@@ -20653,7 +20701,7 @@ packages:
debug: 4.3.4
enhanced-resolve: 5.12.0
eslint: 8.33.0
- eslint-plugin-import: 2.27.5_if77esrytrhk7yc75txn6gudsm
+ eslint-plugin-import: 2.27.5_eslint@8.33.0
get-tsconfig: 4.3.0
globby: 13.1.3
is-core-module: 2.11.0
@@ -20708,36 +20756,6 @@ packages:
- supports-color
dev: true
- /eslint-module-utils/2.7.4_bg2inndrnsca3qrlavn5qkmhtq:
- resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: '*'
- eslint-import-resolver-node: '*'
- eslint-import-resolver-typescript: '*'
- eslint-import-resolver-webpack: '*'
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
- eslint:
- optional: true
- eslint-import-resolver-node:
- optional: true
- eslint-import-resolver-typescript:
- optional: true
- eslint-import-resolver-webpack:
- optional: true
- dependencies:
- '@typescript-eslint/parser': 5.48.2_o2s6jvgtr2hafiobaqfgu6k2l4
- debug: 3.2.7
- eslint: 8.33.0
- eslint-import-resolver-node: 0.3.7
- eslint-import-resolver-typescript: 3.5.3_ohdts44xlqyeyrlje4qnefqeay
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/eslint-module-utils/2.7.4_jzfr6h2a6w2vw2ns6q4pkx4cbu:
resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
engines: {node: '>=4'}
@@ -20862,7 +20880,7 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
- '@typescript-eslint/parser': 5.48.2_o2s6jvgtr2hafiobaqfgu6k2l4
+ '@typescript-eslint/parser': 5.48.2_eslint@8.33.0
array-includes: 3.1.6
array.prototype.flat: 1.3.1
array.prototype.flatmap: 1.3.1
@@ -20870,7 +20888,7 @@ packages:
doctrine: 2.1.0
eslint: 8.33.0
eslint-import-resolver-node: 0.3.7
- eslint-module-utils: 2.7.4_bg2inndrnsca3qrlavn5qkmhtq
+ eslint-module-utils: 2.7.4_b5qyyy7jj6vxczv7eweintx4wu
has: 1.0.3
is-core-module: 2.11.0
is-glob: 4.0.3
@@ -21244,6 +21262,18 @@ packages:
tslib: 2.4.1
dev: true
+ /event-stream/3.3.4:
+ resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==}
+ dependencies:
+ duplexer: 0.1.2
+ from: 0.1.7
+ map-stream: 0.1.0
+ pause-stream: 0.0.11
+ split: 0.3.3
+ stream-combiner: 0.0.4
+ through: 2.3.8
+ dev: false
+
/event-target-polyfill/0.0.3:
resolution: {integrity: sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ==}
dev: true
@@ -21789,7 +21819,6 @@ packages:
peerDependenciesMeta:
debug:
optional: true
- dev: true
/for-each/0.3.3:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
@@ -21976,7 +22005,6 @@ packages:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
- dev: true
/format/0.2.2:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
@@ -22008,6 +22036,10 @@ packages:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
+ /from/0.1.7:
+ resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}
+ dev: false
+
/fromentries/1.3.2:
resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==}
dev: false
@@ -24379,6 +24411,16 @@ packages:
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
dev: true
+ /joi/17.7.1:
+ resolution: {integrity: sha512-teoLhIvWE298R6AeJywcjR4sX2hHjB3/xJX4qPjg+gTg+c0mzUDsziYlqPmLomq9gVsfaMcgPaGc7VxtD/9StA==}
+ dependencies:
+ '@hapi/hoek': 9.3.0
+ '@hapi/topo': 5.1.0
+ '@sideway/address': 4.1.4
+ '@sideway/formula': 3.0.1
+ '@sideway/pinpoint': 2.0.0
+ dev: false
+
/jose/4.11.0:
resolution: {integrity: sha512-wLe+lJHeG8Xt6uEubS4x0LVjS/3kXXu9dGoj9BNnlhYq7Kts0Pbb2pvv5KiI0yaKH/eaiR0LUOBhOVo9ktd05A==}
dev: false
@@ -24764,6 +24806,11 @@ packages:
language-subtag-registry: 0.3.22
dev: true
+ /lazy-ass/1.6.0:
+ resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==}
+ engines: {node: '> 0.8'}
+ dev: false
+
/lazy-universal-dotenv/3.0.1:
resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==}
engines: {node: '>=6.0.0', npm: '>=6.0.0', yarn: '>=1.0.0'}
@@ -25309,6 +25356,10 @@ packages:
/map-or-similar/1.5.0:
resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==}
+ /map-stream/0.1.0:
+ resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==}
+ dev: false
+
/map-visit/1.0.0:
resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
engines: {node: '>=0.10.0'}
@@ -27458,6 +27509,12 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
+ /pause-stream/0.0.11:
+ resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==}
+ dependencies:
+ through: 2.3.8
+ dev: false
+
/peek-readable/5.0.0:
resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==}
engines: {node: '>=14.16'}
@@ -27936,6 +27993,14 @@ packages:
/prr/1.0.1:
resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
+ /ps-tree/1.2.0:
+ resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==}
+ engines: {node: '>= 0.10'}
+ hasBin: true
+ dependencies:
+ event-stream: 3.3.4
+ dev: false
+
/pseudomap/1.0.2:
resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
dev: true
@@ -28805,6 +28870,12 @@ packages:
tslib: 2.4.1
dev: true
+ /rxjs/7.8.0:
+ resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==}
+ dependencies:
+ tslib: 2.4.1
+ dev: false
+
/sade/1.8.1:
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
engines: {node: '>=6'}
@@ -29378,6 +29449,12 @@ packages:
dependencies:
extend-shallow: 3.0.2
+ /split/0.3.3:
+ resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==}
+ dependencies:
+ through: 2.3.8
+ dev: false
+
/split2/3.2.2:
resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
dependencies:
@@ -29436,6 +29513,23 @@ packages:
/stackframe/1.3.4:
resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
+ /start-server-and-test/1.15.4:
+ resolution: {integrity: sha512-ucQtp5+UCr0m4aHlY+aEV2JSYNTiMZKdSKK/bsIr6AlmwAWDYDnV7uGlWWEtWa7T4XvRI5cPYcPcQgeLqpz+Tg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ arg: 5.0.2
+ bluebird: 3.7.2
+ check-more-types: 2.24.0
+ debug: 4.3.4
+ execa: 5.1.1
+ lazy-ass: 1.6.0
+ ps-tree: 1.2.0
+ wait-on: 7.0.1_debug@4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
/state-toggle/1.0.3:
resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==}
@@ -29487,6 +29581,12 @@ packages:
engines: {node: '>= 0.10.0'}
dev: true
+ /stream-combiner/0.0.4:
+ resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==}
+ dependencies:
+ duplexer: 0.1.2
+ dev: false
+
/stream-to-array/2.3.0:
resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==}
dependencies:
@@ -30234,7 +30334,6 @@ packages:
/through/2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
- dev: true
/through2/4.0.2:
resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==}
@@ -31312,6 +31411,20 @@ packages:
xml-name-validator: 4.0.0
dev: true
+ /wait-on/7.0.1_debug@4.3.4:
+ resolution: {integrity: sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==}
+ engines: {node: '>=12.0.0'}
+ hasBin: true
+ dependencies:
+ axios: 0.27.2_debug@4.3.4
+ joi: 17.7.1
+ lodash: 4.17.21
+ minimist: 1.2.7
+ rxjs: 7.8.0
+ transitivePeerDependencies:
+ - debug
+ dev: false
+
/walker/1.0.8:
resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
dependencies: |
Hi @Dwlad90, I noticed that your in the diff of the lockfile the existing entries for I'm closing and locking this as turbo now supports this behavior for all of the major package managers. If anyone encounters an erroneous cache miss after a package was added please open a new one that includes a reproduction or at the very least the output of |
Describe the feature you'd like to request
With pnpm (and possibly other package managers too), every time a new workspace package is added, the lock file changes and the cache is busted for all tasks on all packages.
Many design systems manage every component as an individual package, both for versioning and for a better, more granular cache. In such repositories, adding a workspace package is a very common event, that needlessly makes the cache a lot less useful and defeats the purpose of a granular cache.
This is also not needed for correctness, since the cache of relevant tasks in dependent packages will be busted automatically either through changes/additions to
package.json
or thedependsOn
field inturbo.json
.Describe the solution you'd like
If the only changes detected in the lock file are related to workspace packages, the cache should not be invalidated.
Describe alternatives you've considered
I can't think of any alternative other than keeping things as they currently are with a very inefficient cache in such scenarios
The text was updated successfully, but these errors were encountered: