使用 public 资产为 Composer 创建 PHP 库
Creating a PHP library for Composer with public assets
我正在为客户创建模板库。该库的目标是为公司拥有的所有网站提供标准化 shell。其他开发人员应该能够使用 Composer 导入库并使用几行代码创建基本模板,例如:
$Template = new Template;
$Template->setContent('Hello world!');
$Template->render();
这将呈现标准化 shell 内的内容。这是一个简化的示例,该库提供了更多的功能,例如标准化滑块、菜单等...
这个库依赖于Twig,但也依赖于一堆前端资源;比如自定义图片、javascripts、css 和第 3 方的东西,比如 Jquery 和 Bootstrap CSS。这些资产存储在 /assets/ 文件夹中。
使用 Composer 安装库后,所有内容都存储在网站根目录中的 /vendors/ 文件夹中。但是 /assets/ 文件夹需要位于 /public_html/ 才能访问。
目前的解决方案:将/assets/ 文件夹复制到/public_html/。但我确信有更多的存储库取决于前端资产,使这些资产在 /public_html/?
中可用的最常见方法是什么
我想到的关闭的东西是 Symfony2 Bundle 系统。您定义的每个包都必须在 AppKernel 中注册。如果捆绑包包含将链接或复制到 /web/bundles/short_bundle_name/ 文件夹下的资产。
因此,为了能够跟进依赖项的资产,您需要某种注册表机制,这样您就可以注册哪些库具有需要复制/链接到 public_html 文件夹下的资产。
还可以考虑使用 assetic 来处理具有缓存破坏功能的普通资产(合并、重写和其他过滤器)。
您可以将 Composer
用于后端依赖项,将 Bower
用于前端,将 Grunt
用于移动和处理文件。
使用 Composer
将以下内容添加到 composer.json
"scripts": {
"post-install-cmd": [
"bower install",
"grunt"
],
"post-update-cmd": [
"bower install",
"grunt"
]
}
然后你有基本的 Bower
脚本 bowser.json
{
"name": "my/project",
"dependencies": {
"jquery": "*",
"bootstrap": "*"
}
}
然后你有了基本的 Grunt
脚本 gruntfile.js
,你可以像这样使用它 (https://github.com/gruntjs/grunt-contrib-copy)。
copy: {
main: {
expand: true,
src: 'src/*',
dest: 'dest/',
},
},
现在您只需 运行 您的作曲家命令即可安装或更新所有文件。
注意:如果您的所有资产都在 Composer
中,则无需使用 Bower
我正在为客户创建模板库。该库的目标是为公司拥有的所有网站提供标准化 shell。其他开发人员应该能够使用 Composer 导入库并使用几行代码创建基本模板,例如:
$Template = new Template;
$Template->setContent('Hello world!');
$Template->render();
这将呈现标准化 shell 内的内容。这是一个简化的示例,该库提供了更多的功能,例如标准化滑块、菜单等...
这个库依赖于Twig,但也依赖于一堆前端资源;比如自定义图片、javascripts、css 和第 3 方的东西,比如 Jquery 和 Bootstrap CSS。这些资产存储在 /assets/ 文件夹中。
使用 Composer 安装库后,所有内容都存储在网站根目录中的 /vendors/ 文件夹中。但是 /assets/ 文件夹需要位于 /public_html/ 才能访问。
目前的解决方案:将/assets/ 文件夹复制到/public_html/。但我确信有更多的存储库取决于前端资产,使这些资产在 /public_html/?
中可用的最常见方法是什么我想到的关闭的东西是 Symfony2 Bundle 系统。您定义的每个包都必须在 AppKernel 中注册。如果捆绑包包含将链接或复制到 /web/bundles/short_bundle_name/ 文件夹下的资产。
因此,为了能够跟进依赖项的资产,您需要某种注册表机制,这样您就可以注册哪些库具有需要复制/链接到 public_html 文件夹下的资产。
还可以考虑使用 assetic 来处理具有缓存破坏功能的普通资产(合并、重写和其他过滤器)。
您可以将 Composer
用于后端依赖项,将 Bower
用于前端,将 Grunt
用于移动和处理文件。
使用 Composer
将以下内容添加到 composer.json
"scripts": {
"post-install-cmd": [
"bower install",
"grunt"
],
"post-update-cmd": [
"bower install",
"grunt"
]
}
然后你有基本的 Bower
脚本 bowser.json
{
"name": "my/project",
"dependencies": {
"jquery": "*",
"bootstrap": "*"
}
}
然后你有了基本的 Grunt
脚本 gruntfile.js
,你可以像这样使用它 (https://github.com/gruntjs/grunt-contrib-copy)。
copy: {
main: {
expand: true,
src: 'src/*',
dest: 'dest/',
},
},
现在您只需 运行 您的作曲家命令即可安装或更新所有文件。
注意:如果您的所有资产都在 Composer
Bower