【问题标题】:How to run multiple bower.json files (inside composer dependencies)?如何运行多个 bower.json 文件(在 composer 依赖项中)?
【发布时间】:2015-06-29 20:32:09
【问题描述】:

我有一个 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 在存在重叠依赖项的版本冲突时抛出错误,而不是不得不找出困难的方法。

理想情况下,我的所有前端依赖项最终都将位于我的 bower_components 根目录中,包括来自我应用程序的 bower.json 以及来自 vendor/foo/bar/bower.json 的那些。这样,我可以让 gulp 将所有这些编译成一个(或可能几个).js 和 .css 文件。

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

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

【问题讨论】:

    标签: composer-php bower


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗯,很有趣,我一定会进一步调查!我需要另一个 git repo 有点麻烦,如果它只包含一个文件,但我可以忍受。我想我不能按原样使用我的 PHP repo 的 bower 文件,因为 bower 会将整个 repo 克隆到我的 bower_components 中,还是我弄错了? (制作真正的凉亭包不是一种选择,因为它们必须保持私密)
    • @Pevara bower 总是克隆完整的存储库,然后删除 bower.json 文件的 ignore 设置中的任何内容。因此,如果您执行"ignore": ["*"],所有文件都将被忽略,您可以将 PHP 存储库用作 bower 包(参见 github.com/symfony-cmf/TreeBrowserBundle/blob/master/bower.json 示例)
    • 太好了。我明天先试试这个。贝当克特!
    【解决方案2】:

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

    composer-assets-plugin 用纯 php 实现,将 bower 包转换为 composer 包。

    composer-extra-assets 在幕后调用“真正的”凉亭。如果您的系统上没有它,它会自动安装(包括所需的 nodejs)。

    免责声明:我是 composer-extra-assets 的作者。

    【讨论】:

      猜你喜欢
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 2020-09-03
      • 2015-01-24
      • 2013-02-08
      • 2011-11-24
      • 2015-10-18
      相关资源
      最近更新 更多