你的功能请求是否与问题相关?请描述
在我们的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
目前是如何工作的。
1条答案
按热度按时间o75abkj41#
感谢@langri-sha指出这个问题。
在CI环境中,我遇到了一个权限问题,其中名为
CACHE_DIR
的变量被设置为storybook build
尝试在其中创建文件夹的目录,导致作业失败。实际上,在这种情况下可能需要这个功能请求。