我有一个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文件?
我花了最后一小时在网上搜索这个问题的一个很好的解决方案,但我似乎无法想出任何东西。 (如果你知道关于这个主题的好博客文章或资源,请分享!)所有谷歌给我的是一些基本的凉亭教程,这在这里不是很有帮助。我是第一个遇到这个问题的人,还是我试图解决手头问题的方式有什么根本性的错误?
答案 0 :(得分:1)
解决此问题的一种方法(以及Symfony CMF现在使用的方法)是为PHP依赖项创建bower包。这意味着您从捆绑包中创建了一个前端bower包,该包只包含带有依赖项的bower.json
文件。
现在,在您的应用程序的bower.json
文件中,您可以将这些“虚拟”凉亭包指定为要求并运行bower install
。例如:
{
"dependencies": {
"php-foobar": "^1.3"
}
}
答案 1 :(得分:0)
作曲家插件composer-extra-assets和composer-assets-plugin允许将bower依赖项添加到composer.json。
composer-assets-plugin在纯php中实现,并将bower包转换为作曲家包。
composer-extra-assets调用" real"幕后的凉亭。它会自动安装(包括所需的nodejs),但是如果你没有在你的系统上安装它。
免责声明:我是作曲家额外资产的作者。