网站将使用:
>一个非常基本的PHP MVC框架(即MinimalMVC,但是我正在寻找一个通用的解决方案,所以框架可能会被忽略)
>作曲家管理PHP依赖
> SCSS的造型
> gulp来编译SCSS(用于dev build),并且还可以将JS和CSS输出进行缩小并连接起来,并且缩小图像等(仅用于部署构建)
> Travis CI为CI的东西
所以经过很多的思考和规划,并且考虑到我想出的各种目录结构的问题,我仍然找不到符合我的标准的东西:
gulp deploy应该能够生成一个部署文件夹,当它放在一个Apache服务器上的一个/ var / www / html /目录下时,应该是Just WorkTM
Note: MinimalMVC (and also CodeIgniter and other similar frameworks) require their
index.PHP
file in the root directory,with anapp
andsys
folder in the same directory
>由于PHP从来没有真正由构建过程处理,所以如果不必要的将src / ** / *.PHP文件复制到像build / ** / *这样的文件,PHP就可以避免.基本上,PHP部分不会保留gulp,我宁愿保持不受gulp的影响.
现在,我的想法有点混乱,因为我一直在想这个太多了,所以原谅我这个问题也有点乱,但基本的问题是,目录结构应该如何看?
一个主意:
. |-- composer.json |-- gulpfile.js |-- package.json |-- src | |-- app | | |-- controllers | | |-- models | | `-- <other_framework_stuff> | |-- assets | | |-- css | | |-- img | | |-- js | | `-- raw | | `-- scss | |-- index.PHP | `-- sys | `-- <framework_stuff> |-- test `-- vendor `-- <composer_stuff>@H_502_31@在这种结构中,开发人员只能在/ src目录下工作. SCSS从/ src / assets / raw / scss /编译到src / assets / css.这样,PHP仍然从构建过程中删除.当尝试生成部署目录时,src文件夹被复制,/ src / assets / raw /(所以no / build / assets / raw)目录不存在,并且生产/部署准备好的CSS,JS和映像在/ build / assets /中找到.
这个解决方案的第一个问题是奇怪的src / assets / raw目录,这似乎是丑陋的imho.第二个问题是/ vendor目录.这意味着PHP从外部src引用东西.所以如果/src/index.PHP正在处理它,它将包括../vendor/autoload.PHP.那么这意味着相同的代码被复制到/build/index.PHP.然后/ build /将不会运行,只需将其删除到/ var / www / html,除非供应商在/ var / www这似乎很奇怪.
有很多的,我想其他的东西,但所有的看起来丑陋某种方式或其他.为了避免这个问题太久,我会停在这里.
请帮助.我应该把供应商放在/ src /在composer.json中使用vendor-dir吗? (我知道,eww.)我应该使用什么样的目录结构?
解决方法
就个人而言,这种目录结构对我来说是正确的.
. |-- composer.json |-- gulpfile.js |-- package.json |-- changelog.md |-- readme.md |-- /src (This is the API code that *I'm* responsible for,and that I *own*.). | |-- /app | | |-- /controllers | | |-- /models | | `-- <other_framework_stuff> | /public (Keeping this outside of the src dir,means that you can give this to your front-end devs without needing to have the entire codebase). | | |-- /styles | | |-- /images | | |-- /js | /config (Put all configuration files outside of the src scope,so you can keep it outside of source control) | /build (CI build related configuration) | | |--PHPcs.xml | | |--PHPdocx.xml |-- /tests (separating out your tests in this way can help you run tests separately,more easily) | | |--acceptance | | |--integration | | |--unit |-- /vendor (Depenedencies installed via Composer)@H_502_31@真的,没有社区正确回答你的问题.正确的答案是针对您的业务,您所在的团队以及项目本身.
我不会把/ vendor目录放在你的/ src目录下,因为你不拥有它.您对项目依赖关系中代码的更改不负任何责任,因此它应该保留在您自己的范围之外.
随着PSR-4自动加载,您的目录结构确实并不重要,可以随时更改,并且不会对您的代码造成任何影响.所以,实验,看看什么感觉适合你.