php - 如何将composer的vendor文件夹中的CSS和JS文件复制到public?

标签 php css laravel composer-php phalcon

我刚刚开始学习几个 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 。 这可能是一种更清洁的方法。

Documentation - Packagist

您可能需要从 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/

相关文章:

PHP通过内部php函数上传单按钮文件

javascript - WebSocket JS 的自定义 header

php - Composer 创建本地包

css - CSS 中的折叠边距

php - Laravel:内部连接 ​​QueryException

php - 使用PHP制作youtube播放列表。我出错了。我不确定出了什么问题

css - 如何隐藏文本而不是其中的图像

html - css:如何使元素不重叠+自动将它们放在相关位置

php - 在 AWS 上找不到 Laravel 5 类 'Collective\Html\HtmlServiceProvider'

php - Laravel 4 中的 Cron 作业