如何运行多个bower.json文件(在composer依赖项中)?

时间:2015-06-29 20:32:09

标签: composer-php bower

我有一个PHP项目,它使用composer来获取它的PHP依赖项,并为它的前端依赖项提供bower。所以基本上我有一个看起来像这样的目录结构(显然是一个简化版本):

/app
/bower_components
/public
/vendor
   /foo
      /bar
         /src
         bower.json
         composer.json
bower.json
composer.json
gulpfile.js

正如你所看到的,php依赖有一些自己的前端依赖,也是用bower管理的。但是,当我从我的应用程序的根目录运行bower install时,我的foo / bar依赖项中的bower文件将被忽略。

我不想提前在foo / bar中构建我的前端依赖项,只是使用gulp在我的应用程序中包含这些依赖项,因为foo / bar可能与我的应用程序(如jQuery或Bootstrap等)有重叠的依赖关系,我显然不想包括那两次。而且,当重叠依赖项存在版本冲突时,我也希望bower抛出错误,而不是必须找出困难的方法。

理想情况下,我的所有前端依赖项最终都会出现在我的root bower_components目录中,这些目录来自我的应用程序的bower.json,以及来自vendor / foo / bar / bower.json的目录。通过这种方式,我可以将所有这些编译成单个(或可能是几个).js和.css文件。

所以问题是,这可能吗? 我可以让bower查看子目录中的其他bower.json文件吗?或者是否有推荐的方法在bower运行之前自动合并多个bower.json文件?

我花了最后一小时在网上搜索这个问题的一个很好的解决方案,但我似乎无法想出任何东西。 (如果你知道关于这个主题的好博客文章或资源,请分享!)所有谷歌给我的是一些基本的凉亭教程,这在这里不是很有帮助。我是第一个遇到这个问题的人,还是我试图解决手头问题的方式有什么根本性的错误?

2 个答案:

答案 0 :(得分:1)

解决此问题的一种方法(以及Symfony CMF现在使用的方法)是为PHP依赖项创建bower包。这意味着您从捆绑包中创建了一个前端bower包,该包只包含带有依赖项的bower.json文件。

现在,在您的应用程序的bower.json文件中,您可以将这些“虚拟”凉亭包指定为要求并运行bower install。例如:

{
  "dependencies": {
    "php-foobar": "^1.3"
  }
}

答案 1 :(得分:0)

作曲家插件composer-extra-assetscomposer-assets-plugin允许将bower依赖项添加到composer.json。

composer-assets-plugin在纯php中实现,并将bower包转换为作曲家包。

composer-extra-assets调用" real"幕后的凉亭。它会自动安装(包括所需的nodejs),但是如果你没有在你的系统上安装它。

免责声明:我是作曲家额外资产的作者。