使用Composer、NPM或Bower来包含库文件

3

最近我开始学习Composer、NPM和Bower。我知道它们之间有很多重叠的功能,所以我想知道我的做法是否正确?如果不正确,我该怎么做呢?

通常我会通过设置Composer来加载PHP库和依赖项来启动我的PHP项目。然后我使用NPM来安装Gulp和我使用的所有gulp插件。最后,我使用Bower来获取JS和CSS库。

大部分这些库都可以从GitHub中加载,因此理论上我可以使用Composer来安装我的JS/CSS库或者使用Bower来加载我的PHP库。我相信Composer的自动加载功能,所以我的问题是我是否应该放弃Bower?

目前,在部署时,我会检出我的存储库并调用npm install来安装Gulp等。在我的package.json文件中,我使用"scripts": {"install": "gulp install"}来启动我的gulpfile.js中的install任务。这会加载gulp-composergulp-bower插件,从而启动Composer和Bower的安装。


2
你可以使用composer-asset-plugin来替换npm/bower。 - Tomas Votruba
@TomášVotruba 这是一个有趣的选项。我在一个测试项目中尝试了它,但我无法正确安装 Gulp。我确实使用 Gulp 自动安装 Composer 和 Bower 的依赖,但我还用它来处理许多其他东西,如图像处理等,所以 Gulp 是必须的。 - Kevin Nagurski
1个回答

2
他们大多数都做的事情差不多,区别在于他们的默认包列表(NPM仅限NodeJS,Composer主要是PHP,Bower纯js/css等)和它们所编写的语言。
然而,他们都有一个限制:它们只能在一个位置安装软件包。这意味着你不能在vendor/中安装some/php-framework和在web/中安装my-css-framework
位置非常重要:通常希望PHP代码/NodeJS libs存在于公共根目录之外,但资产应该存在于公共根目录内。
我认为,如果可以的话,最好使用每个依赖管理器设计用于的语言(例如,Composer还会执行一些PHP特定的操作,如自动加载,而NPM会执行一些NodeJS特定的操作)。

1
你也不想公开bower_components。这就是为什么我们使用gulp或其他工具从该目录中提取组件,可能会压缩和合并它们,然后将它们移动到公共目录的原因。位置并不重要。他已经选择了Composer,因为它可以自动加载,但你确实提出了一个关于NPM的好问题——有时npm install做的不仅仅是下载一些文件,它还编译特定于平台的库。据我所知,你无法避免使用npm。 - mpen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接