Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将composer供应商文件夹中的CSS和JS文件复制到公共文件夹?_Php_Css_Laravel_Composer Php_Phalcon - Fatal编程技术网

Php 如何将composer供应商文件夹中的CSS和JS文件复制到公共文件夹?

Php 如何将composer供应商文件夹中的CSS和JS文件复制到公共文件夹?,php,css,laravel,composer-php,phalcon,Php,Css,Laravel,Composer Php,Phalcon,我刚刚开始学习几个PHP框架。我试过的例子都使用了composer,我以前没有使用过,所以我还不太清楚 我在composer.json中指定了一些JS和CSS库,并运行了composer安装。 现在,这些库被添加到供应商文件夹中 现在我应该如何使用这些文件夹中的JS和CSS文件,例如bootstrap/dist/CSS/bootstrap.min.CSS? 我尝试的示例要么在public/css文件夹中有一个副本,要么在volt-文件中使用远程链接 出于某些原因,我不喜欢在我的应用程序中使用这些

我刚刚开始学习几个PHP框架。我试过的例子都使用了
composer
,我以前没有使用过,所以我还不太清楚

我在
composer.json
中指定了一些JS和CSS库,并运行了
composer安装
。 现在,这些库被添加到
供应商
文件夹中

现在我应该如何使用这些文件夹中的JS和CSS文件,例如
bootstrap/dist/CSS/bootstrap.min.CSS
? 我尝试的示例要么在
public/css
文件夹中有一个副本,要么在
volt
-文件中使用远程链接

出于某些原因,我不喜欢在我的应用程序中使用这些远程链接(我担心有一天它们可能会“关闭”)。 但是另一个选择也不是很好,我认为,因为我仍然必须选择正确的文件从
供应商
复制到
公共


难道没有一种“自动”的方法可以做到这一点吗?或者通过将其指定到控制器中,然后控制器将其复制到
public

编写Composer以获取PHP依赖项。 它不能很好地与其他web资产(如CSS或JS文件)配合使用

作曲家资产插件

为了解决获取资产的问题,François Pluchino(fxp)开发了一个Composer资产插件。它为Composer提供了一个NPM/Bower依赖关系管理器。这是连接这些依赖关系管理器的桥梁,它将把这些东西放到供应商文件夹中

请记住,您始终可以直接使用Bower或NPM。 使用Composer.json中定义的Composer获取PHP依赖项。 使用Bower.json中定义的Bower获取资产。 这可能是一个更干净的方法

-

您可能需要从CLI获得它:
composer require fxp/composer资产插件

例如,要获取资产“Twitters Bootstrap”和“Jquery”:

有些框架为资产提供自定义处理程序,主要是为了支持它们各自的文件夹布局,并将内容从供应商文件夹复制到正确的位置。我不知道Phalcon是否有什么东西可以获取资产

难道没有一种“自动”的方法可以做到这一点吗?或者将其指定到控制器中,然后控制器将文件复制到公共文件中

将资产从供应商文件夹复制到应用程序布局中的正确位置是另一回事

没有自动完成这项工作的方法。你必须自己提供这个机制

例如,您可以将安装路径从供应商更改为
public/assets
或其他内容, 看

插件不会复制周围的东西

Bower+Grunt(简介:使用Bower获取资产,使用Grunt复制内容)

最接近“指定控制器”的方法是设置一个Grunt任务,仅将Bower从
web/assets/vendor
文件夹中获取的相关资料复制到
web/assets/app
文件夹


换句话说:即使像Bower这样的JS包管理器也不能自动复制主API文件。Bower会将最新的jQuery版本提取到定义的供应商文件夹中,但不会自动将
jQuery.min.js
复制到
web/assets/js/jQuery.min.js
中。您需要一个任务。

谢谢,有一件事我还不明白:既然所有正确的资产似乎都是由composer下载/安装的,为什么我需要一个单独的资产依赖性管理器呢。或者您的意思是,可能一些JS文件依赖于其他包,例如需要“jQuery”的“jQueryUI”?这个插件是否也会将它们下载到“供应商”中?独立的依赖关系管理器拥有干净的配置文件的优势。您不必向composer.json添加前缀配置内容,就可以让桥正常工作。分开配置,你知道什么去哪里。PHP composer.json资产bower…--是的,这些资产也可能具有依赖性。。换句话说,在中可能值得一看Bower for JS和CSS资产是的,Composer asset插件会将它们下载到供应商文件夹,除非您自己定义自定义目录或复制/移动文件。我在答案中添加了Bower+Grunt组合。耶,耶,如此完整的回答,我在同一天调查的结果得出了相同的结论,难怪您是最好的贡献者之一,您的回复应该得到一个用户至少两次投票——
{
    "require": {
        "bower-asset/bootstrap":     "dev-master",
        "bower-asset/jquery-2.1.0":  "2.1.0"
    }
}