当我刚开始制作网站时,我的文件散落在 /var/www 目录的各处。随着我的成熟和向专业设计师学习,我意识到在一些子目录中构建,例如 css、fonts 和 images,会更明智。最终我明白,标准化我的文件结构使我可以顺利地在项目之间切换,而无需重新熟悉新的布局。
Python 和 C++ 项目、音乐项目、电影作品,甚至电子项目也是如此。事实上,几乎任何创造性的计算机工作通常都涉及将多种类型的文件组织到目录中。
如果您经常处理需要相同目录集的项目,这会转化为大量的设置时间。您最终一遍又一遍地创建相同的旧空目录树,而您真正想做的只是开始您的工作。
解决这个问题并非火箭科学。您可以创建一个不可变的主模板目录,然后在每次开始新项目时复制它。您可以为 GNU makefile 或 Bash 脚本设置一些命令别名。
有很多选择,其中很多都相当明显。然而,在电影行业工作时,我发现很少有选择能同时满足非技术用户和技术用户。答案是什么?Planter。
使用 Planter
Planter 是一个用 Python 3 编写的简单应用程序。其唯一目的是根据用户定义的模板创建空目录结构。它使用简单的 GUI,以便不熟悉 Unix shell 的用户可以轻松创建项目目录,但它也为喜欢 shell 的用户提供了命令。

opensource.com
它的使用方法和看起来一样简单。在“项目名称”字段中输入名称,以及要创建该目录的位置,然后单击“创建”按钮。这将在您指定的任何位置的目录名下创建一个默认目录树。
在 shell 中,过程类似,但更灵活
$ planter
不带参数的 planter 命令会在您当前位置的名为 Directory 的文件夹中创建默认目录树。
$ planter --destination ~/projects foo
通过向命令提供更多信息,您可以例如在您的主目录中的 projects 文件夹下创建一个名为 foo 的默认目录树。
组织共享资产
在电影制片厂中,目录结构可能非常复杂。通常,顶层目录是电影的标题或制作代号。其下是工作室有合同制作的每个场景的目录。在每个场景的目录中,是各个镜头的目录。在每个镜头中,都有用于多种类型资产的目录:底板、网格、纹理、动作捕捉数据、激光雷达 数据转储、参考照片、故事板以及不同艺术家为了进行项目工作所需的任何其他内容。
许多类型的数据跨越多个镜头,因此将哥斯拉的皮肤纹理放在镜头 001 中是没有意义的,因为它将被电影中的每个其他镜头所需要。但它仍然需要可访问,否则哥斯拉将无法为流水线中的每个人正确渲染。
因此,工作室内部的目录结构通常充满了从一个位置到另一个位置的符号链接(或“别名”)。在 Planter 中,您可以为每个新项目定义一个根共享资产位置。默认情况下,此位置设置为 /usr/local/share,但可以在 GUI 中的“共享位置”字段中或使用 --shared 标志进行自定义
$ planter --destination ~/projects --shared /movie/assets foo
自定义模板
Planter 最初是为视觉特效工作室开发的,那里有一个项目树的标准模板,因此始终只有一种项目类型:需要特效的电影。然而,当独立艺术家开始使用 Planter 时,很明显它不仅仅是 VFX 公司的一个有用的组织工具。
作为回应,Planter 添加了一个可自定义的模板系统,允许用户为各种项目类型创建标准化的目录树。例如,电影制作可能需要纹理、网格和底板,但摇滚乐队不需要任何这些东西。
模板系统由 YAML 驱动,YAML 是一种简单直观的文本格式。模板的顶层是项目类型,它可以是任何对用户有意义的术语。音乐家可以定义一种名为 rock 的项目类型和另一种名为 orchestral 的项目类型,或者多媒体艺术家可以定义一种项目类型 music 和另一种 movies。这是一个任意术语。
项目类型下方是 Planter 应该为该项目创建的目标列表。有四种目标类型:目录、symlink 和 symdir 关键字用于创建指向文件或目录的符号链接,以及关键字 copyfile 用于复制文件。
- mkdir: 在项目文件夹中创建目录
- symlink: 从当前存在的文件位置链接到 Planter 在每个新项目中创建的新文件。要将新文件链接到共享资产中的位置,请使用宏 %COMMON%
- symdir: 从当前存在的目录位置链接到 Planter 将创建的新文件夹。要将新文件夹链接到共享资产中的位置,请使用宏 %COMMON%
- copyfile: 将现有文件复制到 Planter 将创建的新位置
还有两个全局设置,用作所有 Planter 操作的默认值
- COMMON: 默认共享资产根目录
- NAME: 未另行指定名称时,新目录的默认名称
必须存在 default 模板,但可以定义任意数量的项目类型。
这是一个包含自定义全局变量设置和三个已定义项目的模板文件示例
var:
- COMMON: "/nfsdrive/artkit"
- NAME: "Project"
default:
- mkdir: font
- mkdir: graphic
- copyfile: /nfsdrive/everylicense/cc/cc-by-sa.md:LICENSE
web:
- mkdir: css
- mkdir: font
- mkdir: img
music:
- symdir: %COMMON%/soundfont:soundfont
- symdir: %COMMON%/bank:bank
- mkdir: midi
- mkdir: audio
- mkdir: data
- mkdir: bounce
使用这些模板中的任何一个
$ planter --type web --destination ~/public_html mysite
使用 Planter 的副作用
用户报告的使用 Planter 的好处之一是通过重复实现的更好的组织。
大多数艺术家,无论他们从事图形、音乐、网页设计还是代码工作,都从一个空目录开始,并在工作时构建结构。您开始一个项目,目的是做一些快速而小的事情,“只是为了好玩”,但三周后您意识到您已经有了五个不同版本的工作正在进行中,从本地字体目录中提取的字体,从“下载”文件夹中的一些画笔,以及谁知道还有什么。更糟糕的是,您上个月做的项目,虽然基本上是相同的工作流程,但却具有完全不同的目录结构。您不可能将这些项目从创建它们的机器上移动,因为您有数十个未知的依赖项,例如您的字体和画笔,因此您只需导出最终草稿,并希望您永远不需要再次使用源文件。
充其量,这令人沮丧,但最坏的情况是,它会危及您在旨在让您的生活更美好的平台上工作的完整性。
无论出于何种原因,出售给消费者的计算机似乎都预装了相同的一组空文件夹:“文档”、“音乐”、“图片”和“电影”。是时候承认我们大多数人的生活不适合这四个类别了。创建您自己的类别,并以适当的组织开始每个项目,以便您的工作可以成长和蓬勃发展。
评论已关闭。