aryelgois / composer-front-end
一个使用 Composer 安装前端文件的实用工具
Requires
- php: ^7.0
This package is not auto-updated.
Last update: 2024-09-28 03:11:19 UTC
README
一个使用 Composer 安装前端文件的实用工具
简介
默认情况下,Composer 会将所有包文件安装到 vendor 目录下。
这对于 Composer 的主要用途来说是可以的:PHP 依赖管理工具。
但通常,PHP 项目会涉及其他语言,如前端(JavaScript、CSS 及其派生语言)。
您可以使用不同的包管理器来处理每种类型的文件,但这将是一项庞大的工作,我认为有一个统一的工具会更好。
这就是这个包的用武之地。您将使用 Composer 获取包含前端资产的存储库,然后该包会将它们符号链接到相应的目录。
安装
在您的项目内部运行以下命令
composer require aryelgois/composer-front-end
为了防止在全新安装期间 Composer 出现警告,请将包条目保留在 composer.json 中
require
指令的开头。
设置
将以下内容添加到您的 composer.json 中
{ "scripts": { "post-package-install": "aryelgois\\Composer\\FrontEnd::postPackageInstall", "front-end-refresh": "aryelgois\\Composer\\FrontEnd::refresh" }, }
现在,每次您安装带有前端文件的新包时,它们都将被符号链接。
如果您已经安装了一些前端包,请运行 composer front-end-refresh
以在每个 vendor 包中查找。
配置文件
这些 JSON 文件用于指定应符号链接哪些文件以及链接到何处。
您可以使用任何您喜欢的键作为 file_group
,但在 vendor 配置和您的项目中必须相同。
frontend.json
在 vendor 包中使用。
它包含一个映射,将 'file_group': ['file']
的文件映射到应符号链接到您的项目中的文件。
路径相对于 vendor 包目录。
不是
vendor/
,而是vendor/some/package/
示例
{ "css": "assets/superduperstyle.css", "js": [ "main.js", "src/myawesomescript.js" ] }
可以指定单个文件而不使用数组。
frontend-config.json
在您的项目中使用。
它可以包含以下键
directories
(必需)
一个映射,将 'file_group': 'directory'
用于包含来自其他包的符号链接。
路径相对于根目录。
packages
(可选)
一个映射,将 'package/name': files
用于要符号链接的文件。内容将与 frontend.json 中的内容相同。
当供应商不包含 frontend.json 时很有用。
它替换了 frontend.json
structure
(可选)
定义了每个文件_group 目录中符号链接的放置方式
- nest: 符号链接将在
vendor/package/
内部创建,在指定的目录中。这有助于处理同名文件。 - flat: 符号链接将直接放在定义的目录中。
structure_default
(可选)
定义了所有目录的默认结构。如果没有指定,则使用 nest
。
示例
{ "directories": { "css": "public/css", "js": "public/js" }, "structure": { "css": "flat", } }
public/
是文档根目录
注意
-
您仍然需要手动添加标记来在网页中使用符号链接的文件
<head> <link rel="stylesheet" href="/css/superduperstyle.css" /> </head> <body> <script src="/js/some/package/myawesomescript.js"></script> <script src="/js/some/package/main.js"></script> </head>
-
即使使用
nest
,所有符号链接都是扁平化的,即供应商包中的文件结构不会保留。
待办事项
- 为 frontend.json 添加路径展开功能