我刚刚开始学习几个 PHP 框架。我试过的例子都是用composer
,我以前没有用过,所以我还不是很清楚。
我在 composer.json
中指定了一些 JS 和 CSS 库然后跑了composer install
.
现在这些库被添加到 vendor
文件夹。
现在我应该如何使用这些文件夹中的 JS 和 CSS 文件,例如 bootstrap/dist/css/bootstrap.min.css
?
我试过的例子要么在 public/css
中有一个副本文件夹或使用远程链接,如 <link href="//netdna.bootstrapcdn.com/bootswatch/2.3.1/united/bootstrap.min.css" rel="stylesheet">
在volt
-文件。
出于某种原因,我不喜欢在我的应用程序中使用此类远程链接(我担心有一天它们会“关闭”)。
但另一个选项也不是很漂亮,我认为,因为我仍然必须选择要从 vendor
复制的正确文件。至 public
.
难道没有一种“自动”的方式来做到这一点吗?或者可能通过将它指定到 Controller 中,然后将文件复制到 public
中?
最佳答案
编写 Composer 是为了获取 PHP 依赖项。 它不能很好地与其他网络资源(如 CSS 或 JS 文件)一起播放。
Composer Assets 插件
为了解决获取 Assets 的问题,François Pluchino (fxp) 开发了 Composer Assets 插件。它为 Composer 提供了一个 NPM/Bower 依赖管理器。它是这些依赖管理器的桥梁,并将把这些东西提取到供应商文件夹中。
请记住,您始终可以直接使用 Bower 或 NPM。 使用 composer.json 中定义的 Composer 获取 PHP 依赖项。 使用 bower.json 中定义的 Bower 获取您的 Assets 。 这可能是一种更清洁的方法。
您可能需要从 CLI 获取它:composer require fxp/composer-asset-plugin
例如,要获取 Assets “Twitter Bootstrap”和“Jquery”:
{
"require": {
"bower-asset/bootstrap": "dev-master",
"bower-asset/jquery-2.1.0": "2.1.0"
}
}
一些框架为 Assets 提供自定义处理程序,主要是为了支持它们各自的文件夹布局,并将内容从供应商文件夹复制到正确的位置。不知道Phalcon有没有什么东西可以拿 Assets 。
Isn't there an 'automatic' way to do this ? Or maybe by specifying it into a controller, which then copies the files it into public ?
将 Assets 从 vendor 文件夹复制到应用程序布局中的正确位置是另一回事。
没有自动执行此操作的方法。你必须自己提供机制。
例如,您可以将安装路径从 vendor 更改为 public/assets
或其他内容,
见https://github.com/francoispluchino/composer-asset-plugin/blob/master/Resources/doc/index.md#define-a-custom-directory-for-the-assets-installation
插件不会到处复制东西。
Bower + Grunt(简介:使用 Bower 获取 Assets ,使用 Grunt 复制内容)
最接近“指定 Controller ”的是设置一个 Grunt 任务,以仅将使用 Bower 获取的相关内容从 web/assets/vendor
复制到 web/assets/app
文件夹。
换句话说:即使像 Bower 这样的 JS 包管理器也不提供主要 API 文件的自动复制。 Bower 会将最新的 jQuery 版本提取到定义的供应商文件夹中,但它不会自动将 jquery.min.js
复制到 web/assets/js/jquery.min.js
。您需要在其之上执行一项任务。
关于php - 如何将composer的vendor文件夹中的CSS和JS文件复制到public?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34387813/