storybook 为缓存目录添加配置支持

2lpgd968  于 3个月前  发布在  其他
关注(0)|答案(1)|浏览(24)

你的功能请求是否与问题相关?请描述

在我们的CI环境中,我们为Yarn依赖项使用专用缓存,而无法并行保存/恢复多个缓存并运行构建步骤,同时包括Storybook的缓存,因为它正在争相写入 node_modules/ 。还有权限方面的复合问题。

描述你希望实现的解决方案

现在大多数包都使用了 find-cache-dir ,这允许配置 CACHE_DIR 。这非常有用,因为它允许我们将读/写操作单独从文件树中移到Yarn之外,以加快速度。用 find-cache-dir 替换以下内容将会非常有用:
storybook/lib/core-common/src/utils/resolve-path-in-sb-cache.ts
db4901a 中的第4行到第25行
| | /** |
| | * 在Storybook缓存目录中获取具有输入名称的文件或目录的路径: |
| | * - 在Node.js项目或npm包中为node_modules/.cache/storybook/{directoryName} |
| | * 否则为.cache/storybook/{directoryName} |
| | * |
| | * @param fileOrDirectoryName {string} 文件或目录的名称 |
| | * @return {string} 文件或目录的绝对路径 |
| | */ |
| | exportfunctionresolvePathInStorybookCache(fileOrDirectoryName: string): string{ |
| | constcwd=process.cwd(); |
| | constprojectDir=pkgDir.sync(cwd); |
| | |
| | letcacheDirectory; |
| | |
| | if(!projectDir){ |
| | cacheDirectory=path.resolve(cwd,'.cache/storybook'); |
| | }else{ |
| | cacheDirectory=path.resolve(projectDir,'node_modules/.cache/storybook'); |
| | } |
| | |
| | returnpath.join(cacheDirectory,fileOrDirectoryName); |
| | } |

你考虑过的其他替代方案是什么?

或者,如果被接受的话,仅仅引入对 CACHE_DIR 的支持也是一种可行的解决方案。

你是否能够协助将这个功能变为现实?

是的,如果有人能指出什么是可以接受的,无论是只是在 CACHE_DIR 中引入还是使用类似 find-cache-dir 的东西,我都会想要实现这个功能。Storybook列在 adopters https://github.com/avajs/find-cache-dir#adopters 部分中,所以可能有一些历史原因导致 find-cache-dir 被放弃。

附加上下文

这是 find-cache-dir 目前是如何工作的。

o75abkj4

o75abkj41#

感谢@langri-sha指出这个问题。
在CI环境中,我遇到了一个权限问题,其中名为CACHE_DIR的变量被设置为storybook build尝试在其中创建文件夹的目录,导致作业失败。
实际上,在这种情况下可能需要这个功能请求。

相关问题